-
Notifications
You must be signed in to change notification settings - Fork 999
Expand file tree
/
Copy pathfastify.test.ts
More file actions
104 lines (88 loc) · 1.9 KB
/
fastify.test.ts
File metadata and controls
104 lines (88 loc) · 1.9 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
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
99
100
101
102
103
104
import fastify from 'fastify'
import { vol } from 'memfs'
import { createFastifyInstance, DEFAULT_OPTIONS } from '../fastify'
// We'll be testing how fastify is instantiated, so we'll mock it here.
jest.mock('fastify', () => {
return jest.fn(() => {
return {
register: () => {},
addHook: () => {},
}
})
})
// Suppress terminal logging.
console.log = jest.fn()
// Set up RWJS_CWD.
let original_RWJS_CWD
const FIXTURE_PATH = '/redwood-app'
beforeAll(() => {
original_RWJS_CWD = process.env.RWJS_CWD
process.env.RWJS_CWD = FIXTURE_PATH
})
afterAll(() => {
process.env.RWJS_CWD = original_RWJS_CWD
})
// Mock server.config.js to test instantiating fastify with user config.
jest.mock('fs', () => require('memfs').fs)
afterEach(() => {
vol.reset()
})
const userConfig = {
requestTimeout: 25_000,
}
jest.mock(
'/redwood-app/api/server.config.js',
() => {
return {
config: userConfig,
}
},
{
virtual: true,
}
)
jest.mock(
'\\redwood-app\\api\\server.config.js',
() => {
return {
config: userConfig,
}
},
{
virtual: true,
}
)
describe('createFastifyInstance', () => {
it('instantiates a fastify instance with default config', () => {
vol.fromNestedJSON(
{
'redwood.toml': '',
},
FIXTURE_PATH
)
createFastifyInstance()
expect(fastify).toHaveBeenCalledWith(DEFAULT_OPTIONS)
})
it("instantiates a fastify instance with the user's configuration if available", () => {
vol.fromNestedJSON(
{
'redwood.toml': '',
api: {
'server.config.js': '',
},
},
FIXTURE_PATH
)
createFastifyInstance()
expect(fastify).toHaveBeenCalledWith(userConfig)
})
})
test('DEFAULT_OPTIONS configures the log level based on NODE_ENV', () => {
expect(DEFAULT_OPTIONS).toMatchInlineSnapshot(`
{
"logger": {
"level": "info",
},
}
`)
})