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)
})
})