@@ -4,6 +4,7 @@ const assert = require('assert');
4
4
const urlBase64 = require ( 'urlsafe-base64' ) ;
5
5
const webPush = require ( '../src/index' ) ;
6
6
const crypto = require ( 'crypto' ) ;
7
+ const jws = require ( 'jws' ) ;
7
8
8
9
suite ( 'Test Generate Request Details' , function ( ) {
9
10
test ( 'is defined' , function ( ) {
@@ -243,4 +244,31 @@ suite('Test Generate Request Details', function() {
243
244
assert . equal ( details . headers . Topic , extraOptions . headers . Topic ) ;
244
245
assert . equal ( details . headers . Urgency , extraOptions . headers . Urgency ) ;
245
246
} ) ;
247
+
248
+ test ( 'Audience contains port' , function ( ) {
249
+ const subscription = {
250
+ endpoint : 'http://example.com:4242/life-universe-and-everything'
251
+ } ;
252
+
253
+ const extraOptions = {
254
+ vapidDetails : {
255
+ subject :
'mailto:[email protected] ' ,
256
+ publicKey : vapidKeys . publicKey ,
257
+ privateKey : vapidKeys . privateKey
258
+ }
259
+ } ;
260
+
261
+ const requestDetails = webPush . generateRequestDetails ( subscription , null , extraOptions ) ;
262
+ const authHeader = requestDetails . headers . Authorization ;
263
+
264
+ // Get the Encoded JWT Token from the Authorization Header
265
+ // and decoded it using `jws.decode`
266
+ // to get the value of audience in jwt payload
267
+ const jwtContents = authHeader . match ( / W e b P u s h \s ( .* ) / ) [ 1 ] ;
268
+ const decodedContents = jws . decode ( jwtContents ) ;
269
+ const audience = decodedContents . payload . aud ;
270
+
271
+ assert . ok ( audience , 'Audience exists' ) ;
272
+ assert . equal ( audience , 'http://example.com:4242' , 'Audience contains expected value with port' ) ;
273
+ } ) ;
246
274
} ) ;
0 commit comments