amazon-cognito-identity-js
Version:
Amazon Cognito Identity Provider JavaScript SDK
73 lines (62 loc) • 2.1 kB
JavaScript
import CookieStorage from '../src/CookieStorage';
import { cookieStorageDomain } from './constants';
/**
* @jest-environment jsdom
*/
describe('Cookie Storage Unit Tests', () => {
//defining a DOM to attach a cookie to
Object.defineProperty(document, 'cookie', { writable: true });
describe('Constructor methods', () => {
test('Domain not supplied', () => {
const storage = new CookieStorage();
expect(storage.setItem('key', 'value')).toBe('value');
expect(storage.getItem('key')).toBe('value');
});
test('Samesite value is undefined', () => {
expect(() => {
new CookieStorage({ domain: cookieStorageDomain, sameSite: undefined });
}).toThrowError(
'The sameSite value of cookieStorage must be "lax", "strict" or "none"'
);
});
test('Samesite value is none while secure = false', () => {
expect(() => {
new CookieStorage({
domain: cookieStorageDomain,
secure: false,
sameSite: 'none',
});
}).toThrowError(
'sameSite = None requires the Secure attribute in latest browser versions.'
);
});
test('Has an expiration value', () => {
const cookieExpires = new CookieStorage({
domain: cookieStorageDomain,
secure: false,
expires: 200,
});
expect(cookieExpires.expires).toBe(200);
});
describe('Setters and getters', () => {
const cookieStoreData = { path: '/', domain: cookieStorageDomain };
const cookieStore = new CookieStorage(cookieStoreData);
test('getting an item', () => {
cookieStore.setItem('testKey', 'testValue');
expect(cookieStore.getItem('testKey')).toBe('testValue');
});
test('setting an item', () => {
expect(cookieStore.setItem('domain', 'newdomain.com')).toBe(
'newdomain.com'
);
});
test('Clearing cookies should remove all items within the storage', () => {
const cookieStore = new CookieStorage(cookieStoreData);
cookieStore.setItem('testKey2', 'testValue');
const tempReference = cookieStore.getItem();
cookieStore.clear();
expect(cookieStore.getItem()).not.toEqual(tempReference);
});
});
});
});