UNPKG

@querc/squidex-client

Version:

NodeJS client for the [Squidex](https://squidex.io/) CMS

70 lines (63 loc) 9.31 kB
"use strict"; require("jest"); var _authenticationManager = require("./authentication-manager"); var _httpClient = require("../http/http-client"); jest.mock('../http/http-client'); const TOKEN = 'abc-123'; describe('Authentication Manager should...', () => { let httpClient; let authenticationManager; beforeEach(() => { // Mock the identity server response _httpClient.HttpClient.prototype.send = jest.fn().mockResolvedValue({ /* eslint-disable @typescript-eslint/camelcase */ access_token: TOKEN, expires_in: 123456, token_type: '?', scope: '?' /* eslint-enable */ }); httpClient = new _httpClient.HttpClient(); authenticationManager = new _authenticationManager.AuthenticationManager({ url: 'https://foo', clientId: 'my-app:default', clientSecret: 'SEKRIT' }, httpClient); }); test('exist', () => { expect(_authenticationManager.AuthenticationManager).toBeDefined(); }); test('call identity server', async () => { await authenticationManager.authenticate(); expect(httpClient.send).toHaveBeenCalledTimes(1); expect(httpClient.send).toHaveBeenCalledWith(expect.objectContaining({ data: { /* eslint-disable @typescript-eslint/camelcase */ client_id: 'my-app:default', client_secret: 'SEKRIT', grant_type: 'client_credentials', scope: 'squidex-api' /* eslint-enable */ }, path: '/identity-server/connect/token' })); }); test('not call identity server after authentication', async () => { await authenticationManager.authenticate(); await authenticationManager.authenticate(); expect(httpClient.send).toHaveBeenCalledTimes(1); }); test('call identity server after expiry', async () => { await authenticationManager.authenticate(); // Reset expiry date to 2 days ago const now = new Date(); now.setDate(now.getDate() - 2); authenticationManager.accessTokenExpiresOn = new Date(now.toUTCString()); await authenticationManager.authenticate(); expect(httpClient.send).toHaveBeenCalledTimes(2); }); test('resolve with token', async () => { const token = await authenticationManager.authenticate(); expect(token).toBe(TOKEN); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoZW50aWNhdGlvbi9hdXRoZW50aWNhdGlvbi1tYW5hZ2VyLnRlc3QudHMiXSwibmFtZXMiOlsiamVzdCIsIm1vY2siLCJUT0tFTiIsImRlc2NyaWJlIiwiaHR0cENsaWVudCIsImF1dGhlbnRpY2F0aW9uTWFuYWdlciIsImJlZm9yZUVhY2giLCJIdHRwQ2xpZW50IiwicHJvdG90eXBlIiwic2VuZCIsImZuIiwibW9ja1Jlc29sdmVkVmFsdWUiLCJhY2Nlc3NfdG9rZW4iLCJleHBpcmVzX2luIiwidG9rZW5fdHlwZSIsInNjb3BlIiwiQXV0aGVudGljYXRpb25NYW5hZ2VyIiwidXJsIiwiY2xpZW50SWQiLCJjbGllbnRTZWNyZXQiLCJ0ZXN0IiwiZXhwZWN0IiwidG9CZURlZmluZWQiLCJhdXRoZW50aWNhdGUiLCJ0b0hhdmVCZWVuQ2FsbGVkVGltZXMiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsIm9iamVjdENvbnRhaW5pbmciLCJkYXRhIiwiY2xpZW50X2lkIiwiY2xpZW50X3NlY3JldCIsImdyYW50X3R5cGUiLCJwYXRoIiwibm93IiwiRGF0ZSIsInNldERhdGUiLCJnZXREYXRlIiwiYWNjZXNzVG9rZW5FeHBpcmVzT24iLCJ0b1VUQ1N0cmluZyIsInRva2VuIiwidG9CZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQUEsSUFBSSxDQUFDQyxJQUFMLENBQVUscUJBQVY7QUFFQSxNQUFNQyxLQUFLLEdBQUcsU0FBZDtBQUVBQyxRQUFRLENBQUMsa0NBQUQsRUFBcUMsTUFBTTtBQUMvQyxNQUFJQyxVQUFKO0FBQ0EsTUFBSUMscUJBQUo7QUFFQUMsRUFBQUEsVUFBVSxDQUFDLE1BQU07QUFDYjtBQUNBQywyQkFBV0MsU0FBWCxDQUFxQkMsSUFBckIsR0FBNEJULElBQUksQ0FBQ1UsRUFBTCxHQUFVQyxpQkFBVixDQUE0QjtBQUNwRDtBQUNBQyxNQUFBQSxZQUFZLEVBQUVWLEtBRnNDO0FBR3BEVyxNQUFBQSxVQUFVLEVBQUUsTUFId0M7QUFJcERDLE1BQUFBLFVBQVUsRUFBRSxHQUp3QztBQUtwREMsTUFBQUEsS0FBSyxFQUFFO0FBQ1A7O0FBTm9ELEtBQTVCLENBQTVCO0FBUUFYLElBQUFBLFVBQVUsR0FBRyxJQUFLRyxzQkFBTCxFQUFiO0FBRUFGLElBQUFBLHFCQUFxQixHQUFHLElBQUlXLDRDQUFKLENBQ3BCO0FBQ0lDLE1BQUFBLEdBQUcsRUFBRSxhQURUO0FBRUlDLE1BQUFBLFFBQVEsRUFBRSxnQkFGZDtBQUdJQyxNQUFBQSxZQUFZLEVBQUU7QUFIbEIsS0FEb0IsRUFNcEJmLFVBTm9CLENBQXhCO0FBUUgsR0FwQlMsQ0FBVjtBQXNCQWdCLEVBQUFBLElBQUksQ0FBQyxPQUFELEVBQVUsTUFBTTtBQUNoQkMsSUFBQUEsTUFBTSxDQUFDTCw0Q0FBRCxDQUFOLENBQThCTSxXQUE5QjtBQUNILEdBRkcsQ0FBSjtBQUlBRixFQUFBQSxJQUFJLENBQUMsc0JBQUQsRUFBeUIsWUFBWTtBQUNyQyxVQUFNZixxQkFBcUIsQ0FBQ2tCLFlBQXRCLEVBQU47QUFFQUYsSUFBQUEsTUFBTSxDQUFDakIsVUFBVSxDQUFDSyxJQUFaLENBQU4sQ0FBd0JlLHFCQUF4QixDQUE4QyxDQUE5QztBQUNBSCxJQUFBQSxNQUFNLENBQUNqQixVQUFVLENBQUNLLElBQVosQ0FBTixDQUF3QmdCLG9CQUF4QixDQUNJSixNQUFNLENBQUNLLGdCQUFQLENBQXdCO0FBQ3BCQyxNQUFBQSxJQUFJLEVBQUU7QUFDRjtBQUNBQyxRQUFBQSxTQUFTLEVBQUUsZ0JBRlQ7QUFHRkMsUUFBQUEsYUFBYSxFQUFFLFFBSGI7QUFJRkMsUUFBQUEsVUFBVSxFQUFFLG9CQUpWO0FBS0ZmLFFBQUFBLEtBQUssRUFBRTtBQUNQOztBQU5FLE9BRGM7QUFTcEJnQixNQUFBQSxJQUFJLEVBQUU7QUFUYyxLQUF4QixDQURKO0FBYUgsR0FqQkcsQ0FBSjtBQW1CQVgsRUFBQUEsSUFBSSxDQUFDLCtDQUFELEVBQWtELFlBQVk7QUFDOUQsVUFBTWYscUJBQXFCLENBQUNrQixZQUF0QixFQUFOO0FBQ0EsVUFBTWxCLHFCQUFxQixDQUFDa0IsWUFBdEIsRUFBTjtBQUVBRixJQUFBQSxNQUFNLENBQUNqQixVQUFVLENBQUNLLElBQVosQ0FBTixDQUF3QmUscUJBQXhCLENBQThDLENBQTlDO0FBQ0gsR0FMRyxDQUFKO0FBT0FKLEVBQUFBLElBQUksQ0FBQyxtQ0FBRCxFQUFzQyxZQUFZO0FBQ2xELFVBQU1mLHFCQUFxQixDQUFDa0IsWUFBdEIsRUFBTixDQURrRCxDQUdsRDs7QUFDQSxVQUFNUyxHQUFHLEdBQUcsSUFBSUMsSUFBSixFQUFaO0FBQ0FELElBQUFBLEdBQUcsQ0FBQ0UsT0FBSixDQUFZRixHQUFHLENBQUNHLE9BQUosS0FBZ0IsQ0FBNUI7QUFDQzlCLElBQUFBLHFCQUFELENBQStCK0Isb0JBQS9CLEdBQXNELElBQUlILElBQUosQ0FBU0QsR0FBRyxDQUFDSyxXQUFKLEVBQVQsQ0FBdEQ7QUFFQSxVQUFNaEMscUJBQXFCLENBQUNrQixZQUF0QixFQUFOO0FBRUFGLElBQUFBLE1BQU0sQ0FBQ2pCLFVBQVUsQ0FBQ0ssSUFBWixDQUFOLENBQXdCZSxxQkFBeEIsQ0FBOEMsQ0FBOUM7QUFDSCxHQVhHLENBQUo7QUFhQUosRUFBQUEsSUFBSSxDQUFDLG9CQUFELEVBQXVCLFlBQVk7QUFDbkMsVUFBTWtCLEtBQUssR0FBRyxNQUFNakMscUJBQXFCLENBQUNrQixZQUF0QixFQUFwQjtBQUNBRixJQUFBQSxNQUFNLENBQUNpQixLQUFELENBQU4sQ0FBY0MsSUFBZCxDQUFtQnJDLEtBQW5CO0FBQ0gsR0FIRyxDQUFKO0FBSUgsQ0F6RU8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnamVzdCc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1hbmFnZXIgfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uLW1hbmFnZXInO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJy4uL2h0dHAvaHR0cC1jbGllbnQnO1xuamVzdC5tb2NrKCcuLi9odHRwL2h0dHAtY2xpZW50Jyk7XG5cbmNvbnN0IFRPS0VOID0gJ2FiYy0xMjMnO1xuXG5kZXNjcmliZSgnQXV0aGVudGljYXRpb24gTWFuYWdlciBzaG91bGQuLi4nLCAoKSA9PiB7XG4gICAgbGV0IGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XG4gICAgbGV0IGF1dGhlbnRpY2F0aW9uTWFuYWdlcjogQXV0aGVudGljYXRpb25NYW5hZ2VyO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIC8vIE1vY2sgdGhlIGlkZW50aXR5IHNlcnZlciByZXNwb25zZVxuICAgICAgICBIdHRwQ2xpZW50LnByb3RvdHlwZS5zZW5kID0gamVzdC5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHtcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9jYW1lbGNhc2UgKi9cbiAgICAgICAgICAgIGFjY2Vzc190b2tlbjogVE9LRU4sXG4gICAgICAgICAgICBleHBpcmVzX2luOiAxMjM0NTYsXG4gICAgICAgICAgICB0b2tlbl90eXBlOiAnPycsXG4gICAgICAgICAgICBzY29wZTogJz8nLFxuICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSAqL1xuICAgICAgICB9KTtcbiAgICAgICAgaHR0cENsaWVudCA9IG5ldyAoSHR0cENsaWVudCBhcyBhbnkpKCk7XG5cbiAgICAgICAgYXV0aGVudGljYXRpb25NYW5hZ2VyID0gbmV3IEF1dGhlbnRpY2F0aW9uTWFuYWdlcihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL2ZvbycsXG4gICAgICAgICAgICAgICAgY2xpZW50SWQ6ICdteS1hcHA6ZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgY2xpZW50U2VjcmV0OiAnU0VLUklUJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBodHRwQ2xpZW50LFxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZXhpc3QnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChBdXRoZW50aWNhdGlvbk1hbmFnZXIpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdjYWxsIGlkZW50aXR5IHNlcnZlcicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgYXV0aGVudGljYXRpb25NYW5hZ2VyLmF1dGhlbnRpY2F0ZSgpO1xuXG4gICAgICAgIGV4cGVjdChodHRwQ2xpZW50LnNlbmQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgICAgZXhwZWN0KGh0dHBDbGllbnQuc2VuZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvY2FtZWxjYXNlICovXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudF9pZDogJ215LWFwcDpkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50X3NlY3JldDogJ1NFS1JJVCcsXG4gICAgICAgICAgICAgICAgICAgIGdyYW50X3R5cGU6ICdjbGllbnRfY3JlZGVudGlhbHMnLFxuICAgICAgICAgICAgICAgICAgICBzY29wZTogJ3NxdWlkZXgtYXBpJyxcbiAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSAqL1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGF0aDogJy9pZGVudGl0eS1zZXJ2ZXIvY29ubmVjdC90b2tlbicsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ25vdCBjYWxsIGlkZW50aXR5IHNlcnZlciBhZnRlciBhdXRoZW50aWNhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgYXV0aGVudGljYXRpb25NYW5hZ2VyLmF1dGhlbnRpY2F0ZSgpO1xuICAgICAgICBhd2FpdCBhdXRoZW50aWNhdGlvbk1hbmFnZXIuYXV0aGVudGljYXRlKCk7XG5cbiAgICAgICAgZXhwZWN0KGh0dHBDbGllbnQuc2VuZCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnY2FsbCBpZGVudGl0eSBzZXJ2ZXIgYWZ0ZXIgZXhwaXJ5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBhdXRoZW50aWNhdGlvbk1hbmFnZXIuYXV0aGVudGljYXRlKCk7XG5cbiAgICAgICAgLy8gUmVzZXQgZXhwaXJ5IGRhdGUgdG8gMiBkYXlzIGFnb1xuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBub3cuc2V0RGF0ZShub3cuZ2V0RGF0ZSgpIC0gMik7XG4gICAgICAgIChhdXRoZW50aWNhdGlvbk1hbmFnZXIgYXMgYW55KS5hY2Nlc3NUb2tlbkV4cGlyZXNPbiA9IG5ldyBEYXRlKG5vdy50b1VUQ1N0cmluZygpKTtcblxuICAgICAgICBhd2FpdCBhdXRoZW50aWNhdGlvbk1hbmFnZXIuYXV0aGVudGljYXRlKCk7XG5cbiAgICAgICAgZXhwZWN0KGh0dHBDbGllbnQuc2VuZCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDIpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgncmVzb2x2ZSB3aXRoIHRva2VuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGF1dGhlbnRpY2F0aW9uTWFuYWdlci5hdXRoZW50aWNhdGUoKTtcbiAgICAgICAgZXhwZWN0KHRva2VuKS50b0JlKFRPS0VOKTtcbiAgICB9KTtcbn0pO1xuIl19