-
Notifications
You must be signed in to change notification settings - Fork 86
/
Copy pathmiddleware.test.ts
92 lines (68 loc) · 3.26 KB
/
middleware.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
import { assertEquals } from 'https://deno.land/[email protected]/testing/asserts.ts'
import { mergeMiddlewareCookies } from './middleware.ts'
const MIDDLEWARE_HEADER = 'x-middleware-set-cookie'
Deno.test('mergeMiddlewareCookies', async (t) => {
await t.step('should handle empty cookies', async () => {
const request = new Request('https://www.test-url.com')
const response = new Response()
const result = mergeMiddlewareCookies(response, request)
assertEquals(result, '')
})
await t.step('should return request cookies when there are no middleware headers', async () => {
const request = new Request('https://www.test-url.com')
const response = new Response()
request.headers.set('Cookie', 'oatmeal=raisin')
const result = mergeMiddlewareCookies(response, request)
assertEquals(result, 'oatmeal=raisin')
})
await t.step('should not require cookies in request to be set', async () => {
const request = new Request('https://www.test-url.com')
const response = new Response()
response.headers.set(MIDDLEWARE_HEADER, 'peanut=butter; Path=/')
const result = mergeMiddlewareCookies(response, request)
assertEquals(result, 'peanut=butter')
})
await t.step('should merge request and middleware cookies', async () => {
const request = new Request('https://www.test-url.com')
const response = new Response()
request.headers.set('Cookie', 'oatmeal=raisin')
response.headers.set(MIDDLEWARE_HEADER, 'peanut=butter; Path=/')
const result = mergeMiddlewareCookies(response, request)
assertEquals(result, 'oatmeal=raisin; peanut=butter')
})
await t.step('should overwrite request cookies with latest values', async () => {
const request = new Request('https://www.test-url.com')
const response = new Response()
request.headers.set('Cookie', 'oatmeal=chocolate')
response.headers.set(MIDDLEWARE_HEADER, 'oatmeal=raisin; Path=/')
const result = mergeMiddlewareCookies(response, request)
assertEquals(result, 'oatmeal=raisin')
})
await t.step('should not decode middleware cookie values', async () => {
const request = new Request('https://www.test-url.com')
const response = new Response()
response.headers.set(MIDDLEWARE_HEADER, 'greeting=Hello%20from%20the%20cookie; Path=/')
const result = mergeMiddlewareCookies(response, request)
assertEquals(result, 'greeting=Hello%20from%20the%20cookie')
})
await t.step('should support multiple cookies being set in middleware', async () => {
const request = new Request('https://www.test-url.com')
const response = new Response()
response.headers.set(
MIDDLEWARE_HEADER,
'oatmeal=raisin; Path=/,peanut=butter; Path=/,chocolate=chip; Path=/',
)
const result = mergeMiddlewareCookies(response, request)
assertEquals(result, 'oatmeal=raisin; peanut=butter; chocolate=chip')
})
await t.step('should ignore comma in middleware cookie expiry', async () => {
const request = new Request('https://www.test-url.com')
const response = new Response()
response.headers.set(
MIDDLEWARE_HEADER,
'oatmeal=raisin; Path=/; Expires=Wed, 23 Apr 2025 13:37:43 GMT; Max-Age=604800',
)
const result = mergeMiddlewareCookies(response, request)
assertEquals(result, 'oatmeal=raisin')
})
})