1
1
const nock = require ( 'nock' ) ;
2
- const { expect } = require ( 'chai' ) ;
2
+ const { expect } = require ( 'chai' ) . use ( require ( 'chai-as-promised' ) ) ;
3
3
4
4
const { x5cMultiple } = require ( './keys' ) ;
5
5
const { JwksClient } = require ( '../src/JwksClient' ) ;
@@ -361,13 +361,13 @@ describe('JwksClient', () => {
361
361
expect ( err . name ) . to . equal ( 'JwksError' ) ;
362
362
expect ( err . message ) . to . equal (
363
363
'The JWKS endpoint did not contain any signing keys'
364
- ) ;
364
+ ) ;
365
365
}
366
366
} ) ;
367
367
368
368
it ( 'should handle errors passed from the interceptor' , async ( ) => {
369
369
const error = new Error ( 'interceptor error' ) ;
370
- const client = new JwksClient ( {
370
+ const client = new JwksClient ( {
371
371
jwksUri : 'http://invalidUri' ,
372
372
getKeysInterceptor : ( ) => { throw error ; }
373
373
} ) ;
@@ -388,7 +388,7 @@ describe('JwksClient', () => {
388
388
nock ( jwksHost )
389
389
. get ( '/.well-known/jwks.json' )
390
390
. reply ( 200 , x5cMultiple ) ;
391
-
391
+
392
392
const client = new JwksClient ( {
393
393
jwksUri : `${ jwksHost } /.well-known/jwks.json`
394
394
} ) ;
@@ -404,11 +404,11 @@ describe('JwksClient', () => {
404
404
nock ( jwksHost )
405
405
. get ( '/.well-known/jwks.json' )
406
406
. reply ( 200 , x5cMultiple ) ;
407
-
407
+
408
408
const client = new JwksClient ( {
409
409
jwksUri : `${ jwksHost } /.well-known/jwks.json`
410
410
} ) ;
411
-
411
+
412
412
client . getSigningKey ( '123' , ( err ) => {
413
413
expect ( err ) . not . to . be . null ;
414
414
expect ( err . name ) . to . equal ( 'SigningKeyNotFoundError' ) ;
@@ -454,5 +454,22 @@ describe('JwksClient', () => {
454
454
expect ( err . message ) . to . equal ( 'Http Error 500' ) ;
455
455
}
456
456
} ) ;
457
+
458
+ it ( 'should not cache errors' , async ( ) => {
459
+ nock ( jwksHost )
460
+ . get ( '/.well-known/jwks.json' )
461
+ . reply ( 500 ) ;
462
+ nock ( jwksHost )
463
+ . get ( '/.well-known/jwks.json' )
464
+ . reply ( 200 , x5cMultiple ) ;
465
+
466
+ const client = new JwksClient ( {
467
+ jwksUri : `${ jwksHost } /.well-known/jwks.json`
468
+ } ) ;
469
+
470
+ const kid = x5cMultiple . keys [ 0 ] . kid ;
471
+ await expect ( client . getSigningKey ( kid ) ) . to . eventually . be . rejectedWith ( 'Http Error 500' ) ;
472
+ await expect ( client . getSigningKey ( kid ) ) . to . eventually . have . property ( 'kid' , kid ) ;
473
+ } ) ;
457
474
} ) ;
458
475
} ) ;
0 commit comments