-
Notifications
You must be signed in to change notification settings - Fork 26.1k
/
cookies.test.ts
98 lines (83 loc) · 2.41 KB
/
cookies.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/* eslint-env jest */
import { Cookies } from 'next/dist/server/web/spec-extension/cookies'
import { Blob, File, FormData } from 'next/dist/compiled/formdata-node'
import { Headers } from 'next/dist/server/web/spec-compliant/headers'
import { Crypto } from 'next/dist/server/web/sandbox/polyfills'
import * as streams from 'web-streams-polyfill/ponyfill'
beforeAll(() => {
global['Blob'] = Blob
global['crypto'] = new Crypto()
global['File'] = File
global['FormData'] = FormData
global['Headers'] = Headers
global['ReadableStream'] = streams.ReadableStream
global['TransformStream'] = streams.TransformStream
})
afterAll(() => {
delete global['Blob']
delete global['crypto']
delete global['File']
delete global['Headers']
delete global['FormData']
delete global['ReadableStream']
delete global['TransformStream']
})
it('create a empty cookies bag', async () => {
const cookies = new Cookies()
expect(Object.entries(cookies)).toStrictEqual([])
})
it('create a cookies bag from string', async () => {
const cookies = new Cookies('foo=bar; equation=E%3Dmc%5E2')
expect(Array.from(cookies.entries())).toStrictEqual([
['foo', 'foo=bar; Path=/'],
['equation', 'equation=E%3Dmc%5E2; Path=/'],
])
})
it('.set', async () => {
const cookies = new Cookies()
cookies.set('foo', 'bar')
expect(Array.from(cookies.entries())).toStrictEqual([
['foo', 'foo=bar; Path=/'],
])
})
it('.set with options', async () => {
const cookies = new Cookies()
const options = {
path: '/',
maxAge: 1000 * 60 * 60 * 24 * 7,
httpOnly: true,
sameSite: 'strict',
domain: 'example.com',
}
cookies.set('foo', 'bar', options)
expect(options).toStrictEqual({
path: '/',
maxAge: 1000 * 60 * 60 * 24 * 7,
httpOnly: true,
sameSite: 'strict',
domain: 'example.com',
})
const [[key, value]] = Array.from(cookies.entries())
const values = value.split('; ')
expect(key).toBe('foo')
expect(values).toStrictEqual([
'foo=bar',
'Max-Age=604800',
'Domain=example.com',
'Path=/',
expect.stringContaining('Expires='),
'HttpOnly',
'SameSite=Strict',
])
})
it('.delete', async () => {
const cookies = new Cookies()
cookies.set('foo', 'bar')
cookies.delete('foo')
expect(Array.from(cookies.entries())).toStrictEqual([])
})
it('.has', async () => {
const cookies = new Cookies()
cookies.set('foo', 'bar')
expect(cookies.has('foo')).toBe(true)
})