1 | import nock from 'nock';
|
2 | import { expect } from 'chai';
|
3 |
|
4 | import { x5cSingle } from './keys';
|
5 | import { JwksClient } from '../src/JwksClient';
|
6 |
|
7 | describe('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 |
|
29 | client.getSigningKey('NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA', (err, key) => {
|
30 | expect(key.kid).to.equal('NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA');
|
31 |
|
32 |
|
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 | });
|