93 lines
2.7 KiB
JavaScript
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'
|
|
);
|
|
});
|
|
});
|