-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcreateHeaderBuilderMiddleware.test.ts
More file actions
66 lines (51 loc) · 2.25 KB
/
createHeaderBuilderMiddleware.test.ts
File metadata and controls
66 lines (51 loc) · 2.25 KB
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
import { createHeaderBuilderMiddleware } from './createHeaderBuilderMiddleware.js'
import { HeaderBuilder } from './headerBuilder.js'
import { describe, expect, it } from 'vitest'
describe('createHeaderBuilderMiddleware', () => {
it('should create a middleware that adds a header', async () => {
const middleware = createHeaderBuilderMiddleware((builder) =>
builder.add('X-Test-Header', 'test-value'),
)
const builder = HeaderBuilder.create().with(middleware)
const actual = await builder.resolve()
expect(actual).toEqual({ 'X-Test-Header': 'test-value' })
})
it('should create a middleware that adds multiple headers', async () => {
const middleware = createHeaderBuilderMiddleware((builder) =>
builder.and({
'X-Test-Header-1': 'value1',
'X-Test-Header-2': 'value2',
}),
)
const builder = HeaderBuilder.create().with(middleware)
const actual = await builder.resolve()
expect(actual).toEqual({
'X-Test-Header-1': 'value1',
'X-Test-Header-2': 'value2',
})
})
it('should create a middleware that adds headers asynchronously', async () => {
const middleware = createHeaderBuilderMiddleware(async (builder) => {
const token = await new Promise<string>((resolve) => resolve('async-token'))
return builder.add('authorization', `Bearer ${token}`)
})
const builder = HeaderBuilder.create().with(middleware)
const actual = await builder.resolve()
expect(actual).toEqual({ authorization: 'Bearer async-token' })
})
it('should create a middleware that merges headers from another builder', async () => {
const otherBuilder = HeaderBuilder.create().add('X-Other-Header', 'other-value')
const middleware = createHeaderBuilderMiddleware((builder) => builder.merge(otherBuilder))
const builder = HeaderBuilder.create().with(middleware)
const actual = await builder.resolve()
expect(actual).toEqual({ 'X-Other-Header': 'other-value' })
})
it('should handle middleware that returns a promise of a builder', async () => {
const middleware = createHeaderBuilderMiddleware((builder) =>
Promise.resolve(builder.add('X-Promise-Header', 'promise-value')),
)
const builder = HeaderBuilder.create().with(middleware)
const actual = await builder.resolve()
expect(actual).toEqual({ 'X-Promise-Header': 'promise-value' })
})
})