UNPKG

1.54 kBJavaScriptView Raw
1import nock from 'nock';
2import { expect } from 'chai';
3
4import { x5cSingle } from './keys';
5import { JwksClient } from '../src/JwksClient';
6
7describe('JwksClient (cache)', () => {
8 const jwksHost = 'http://my-authz-server';
9
10 beforeEach(() => {
11 nock.cleanAll();
12 });
13
14 describe('#getSigningKey', () => {
15 describe('should cache requests per kid', () => {
16 let client;
17
18 before((done) => {
19 nock(jwksHost)
20 .get('/.well-known/jwks.json')
21 .reply(200, x5cSingle);
22
23 client = new JwksClient({
24 cache: true,
25 jwksUri: `${jwksHost}/.well-known/jwks.json`
26 });
27
28 // Cache the Key
29 client.getSigningKey('NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA', (err, key) => {
30 expect(key.kid).to.equal('NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA');
31
32 // Stop the JWKS server
33 nock.cleanAll();
34 done();
35 });
36 });
37
38 it('should ignore the cache when the KID isnt cached and make a requst', (done) => {
39 client.getSigningKey('12345', (err) => {
40 expect(err).not.to.be.null;
41 expect(err.code).to.equal('ENOTFOUND');
42 done();
43 });
44 });
45
46 it('should fetch the key from the cache', (done) => {
47 client.getSigningKey('NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA', (err, key) => {
48 expect(key.kid).to.equal('NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA');
49 done();
50 });
51 });
52 });
53 });
54});