Files
threshold-ui/addons/auth/tests/unit/session-stores/cookie-test.js
T

93 lines
2.7 KiB
JavaScript

import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module('Unit | Session Store | cookie', function (hooks) {
setupTest(hooks);
let sessionStore;
hooks.beforeEach(function () {
sessionStore = this.owner.lookup('session-store:cookie');
sessionStore.clear();
});
hooks.afterEach(function () {
sessionStore.clear();
});
test('it restores a session if both necessary cookies are present (session exists)', async function (assert) {
assert.expect(2);
sessionStore.cookies.write(sessionStore.cookieName, 'token-value', {
path: '/',
});
sessionStore.cookies.write(
sessionStore.authenticatorCookieName,
'authenticator-name',
{ path: '/' }
);
assert.ok(sessionStore.sessionExists);
const session = await sessionStore.restore();
assert.deepEqual(session, {
authenticated: {
authenticator: 'authenticator-name',
},
});
});
test('it rejects restore if the session does not exist', async function (assert) {
assert.expect(2);
assert.notOk(sessionStore.sessionExists);
await sessionStore.restore().catch(() => {});
assert.ok(true, 'Rejected');
});
test('it cleans up cookies on restore rejection', async function (assert) {
assert.expect(4);
// For session cookie
sessionStore.cookies.write(sessionStore.cookieName, 'token-value', {
path: '/',
});
assert.ok(
sessionStore.cookies.exists(sessionStore.cookieName),
'cookie exists'
);
await sessionStore.restore().catch(() => {});
assert.notOk(
sessionStore.cookies.exists(sessionStore.cookieName),
'cookie was cleared'
);
// For authenticator name cookie
sessionStore.cookies.write(
sessionStore.authenticatorCookieName,
'authenticator-name',
{ path: '/' }
);
assert.ok(
sessionStore.cookies.exists(sessionStore.authenticatorCookieName),
'cookie exists'
);
await sessionStore.restore().catch(() => {});
assert.notOk(
sessionStore.cookies.exists(sessionStore.authenticatorCookieName),
'cookie was cleared'
);
});
test('it persists only an authenticator name cookie, since the server persists the session cookie', async function (assert) {
assert.expect(4);
assert.notOk(sessionStore.cookies.exists(sessionStore.cookieName));
assert.notOk(
sessionStore.cookies.exists(sessionStore.authenticatorCookieName)
);
sessionStore.persist({ authenticated: { authenticator: 'foobar' } });
assert.notOk(
sessionStore.cookies.exists(sessionStore.cookieName),
'session cookie was not set'
);
assert.equal(
sessionStore.cookies.read(sessionStore.authenticatorCookieName),
'foobar'
);
});
});