import { JSDOM } from 'jsdom' import { setCookie, getCookie, removeCookie, allowedCookieDomain } from '../cookies' describe('Cookies', () => { beforeEach(() => { const jsd = new JSDOM("batman's test", { url: 'https://test.koala.live' }) global.window = jsd.window as unknown as Window & typeof globalThis global.document = jsd.window.document global.location = jsd.window.location }) test('can set cookies', () => { setCookie('test', 'test') expect(getCookie('test')).toEqual('test') }) test('can remove cookies', () => { setCookie('test', 'test') removeCookie('test') expect(getCookie('test')).toEqual(undefined) }) describe('Supports configuring the domain', () => { test('works when it is the same domain', () => { setCookie('test', 'test', { domain: 'test.koala.live' }) expect(getCookie('test')).toEqual('test') }) test('works when it is top level domain', () => { setCookie('test', 'test', { domain: 'koala.live' }) expect(getCookie('test')).toEqual('test') }) test('does not work in different variations of the domain', () => { // different subdomain setCookie('test', 'test', { domain: 'dev.koala.live' }) expect(getCookie('test')).toBeUndefined() // different subdomain setCookie('test', 'test', { domain: 'www.koala.live' }) expect(getCookie('test')).toBeUndefined() // top level domain setCookie('test', 'test', { domain: 'koala.live' }) expect(getCookie('test')).toEqual('test') }) test('does not work in different domains', () => { setCookie('test', 'test', { domain: 'getkoala.com' }) expect(getCookie('test')).toBeUndefined() }) test('invalid domain detection', () => { setCookie('test', 'test', { domain: 'test.koala.live/banana' }) expect(getCookie('test')).toEqual('test') }) }) }) describe('Domain validation', () => { test('validates when the domain is the same', () => { expect(allowedCookieDomain('dev.koala.live', 'dev.koala.live')).toEqual(true) }) test('should not be valid when provided domain is a sub domain', () => { expect(allowedCookieDomain('koala.live', 'dev.koala.live')).toEqual(false) }) test('should accept the current host name', () => { // the current host name is test.koala.live expect(allowedCookieDomain('koala.live', 'test.koala.live')).toEqual(true) expect(allowedCookieDomain('koala.live', 'dev.koala.live')).toEqual(false) }) })