@platformatic/service 0.45.1 → 0.46.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +2 -2
- package/package.json +6 -6
- package/fixtures/hello/no-server-logger.json +0 -13
- package/fixtures/hello/platformatic.service.json +0 -18
- package/fixtures/hello/plugin.js +0 -7
- package/fixtures/hello/warn-log.service.json +0 -18
- package/fixtures/hello-client/hello/hello.cjs +0 -21
- package/fixtures/hello-client/hello/hello.d.ts +0 -34
- package/fixtures/hello-client/hello/hello.openapi.json +0 -22
- package/fixtures/hello-client/hello/package.json +0 -5
- package/fixtures/hello-client/platformatic.service.json +0 -19
- package/fixtures/hello-client/plugin.js +0 -8
- package/fixtures/hello-client-ts/hello/hello.cjs +0 -21
- package/fixtures/hello-client-ts/hello/hello.d.ts +0 -34
- package/fixtures/hello-client-ts/hello/hello.openapi.json +0 -22
- package/fixtures/hello-client-ts/hello/package.json +0 -5
- package/fixtures/hello-client-ts/platformatic.service.json +0 -21
- package/fixtures/hello-client-ts/plugin.ts +0 -8
- package/fixtures/hello-client-ts/tsconfig.json +0 -23
- package/fixtures/hello-client-ts-without-deps/hello.d.ts +0 -34
- package/fixtures/hello-client-ts-without-deps/hello.openapi.json +0 -22
- package/fixtures/hello-client-ts-without-deps/platformatic.service.json +0 -23
- package/fixtures/hello-client-ts-without-deps/plugin.ts +0 -8
- package/fixtures/hello-client-ts-without-deps/tsconfig.json +0 -22
- package/fixtures/hello-client-without-deps/hello.d.ts +0 -34
- package/fixtures/hello-client-without-deps/hello.openapi.json +0 -22
- package/fixtures/hello-client-without-deps/platformatic.service.json +0 -21
- package/fixtures/hello-client-without-deps/plugin.js +0 -8
- package/fixtures/https/embedded-pem.json +0 -20
- package/fixtures/https/https.crt +0 -25
- package/fixtures/https/https.key +0 -27
- package/fixtures/https/pem-path.json +0 -20
- package/fixtures/https/plugin.js +0 -7
- package/fixtures/options/platformatic.service.yml +0 -9
- package/fixtures/options/plugin.js +0 -7
- package/test/autoload.test.js +0 -486
- package/test/cli/compile-1.test.mjs +0 -532
- package/test/cli/compile-2.test.mjs +0 -310
- package/test/cli/gen-schema.test.mjs +0 -44
- package/test/cli/gen-types.test.mjs +0 -30
- package/test/cli/helper.mjs +0 -67
- package/test/cli/start.test.mjs +0 -126
- package/test/cli/tap-parallel-not-ok +0 -0
- package/test/cli/validations.test.mjs +0 -33
- package/test/clients.test.js +0 -87
- package/test/config.test.js +0 -316
- package/test/cors.test.js +0 -291
- package/test/fixtures/bad-typescript-plugin/platformatic.service.json +0 -16
- package/test/fixtures/bad-typescript-plugin/plugin.ts +0 -5
- package/test/fixtures/bad-typescript-plugin/tsconfig.json +0 -22
- package/test/fixtures/custom-port-placeholder.json +0 -10
- package/test/fixtures/default-env-var-names.json +0 -7
- package/test/fixtures/directories/platformatic.service.json +0 -13
- package/test/fixtures/directories/plugins/decorator.js +0 -7
- package/test/fixtures/directories/routes/foo/bar.js +0 -11
- package/test/fixtures/directories/routes/foo/baz/index.js +0 -7
- package/test/fixtures/directories/routes/foo/baz/index2.js +0 -11
- package/test/fixtures/directories/routes/oof/auto.hooks.js +0 -5
- package/test/fixtures/directories/routes/oof/index.js +0 -7
- package/test/fixtures/directories/routes/root.js +0 -7
- package/test/fixtures/hello-ts-with-config/global.d.ts +0 -8
- package/test/fixtures/hello-ts-with-config/platformatic.service.json +0 -16
- package/test/fixtures/hello-ts-with-config/plugin.ts +0 -8
- package/test/fixtures/hello-ts-with-config/tsconfig.json +0 -23
- package/test/fixtures/hello-world-resolver.js +0 -16
- package/test/fixtures/missing-property.config.json +0 -1
- package/test/fixtures/nested-directories/modules/catalogue/index.js +0 -11
- package/test/fixtures/nested-directories/modules/catalogue/routes/products.js +0 -14
- package/test/fixtures/nested-directories/modules/inventory/index.js +0 -33
- package/test/fixtures/nested-directories/modules/inventory/routes/product.js +0 -15
- package/test/fixtures/nested-directories/package.json +0 -3
- package/test/fixtures/nested-directories/platformatic.service.json +0 -23
- package/test/fixtures/nested-directories/plugins/decorator.js +0 -3
- package/test/fixtures/nested-directories/plugins/handlers.js +0 -17
- package/test/fixtures/not-load.js +0 -8
- package/test/fixtures/not-load.service.json +0 -13
- package/test/fixtures/other-side.js +0 -9
- package/test/fixtures/request-id.js +0 -9
- package/test/fixtures/root-endpoint-plugin.js +0 -8
- package/test/fixtures/throw-resolver.js +0 -16
- package/test/fixtures/typescript-autoload/platformatic.service.json +0 -16
- package/test/fixtures/typescript-autoload/routes/plugin.ts +0 -5
- package/test/fixtures/typescript-autoload/tsconfig.json +0 -22
- package/test/fixtures/typescript-compiled/compiled/plugin.js +0 -6
- package/test/fixtures/typescript-compiled/platformatic.service.json +0 -18
- package/test/fixtures/typescript-plugin/platformatic.service.json +0 -16
- package/test/fixtures/typescript-plugin/plugin.ts +0 -5
- package/test/fixtures/typescript-plugin/tsconfig.json +0 -22
- package/test/fixtures/typescript-plugin-custom-flags/platformatic.service.json +0 -18
- package/test/fixtures/typescript-plugin-custom-flags/plugin.ts +0 -5
- package/test/fixtures/typescript-plugin-custom-flags/tsconfig.json +0 -22
- package/test/fixtures/typescript-plugin-custom-tsconfig/a-config-for-ts.json +0 -22
- package/test/fixtures/typescript-plugin-custom-tsconfig/platformatic.service.json +0 -18
- package/test/fixtures/typescript-plugin-custom-tsconfig/plugin.ts +0 -5
- package/test/fixtures/typescript-plugin-nocompile/platformatic.service.json +0 -16
- package/test/fixtures/typescript-plugin-nocompile/plugin.ts +0 -5
- package/test/fixtures/typescript-plugin-nocompile/tsconfig.json +0 -22
- package/test/fixtures/typescript-plugin-nocompile-enabled/platformatic.service.json +0 -18
- package/test/fixtures/typescript-plugin-nocompile-enabled/plugin.ts +0 -5
- package/test/fixtures/typescript-plugin-nocompile-enabled/tsconfig.json +0 -22
- package/test/fixtures/typescript-plugin-nocompile-string/platformatic.service.json +0 -16
- package/test/fixtures/typescript-plugin-nocompile-string/plugin.ts +0 -5
- package/test/fixtures/typescript-plugin-nocompile-string/tsconfig.json +0 -22
- package/test/fixtures/typescript-plugin-string/platformatic.service.json +0 -16
- package/test/fixtures/typescript-plugin-string/plugin.ts +0 -5
- package/test/fixtures/typescript-plugin-string/tsconfig.json +0 -22
- package/test/fixtures/undici-plugin.js +0 -15
- package/test/graphql.test.js +0 -219
- package/test/healthcheck.test.js +0 -92
- package/test/helper.js +0 -30
- package/test/https.test.js +0 -64
- package/test/lambda.test.js +0 -103
- package/test/load-and-reload-files.test.js +0 -180
- package/test/load-plugin.test.js +0 -67
- package/test/metrics.test.js +0 -220
- package/test/routes.test.js +0 -230
- package/test/schema.test.js +0 -12
- package/test/tap-parallel-ok +0 -0
- package/test/telemetry.test.js +0 -87
- package/test/utils.test.js +0 -37
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"module": "commonjs",
|
|
4
|
-
"esModuleInterop": true,
|
|
5
|
-
"target": "es2020",
|
|
6
|
-
"moduleResolution": "node",
|
|
7
|
-
"sourceMap": false,
|
|
8
|
-
"pretty": false,
|
|
9
|
-
"noEmitOnError": true,
|
|
10
|
-
"outDir": "dist"
|
|
11
|
-
},
|
|
12
|
-
"watchOptions": {
|
|
13
|
-
"watchFile": "fixedPollingInterval",
|
|
14
|
-
"watchDirectory": "fixedPollingInterval",
|
|
15
|
-
"fallbackPolling": "dynamicPriority",
|
|
16
|
-
"synchronousWatchDirectory": true,
|
|
17
|
-
"excludeDirectories": [
|
|
18
|
-
"**/node_modules",
|
|
19
|
-
"dist"
|
|
20
|
-
]
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"server": {
|
|
3
|
-
"logger": {
|
|
4
|
-
"level": "info"
|
|
5
|
-
},
|
|
6
|
-
"hostname": "127.0.0.1",
|
|
7
|
-
"port": "0",
|
|
8
|
-
"pluginTimeout": 60000,
|
|
9
|
-
"keepAliveTimeout": 1
|
|
10
|
-
},
|
|
11
|
-
"plugins": {
|
|
12
|
-
"paths": ["plugin.ts"],
|
|
13
|
-
"typescript": {
|
|
14
|
-
"enabled": "false"
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"watch": false
|
|
18
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"module": "commonjs",
|
|
4
|
-
"esModuleInterop": true,
|
|
5
|
-
"target": "es2020",
|
|
6
|
-
"moduleResolution": "node",
|
|
7
|
-
"sourceMap": false,
|
|
8
|
-
"pretty": false,
|
|
9
|
-
"noEmitOnError": true,
|
|
10
|
-
"outDir": "dist"
|
|
11
|
-
},
|
|
12
|
-
"watchOptions": {
|
|
13
|
-
"watchFile": "fixedPollingInterval",
|
|
14
|
-
"watchDirectory": "fixedPollingInterval",
|
|
15
|
-
"fallbackPolling": "dynamicPriority",
|
|
16
|
-
"synchronousWatchDirectory": true,
|
|
17
|
-
"excludeDirectories": [
|
|
18
|
-
"**/node_modules",
|
|
19
|
-
"dist"
|
|
20
|
-
]
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"module": "commonjs",
|
|
4
|
-
"esModuleInterop": true,
|
|
5
|
-
"target": "es6",
|
|
6
|
-
"moduleResolution": "node",
|
|
7
|
-
"sourceMap": true,
|
|
8
|
-
"pretty": true,
|
|
9
|
-
"noEmitOnError": true,
|
|
10
|
-
"outDir": "dist"
|
|
11
|
-
},
|
|
12
|
-
"watchOptions": {
|
|
13
|
-
"watchFile": "fixedPollingInterval",
|
|
14
|
-
"watchDirectory": "fixedPollingInterval",
|
|
15
|
-
"fallbackPolling": "dynamicPriority",
|
|
16
|
-
"synchronousWatchDirectory": true,
|
|
17
|
-
"excludeDirectories": [
|
|
18
|
-
"**/node_modules",
|
|
19
|
-
"dist"
|
|
20
|
-
]
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"module": "commonjs",
|
|
4
|
-
"esModuleInterop": true,
|
|
5
|
-
"target": "es2020",
|
|
6
|
-
"moduleResolution": "node",
|
|
7
|
-
"sourceMap": false,
|
|
8
|
-
"pretty": false,
|
|
9
|
-
"noEmitOnError": true,
|
|
10
|
-
"outDir": "dist"
|
|
11
|
-
},
|
|
12
|
-
"watchOptions": {
|
|
13
|
-
"watchFile": "fixedPollingInterval",
|
|
14
|
-
"watchDirectory": "fixedPollingInterval",
|
|
15
|
-
"fallbackPolling": "dynamicPriority",
|
|
16
|
-
"synchronousWatchDirectory": true,
|
|
17
|
-
"excludeDirectories": [
|
|
18
|
-
"**/node_modules",
|
|
19
|
-
"dist"
|
|
20
|
-
]
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const undici = require('undici')
|
|
4
|
-
|
|
5
|
-
module.exports = async function (app) {
|
|
6
|
-
app.get('/request', async function () {
|
|
7
|
-
try {
|
|
8
|
-
const res = await undici.request('http://localhost:42')
|
|
9
|
-
return await res.body.json()
|
|
10
|
-
} catch (err) {
|
|
11
|
-
console.log(err)
|
|
12
|
-
throw err
|
|
13
|
-
}
|
|
14
|
-
})
|
|
15
|
-
}
|
package/test/graphql.test.js
DELETED
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { test } = require('tap')
|
|
4
|
-
const { buildServer } = require('..')
|
|
5
|
-
const { buildConfig } = require('./helper')
|
|
6
|
-
const { request } = require('undici')
|
|
7
|
-
const { join } = require('path')
|
|
8
|
-
|
|
9
|
-
test('graphql enabled', async ({ teardown, equal, same }) => {
|
|
10
|
-
const app = await buildServer(buildConfig({
|
|
11
|
-
server: {
|
|
12
|
-
hostname: '127.0.0.1',
|
|
13
|
-
port: 0,
|
|
14
|
-
healthCheck: {
|
|
15
|
-
enabled: true,
|
|
16
|
-
interval: 2000
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
service: {
|
|
20
|
-
graphql: true
|
|
21
|
-
},
|
|
22
|
-
plugins: {
|
|
23
|
-
paths: [join(__dirname, 'fixtures', 'hello-world-resolver.js')]
|
|
24
|
-
}
|
|
25
|
-
}))
|
|
26
|
-
|
|
27
|
-
teardown(async () => {
|
|
28
|
-
await app.close()
|
|
29
|
-
})
|
|
30
|
-
await app.start()
|
|
31
|
-
|
|
32
|
-
{
|
|
33
|
-
const res = await request(`${app.url}/graphql`, {
|
|
34
|
-
method: 'POST',
|
|
35
|
-
headers: {
|
|
36
|
-
'content-type': 'application/json'
|
|
37
|
-
},
|
|
38
|
-
body: JSON.stringify({
|
|
39
|
-
query: `
|
|
40
|
-
query {
|
|
41
|
-
hello
|
|
42
|
-
}
|
|
43
|
-
`
|
|
44
|
-
})
|
|
45
|
-
})
|
|
46
|
-
equal(res.statusCode, 200, 'hello status code')
|
|
47
|
-
same(await res.body.json(), {
|
|
48
|
-
data: {
|
|
49
|
-
hello: 'world'
|
|
50
|
-
}
|
|
51
|
-
}, 'hello response')
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
{
|
|
55
|
-
const res = await request(`${app.url}/graphiql`)
|
|
56
|
-
equal(res.statusCode, 200, 'graphiql status code')
|
|
57
|
-
}
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
test('graphql disabled', async ({ teardown, equal, fail }) => {
|
|
61
|
-
try {
|
|
62
|
-
const app = await buildServer(buildConfig({
|
|
63
|
-
server: {
|
|
64
|
-
hostname: '127.0.0.1',
|
|
65
|
-
port: 0,
|
|
66
|
-
healthCheck: {
|
|
67
|
-
enabled: true,
|
|
68
|
-
interval: 2000
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
service: {
|
|
72
|
-
graphql: false
|
|
73
|
-
},
|
|
74
|
-
plugins: {
|
|
75
|
-
paths: [join(__dirname, 'fixtures', 'hello-world-resolver.js')]
|
|
76
|
-
}
|
|
77
|
-
}))
|
|
78
|
-
await app.close()
|
|
79
|
-
fail('should have errored but did not')
|
|
80
|
-
} catch (err) {
|
|
81
|
-
equal(err.message, 'Cannot read properties of undefined (reading \'extendSchema\')')
|
|
82
|
-
}
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
test('disable graphiql', async ({ teardown, equal, same }) => {
|
|
86
|
-
const app = await buildServer(buildConfig({
|
|
87
|
-
server: {
|
|
88
|
-
hostname: '127.0.0.1',
|
|
89
|
-
port: 0,
|
|
90
|
-
healthCheck: {
|
|
91
|
-
enabled: true,
|
|
92
|
-
interval: 2000
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
service: {
|
|
96
|
-
graphql: {
|
|
97
|
-
graphiql: false
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
plugins: {
|
|
101
|
-
paths: [join(__dirname, 'fixtures', 'hello-world-resolver.js')]
|
|
102
|
-
}
|
|
103
|
-
}))
|
|
104
|
-
|
|
105
|
-
teardown(async () => {
|
|
106
|
-
await app.close()
|
|
107
|
-
})
|
|
108
|
-
await app.start()
|
|
109
|
-
|
|
110
|
-
{
|
|
111
|
-
const res = await request(`${app.url}/graphql`, {
|
|
112
|
-
method: 'POST',
|
|
113
|
-
headers: {
|
|
114
|
-
'content-type': 'application/json'
|
|
115
|
-
},
|
|
116
|
-
body: JSON.stringify({
|
|
117
|
-
query: `
|
|
118
|
-
query {
|
|
119
|
-
hello
|
|
120
|
-
}
|
|
121
|
-
`
|
|
122
|
-
})
|
|
123
|
-
})
|
|
124
|
-
equal(res.statusCode, 200, 'hello status code')
|
|
125
|
-
same(await res.body.json(), {
|
|
126
|
-
data: {
|
|
127
|
-
hello: 'world'
|
|
128
|
-
}
|
|
129
|
-
}, 'hello response')
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
{
|
|
133
|
-
const res = await request(`${app.url}/graphiql`)
|
|
134
|
-
equal(res.statusCode, 404, 'graphiql status code')
|
|
135
|
-
}
|
|
136
|
-
})
|
|
137
|
-
|
|
138
|
-
test('graphql disabled by default', async ({ teardown, equal, fail }) => {
|
|
139
|
-
try {
|
|
140
|
-
const app = await buildServer(buildConfig({
|
|
141
|
-
server: {
|
|
142
|
-
hostname: '127.0.0.1',
|
|
143
|
-
port: 0,
|
|
144
|
-
healthCheck: {
|
|
145
|
-
enabled: true,
|
|
146
|
-
interval: 2000
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
plugins: {
|
|
150
|
-
paths: [join(__dirname, 'fixtures', 'hello-world-resolver.js')]
|
|
151
|
-
}
|
|
152
|
-
}))
|
|
153
|
-
await app.close()
|
|
154
|
-
fail('should have errored but did not')
|
|
155
|
-
} catch (err) {
|
|
156
|
-
equal(err.message, 'Cannot read properties of undefined (reading \'extendSchema\')')
|
|
157
|
-
}
|
|
158
|
-
})
|
|
159
|
-
|
|
160
|
-
test('graphql errors are correctly propagated in custom resolvers', async ({ teardown, equal, same }) => {
|
|
161
|
-
const app = await buildServer(buildConfig({
|
|
162
|
-
server: {
|
|
163
|
-
hostname: '127.0.0.1',
|
|
164
|
-
port: 0,
|
|
165
|
-
healthCheck: {
|
|
166
|
-
enabled: true,
|
|
167
|
-
interval: 2000
|
|
168
|
-
}
|
|
169
|
-
},
|
|
170
|
-
service: {
|
|
171
|
-
graphql: true
|
|
172
|
-
},
|
|
173
|
-
plugins: {
|
|
174
|
-
paths: [join(__dirname, 'fixtures', 'throw-resolver.js')]
|
|
175
|
-
}
|
|
176
|
-
}))
|
|
177
|
-
|
|
178
|
-
teardown(async () => {
|
|
179
|
-
await app.close()
|
|
180
|
-
})
|
|
181
|
-
await app.start()
|
|
182
|
-
|
|
183
|
-
{
|
|
184
|
-
const res = await request(`${app.url}/graphql`, {
|
|
185
|
-
method: 'POST',
|
|
186
|
-
headers: {
|
|
187
|
-
'content-type': 'application/json'
|
|
188
|
-
},
|
|
189
|
-
body: JSON.stringify({
|
|
190
|
-
query: `
|
|
191
|
-
query {
|
|
192
|
-
hello
|
|
193
|
-
}
|
|
194
|
-
`
|
|
195
|
-
})
|
|
196
|
-
})
|
|
197
|
-
equal(res.statusCode, 200, 'hello status code')
|
|
198
|
-
same(await res.body.json(), {
|
|
199
|
-
data: {
|
|
200
|
-
hello: null
|
|
201
|
-
},
|
|
202
|
-
errors: [
|
|
203
|
-
{
|
|
204
|
-
message: 'Kaboooooom!!!',
|
|
205
|
-
locations: [{
|
|
206
|
-
line: 3,
|
|
207
|
-
column: 13
|
|
208
|
-
}],
|
|
209
|
-
path: ['hello']
|
|
210
|
-
}
|
|
211
|
-
]
|
|
212
|
-
}, 'hello response')
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
{
|
|
216
|
-
const res = await request(`${app.url}/graphiql`)
|
|
217
|
-
equal(res.statusCode, 200, 'graphiql status code')
|
|
218
|
-
}
|
|
219
|
-
})
|
package/test/healthcheck.test.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { test } = require('tap')
|
|
4
|
-
const { buildServer } = require('..')
|
|
5
|
-
require('./helper')
|
|
6
|
-
const { request } = require('undici')
|
|
7
|
-
|
|
8
|
-
test('healthcheck route enabled with interval', async ({ teardown, equal, same }) => {
|
|
9
|
-
let check = true
|
|
10
|
-
const app = await buildServer({
|
|
11
|
-
server: {
|
|
12
|
-
hostname: '127.0.0.1',
|
|
13
|
-
port: 0,
|
|
14
|
-
healthCheck: {
|
|
15
|
-
interval: 2000,
|
|
16
|
-
fn: function () {
|
|
17
|
-
return check
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
metrics: false
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
teardown(async () => {
|
|
25
|
-
await app.close()
|
|
26
|
-
})
|
|
27
|
-
await app.start()
|
|
28
|
-
|
|
29
|
-
{
|
|
30
|
-
const res = await (request(`${app.url}/status`))
|
|
31
|
-
equal(res.statusCode, 200)
|
|
32
|
-
const body = await res.body.json()
|
|
33
|
-
same(body, { status: 'ok' })
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
check = false
|
|
37
|
-
|
|
38
|
-
{
|
|
39
|
-
const res = await (request(`${app.url}/status`))
|
|
40
|
-
equal(res.statusCode, 503)
|
|
41
|
-
const body = await res.body.json()
|
|
42
|
-
same(body, {
|
|
43
|
-
statusCode: 503,
|
|
44
|
-
code: 'FST_UNDER_PRESSURE',
|
|
45
|
-
error: 'Service Unavailable',
|
|
46
|
-
message: 'Service Unavailable'
|
|
47
|
-
})
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
check = true
|
|
51
|
-
})
|
|
52
|
-
|
|
53
|
-
test('healthcheck route enabled without interval', async ({ teardown, equal, same }) => {
|
|
54
|
-
const app = await buildServer({
|
|
55
|
-
server: {
|
|
56
|
-
hostname: '127.0.0.1',
|
|
57
|
-
port: 0,
|
|
58
|
-
healthCheck: true
|
|
59
|
-
},
|
|
60
|
-
metrics: false
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
teardown(async () => {
|
|
64
|
-
await app.close()
|
|
65
|
-
})
|
|
66
|
-
await app.start()
|
|
67
|
-
|
|
68
|
-
{
|
|
69
|
-
const res = await (request(`${app.url}/status`))
|
|
70
|
-
equal(res.statusCode, 200)
|
|
71
|
-
const body = await res.body.json()
|
|
72
|
-
same(body, { status: 'ok' })
|
|
73
|
-
}
|
|
74
|
-
})
|
|
75
|
-
|
|
76
|
-
test('healthcheck route disabled', async ({ teardown, equal, same }) => {
|
|
77
|
-
const app = await buildServer({
|
|
78
|
-
server: {
|
|
79
|
-
hostname: '127.0.0.1',
|
|
80
|
-
port: 0
|
|
81
|
-
},
|
|
82
|
-
metrics: false
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
teardown(async () => {
|
|
86
|
-
await app.close()
|
|
87
|
-
})
|
|
88
|
-
await app.start()
|
|
89
|
-
|
|
90
|
-
const res = await (request(`${app.url}/status`))
|
|
91
|
-
equal(res.statusCode, 404)
|
|
92
|
-
})
|
package/test/helper.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { Agent, setGlobalDispatcher } = require('undici')
|
|
4
|
-
const tap = require('tap')
|
|
5
|
-
|
|
6
|
-
const agent = new Agent({
|
|
7
|
-
keepAliveTimeout: 10,
|
|
8
|
-
keepAliveMaxTimeout: 10,
|
|
9
|
-
tls: {
|
|
10
|
-
rejectUnauthorized: false
|
|
11
|
-
}
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
setGlobalDispatcher(agent)
|
|
15
|
-
|
|
16
|
-
// This should not be needed, but a weird combination
|
|
17
|
-
// of node-tap, Windows, c8 and ESM makes this necessary.
|
|
18
|
-
tap.teardown(() => {
|
|
19
|
-
process.exit(0)
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
function buildConfig (options) {
|
|
23
|
-
const base = {
|
|
24
|
-
server: {}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return Object.assign(base, options)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
module.exports.buildConfig = buildConfig
|
package/test/https.test.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { mkdtemp, writeFile } = require('fs/promises')
|
|
4
|
-
const { tmpdir } = require('os')
|
|
5
|
-
const { join, relative } = require('path')
|
|
6
|
-
const selfCert = require('self-cert')
|
|
7
|
-
const { test } = require('tap')
|
|
8
|
-
const { Agent, setGlobalDispatcher, request } = require('undici')
|
|
9
|
-
const { buildServer } = require('..')
|
|
10
|
-
const { buildConfig } = require('./helper')
|
|
11
|
-
|
|
12
|
-
test('supports https options', async ({ teardown, equal, same, plan, comment }) => {
|
|
13
|
-
plan(6)
|
|
14
|
-
|
|
15
|
-
const { certificate, privateKey } = selfCert({})
|
|
16
|
-
const localDir = tmpdir()
|
|
17
|
-
comment(`system tmpdir ${localDir}`)
|
|
18
|
-
const tmpDir = await mkdtemp(join(localDir, 'plt-service-https-test-'))
|
|
19
|
-
comment(`writing in ${tmpDir}`)
|
|
20
|
-
const privateKeyPath = join(tmpDir, 'plt.key')
|
|
21
|
-
const certificatePath = join(tmpDir, 'plt.cert')
|
|
22
|
-
const certificateRelativePath = relative(process.cwd(), certificatePath)
|
|
23
|
-
comment(`certificate relative path ${certificateRelativePath}`)
|
|
24
|
-
|
|
25
|
-
await writeFile(privateKeyPath, privateKey)
|
|
26
|
-
await writeFile(certificatePath, certificate)
|
|
27
|
-
|
|
28
|
-
setGlobalDispatcher(new Agent({
|
|
29
|
-
connect: {
|
|
30
|
-
rejectUnauthorized: false
|
|
31
|
-
}
|
|
32
|
-
}))
|
|
33
|
-
|
|
34
|
-
const app = await buildServer(buildConfig({
|
|
35
|
-
server: {
|
|
36
|
-
hostname: '127.0.0.1',
|
|
37
|
-
port: 0,
|
|
38
|
-
https: {
|
|
39
|
-
key: privateKey,
|
|
40
|
-
cert: [{ path: certificateRelativePath }]
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}))
|
|
44
|
-
|
|
45
|
-
teardown(async () => {
|
|
46
|
-
await app.close()
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
await app.start()
|
|
50
|
-
|
|
51
|
-
equal(app.url.startsWith('https://'), true)
|
|
52
|
-
let res = await (request(`${app.url}/`))
|
|
53
|
-
equal(res.statusCode, 200)
|
|
54
|
-
let body = await res.body.json()
|
|
55
|
-
same(body, { message: 'Welcome to Platformatic! Please visit https://docs.platformatic.dev' })
|
|
56
|
-
|
|
57
|
-
await app.restart()
|
|
58
|
-
|
|
59
|
-
equal(app.url.startsWith('https://'), true)
|
|
60
|
-
res = await (request(`${app.url}/`))
|
|
61
|
-
equal(res.statusCode, 200)
|
|
62
|
-
body = await res.body.json()
|
|
63
|
-
same(body, { message: 'Welcome to Platformatic! Please visit https://docs.platformatic.dev' })
|
|
64
|
-
})
|
package/test/lambda.test.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { test } = require('tap')
|
|
4
|
-
const { buildServer } = require('..')
|
|
5
|
-
const { buildConfig } = require('./helper')
|
|
6
|
-
const { join } = require('path')
|
|
7
|
-
const awsLambdaFastify = require('@fastify/aws-lambda')
|
|
8
|
-
|
|
9
|
-
test('should respond 200 on root endpoint', async ({ teardown, equal, same, ok }) => {
|
|
10
|
-
const app = await buildServer(buildConfig({
|
|
11
|
-
server: {
|
|
12
|
-
hostname: '127.0.0.1',
|
|
13
|
-
port: 0,
|
|
14
|
-
healthCheck: {
|
|
15
|
-
enabled: true,
|
|
16
|
-
interval: 2000
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}))
|
|
20
|
-
|
|
21
|
-
teardown(async () => {
|
|
22
|
-
await app.close()
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
const handler = awsLambdaFastify(app)
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
// No browser (i.e. curl)
|
|
29
|
-
const evt = {
|
|
30
|
-
version: '2.0',
|
|
31
|
-
httpMethod: 'GET',
|
|
32
|
-
path: '/',
|
|
33
|
-
headers: {
|
|
34
|
-
},
|
|
35
|
-
cookies: [],
|
|
36
|
-
queryStringParameters: ''
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const ret = await handler(evt)
|
|
40
|
-
|
|
41
|
-
equal(ret.body, JSON.stringify({ message: 'Welcome to Platformatic! Please visit https://docs.platformatic.dev' }))
|
|
42
|
-
equal(ret.isBase64Encoded, false)
|
|
43
|
-
ok(ret.headers)
|
|
44
|
-
equal(ret.headers['content-type'], 'application/json; charset=utf-8')
|
|
45
|
-
equal(ret.headers['content-length'], '81')
|
|
46
|
-
ok(ret.headers.date)
|
|
47
|
-
equal(ret.headers.connection, 'keep-alive')
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
{
|
|
51
|
-
// browser
|
|
52
|
-
const evt = {
|
|
53
|
-
version: '2.0',
|
|
54
|
-
httpMethod: 'GET',
|
|
55
|
-
path: '/',
|
|
56
|
-
headers: {
|
|
57
|
-
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
|
|
58
|
-
},
|
|
59
|
-
cookies: [],
|
|
60
|
-
queryStringParameters: ''
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const ret = await handler(evt)
|
|
64
|
-
|
|
65
|
-
// No browser (i.e. curl)
|
|
66
|
-
equal(ret.isBase64Encoded, false)
|
|
67
|
-
ok(ret.headers)
|
|
68
|
-
equal(ret.headers['content-type'], 'text/html; charset=UTF-8')
|
|
69
|
-
ok(ret.headers.date)
|
|
70
|
-
equal(ret.headers.connection, 'keep-alive')
|
|
71
|
-
}
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
test('from a config file on disk', async ({ teardown, equal, same, ok }) => {
|
|
75
|
-
const app = await buildServer(join(__dirname, '..', 'fixtures', 'hello', 'warn-log.service.json'))
|
|
76
|
-
|
|
77
|
-
teardown(async () => {
|
|
78
|
-
await app.close()
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
const handler = awsLambdaFastify(app)
|
|
82
|
-
|
|
83
|
-
// No browser (i.e. curl)
|
|
84
|
-
const evt = {
|
|
85
|
-
version: '2.0',
|
|
86
|
-
httpMethod: 'GET',
|
|
87
|
-
path: '/',
|
|
88
|
-
headers: {
|
|
89
|
-
},
|
|
90
|
-
cookies: [],
|
|
91
|
-
queryStringParameters: ''
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const ret = await handler(evt)
|
|
95
|
-
|
|
96
|
-
equal(ret.body, JSON.stringify({ hello: 'world' }))
|
|
97
|
-
equal(ret.isBase64Encoded, false)
|
|
98
|
-
ok(ret.headers)
|
|
99
|
-
equal(ret.headers['content-type'], 'application/json; charset=utf-8')
|
|
100
|
-
equal(ret.headers['content-length'], '17')
|
|
101
|
-
ok(ret.headers.date)
|
|
102
|
-
equal(ret.headers.connection, 'keep-alive')
|
|
103
|
-
})
|