UNPKG

@berlingske-media/bm.node-module.gateway_jwt

Version:

AuthGateway JWT verification library based on public JWKS endpoint

43 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const JwksClient_1 = require("../JwksClient"); const express_1 = tslib_1.__importDefault(require("express")); const keys_1 = require("../keys"); describe('JwksClient (cache)', () => { const jwksHost = 'http://localhost:5558'; let server; let app; beforeAll(() => { server = (0, express_1.default)(); server.get('/.well-known/jwks.json', function (req, res) { return res.status(200).json({ keys: keys_1.keys }); }); app = server.listen({ port: 5558 }); }); afterAll(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () { yield new Promise((resolve) => app.close(resolve)); })); describe('#getSigningKey', () => { describe('should cache requests per single kid', () => { let client; beforeEach(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () { client = new JwksClient_1.JwksClient({ cache: true, jwksUri: `${jwksHost}/.well-known/jwks.json`, }); const expectedKey = yield client.getSigningKey('NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA'); expect(expectedKey.kid).toEqual('NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA'); })); it('should ignore the cache when the KID isnt cached and make a request', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { yield expect(client.getSigningKey('12345')) .rejects.toThrow('Unable to find a signing key that matches \'12345\''); })); it('should fetch the key from the cache', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const key = yield client.getSigningKey('NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA'); expect(key.kid).toBe('NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA'); })); }); }); }); //# sourceMappingURL=cache.test.js.map