Files
threshold-ui/addons/auth/tests/unit/session-stores/cookie-test.js
T
Carlos Alcaide Corvo b51c8203ee chore: 🤖 Upgrade eslint-plugin-qunit (#2011)
* chore: 🤖 Upgrade eslint-plugin-qunit

* Delete unnecessary assert.expect from tests
2023-12-08 12:56:00 -08:00

94 lines
2.7 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
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) {
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.notOk(sessionStore.sessionExists);
await sessionStore.restore().catch(() => {});
assert.ok(true, 'Rejected');
});
test('it cleans up cookies on restore rejection', async function (assert) {
// 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.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.strictEqual(
sessionStore.cookies.read(sessionStore.authenticatorCookieName),
'foobar',
);
});
});