Files
directus/packages/sdk/tests/base/auth.browser.test.ts
Jake Cattrall d24dacd075 Use date (epoch) compare workflow instead of timer to refresh token in SDK (#12399)
* use date compare workflow instead of timer

* convert milliseconds to seconds

* add missing references to auth_expired_at key

* correct calculation and presume getTime returns milliseconds

* resolve issue with static tokens

* prevents token refresh before everything else is initialized

* remove timer based authentication tests

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2022-04-01 09:31:11 -04:00

77 lines
1.6 KiB
TypeScript

/**
* @jest-environment jsdom
*/
import { Directus } from '../../src';
import { test } from '../utils';
describe('auth (browser)', function () {
beforeEach(() => {
localStorage.clear();
});
afterEach(() => {
localStorage.clear();
});
test(`sets default auth mode to cookie`, async (url) => {
const sdk = new Directus(url, { auth: { mode: 'cookie' } });
expect(sdk.auth.mode).toBe('cookie');
});
test(`sends default auth mode`, async (url, nock) => {
const scope = nock()
.post('/auth/login', (body) => body.mode === 'cookie')
.reply(200, {
data: {
access_token: 'access_token',
refresh_token: 'refresh_token',
expires: 60000,
},
});
const sdk = new Directus(url);
await sdk.auth.login({
email: 'wolfulus@gmail.com',
password: 'password',
});
expect(scope.pendingMocks().length).toBe(0);
});
test(`logout doesn't send a refresh token due to cookie mode`, async (url, nock) => {
nock()
.post('/auth/login', (body) => body.mode === 'cookie')
.reply(
200,
{
data: {
access_token: 'some_access_token',
expires: 60000,
},
},
{
'Set-Cookie': 'directus_refresh_token=my_refresh_token; Max-Age=604800; Path=/; HttpOnly;',
}
);
nock().post('/auth/logout', {}).matchHeader('cookie', 'directus_refresh_token=my_refresh_token').reply(200, {
data: {},
});
const sdk = new Directus(url);
await sdk.auth.login({
email: 'wolfulus@gmail.com',
password: 'password',
});
expect(sdk.auth.token).toBe('some_access_token');
await sdk.auth.logout();
expect(sdk.auth.token).toBeNull();
});
});