@berlingske-media/bm.node-module.gateway_jwt
Version:
AuthGateway JWT verification library based on public JWKS endpoint
43 lines • 2.13 kB
JavaScript
;
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