Skip to content

Commit c746925

Browse files
authored
chore: migrate to node test runner (#163)
* chore: migrate to node test runner * chore: use c8 * chore: use ifError
1 parent 29f8391 commit c746925

File tree

3 files changed

+84
-113
lines changed

3 files changed

+84
-113
lines changed

.taprc

Lines changed: 0 additions & 2 deletions
This file was deleted.

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"lint": "eslint",
1010
"lint:fix": "eslint --fix",
1111
"test": "npm run test:unit && npm run test:typescript",
12-
"test:unit": "tap",
12+
"test:unit": "c8 --100 node --test",
1313
"test:typescript": "tsd"
1414
},
1515
"precommit": [
@@ -61,12 +61,11 @@
6161
"devDependencies": {
6262
"@fastify/pre-commit": "^2.1.0",
6363
"@types/node": "^22.0.0",
64+
"c8": "^10.1.3",
6465
"eslint": "^9.17.0",
6566
"fastify": "^5.0.0",
6667
"h2url": "^0.2.0",
6768
"neostandard": "^0.12.0",
68-
"semver": "^7.5.4",
69-
"tap": "^18.6.1",
7069
"tsd": "~0.31.0"
7170
},
7271
"dependencies": {

test/tests.test.js

Lines changed: 82 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
const fs = require('node:fs')
44
const join = require('node:path').join
5-
const http = require('node:http')
6-
const test = require('tap').test
5+
const { test } = require('node:test')
76
const Fastify = require('fastify')
8-
const plugin = require('../')
9-
const semver = require('semver')
7+
const plugin = require('..')
108

119
const urlHost = 'localhost'
1210
const urlForwardedHost = 'example.com'
@@ -15,173 +13,149 @@ const urlQuery = 'a=b&c=d'
1513
const httpScheme = 'http'
1614
const httpsScheme = 'https'
1715

18-
test('parses a full URI', (t) => {
19-
t.plan(10)
20-
let port
16+
test('parses a full URI', async (t) => {
17+
t.plan(11)
2118
const fastify = Fastify()
2219

2320
fastify
2421
.register(plugin)
2522
.after((err) => {
26-
if (err) t.error(err)
23+
t.assert.ifError(err)
2724
})
2825

2926
fastify.get(urlPath, (req, reply) => {
3027
const uriData = req.urlData()
31-
t.equal(uriData.host, urlHost)
32-
t.equal(uriData.port, port)
33-
t.equal(uriData.path, urlPath)
34-
t.equal(uriData.query, urlQuery)
35-
t.equal(uriData.scheme, httpScheme)
36-
t.equal(req.urlData('host'), urlHost)
37-
t.equal(req.urlData('port'), port)
38-
t.equal(req.urlData('path'), urlPath)
39-
t.equal(req.urlData('query'), urlQuery)
40-
t.equal(req.urlData('scheme'), httpScheme)
28+
t.assert.deepStrictEqual(uriData.host, urlHost)
29+
t.assert.deepStrictEqual(uriData.port, port)
30+
t.assert.deepStrictEqual(uriData.path, urlPath)
31+
t.assert.deepStrictEqual(uriData.query, urlQuery)
32+
t.assert.deepStrictEqual(uriData.scheme, httpScheme)
33+
t.assert.deepStrictEqual(req.urlData('host'), urlHost)
34+
t.assert.deepStrictEqual(req.urlData('port'), port)
35+
t.assert.deepStrictEqual(req.urlData('path'), urlPath)
36+
t.assert.deepStrictEqual(req.urlData('query'), urlQuery)
37+
t.assert.deepStrictEqual(req.urlData('scheme'), httpScheme)
4138
reply.send()
4239
})
4340

44-
fastify.listen({ port: 0 }, (err) => {
45-
fastify.server.unref()
46-
if (err) t.threw(err)
41+
await fastify.listen({ port: 0 })
42+
const port = fastify.server.address().port
43+
fastify.server.unref()
4744

48-
port = fastify.server.address().port
49-
http
50-
.get(`http://${urlHost}:${port}${urlPath}?${urlQuery}#foo`, () => {})
51-
.on('error', t.threw)
52-
})
45+
await fetch(`http://${urlHost}:${port}${urlPath}?${urlQuery}#foo`)
5346

54-
t.teardown(() => fastify.close())
47+
t.after(() => fastify.close())
5548
})
5649

57-
test('parses a full URI in HTTP2', { skip: semver.lt(process.versions.node, '8.8.0') }, (t) => {
50+
test('parses a full URI in HTTP2', async (t) => {
5851
t.plan(11)
5952

6053
const h2url = require('h2url')
6154

62-
let port
63-
let fastify
64-
try {
65-
fastify = Fastify({
66-
http2: true,
67-
https: {
68-
key: fs.readFileSync(join(__dirname, 'https', 'fastify.key')),
69-
cert: fs.readFileSync(join(__dirname, 'https', 'fastify.cert'))
70-
}
71-
})
72-
t.pass('Key/cert successfully loaded')
73-
} catch (e) {
74-
t.fail('Key/cert loading failed', e)
75-
}
55+
const fastify = Fastify({
56+
http2: true,
57+
https: {
58+
key: fs.readFileSync(join(__dirname, 'https', 'fastify.key')),
59+
cert: fs.readFileSync(join(__dirname, 'https', 'fastify.cert'))
60+
}
61+
})
7662

7763
fastify
7864
.register(plugin)
7965
.after((err) => {
80-
if (err) t.error(err)
66+
t.assert.ifError(err)
8167
})
8268

8369
fastify.get(urlPath, (req, reply) => {
8470
const uriData = req.urlData()
85-
t.equal(uriData.host, urlHost)
86-
t.equal(uriData.port, port)
87-
t.equal(uriData.path, urlPath)
88-
t.equal(uriData.query, urlQuery)
89-
t.equal(uriData.scheme, httpsScheme)
90-
t.equal(req.urlData('host'), urlHost)
91-
t.equal(req.urlData('port'), port)
92-
t.equal(req.urlData('path'), urlPath)
93-
t.equal(req.urlData('query'), urlQuery)
94-
t.equal(req.urlData('scheme'), httpsScheme)
71+
t.assert.deepStrictEqual(uriData.host, urlHost)
72+
t.assert.deepStrictEqual(uriData.port, port)
73+
t.assert.deepStrictEqual(uriData.path, urlPath)
74+
t.assert.deepStrictEqual(uriData.query, urlQuery)
75+
t.assert.deepStrictEqual(uriData.scheme, httpsScheme)
76+
t.assert.deepStrictEqual(req.urlData('host'), urlHost)
77+
t.assert.deepStrictEqual(req.urlData('port'), port)
78+
t.assert.deepStrictEqual(req.urlData('path'), urlPath)
79+
t.assert.deepStrictEqual(req.urlData('query'), urlQuery)
80+
t.assert.deepStrictEqual(req.urlData('scheme'), httpsScheme)
9581
reply.send()
9682
})
9783

98-
fastify.listen({ port: 0 }, (err) => {
99-
fastify.server.unref()
100-
if (err) t.threw(err)
84+
await fastify.listen({ port: 0 })
85+
const port = fastify.server.address().port
86+
fastify.server.unref()
10187

102-
port = fastify.server.address().port
103-
h2url.concat({ url: `https://${urlHost}:${port}${urlPath}?${urlQuery}#foo` }).then(() => {})
104-
})
88+
await h2url.concat({ url: `https://${urlHost}:${port}${urlPath}?${urlQuery}#foo` })
10589

106-
t.teardown(() => fastify.close())
90+
t.after(() => fastify.close())
10791
})
10892

109-
test('parses a full URI using X-Forwarded-Host when trustProxy is set', (t) => {
110-
t.plan(10)
111-
let port
93+
test('parses a full URI using X-Forwarded-Host when trustProxy is set', async (t) => {
94+
t.plan(11)
11295
const fastify = Fastify({ trustProxy: true }) // Setting trustProxy true will use X-Forwarded-Host header if set
11396

11497
fastify
11598
.register(plugin)
11699
.after((err) => {
117-
if (err) t.error(err)
100+
t.assert.ifError(err)
118101
})
119102

120103
fastify.get(urlPath, (req, reply) => {
121104
const uriData = req.urlData()
122-
t.equal(uriData.host, urlForwardedHost)
123-
t.equal(uriData.port, port)
124-
t.equal(uriData.path, urlPath)
125-
t.equal(uriData.query, urlQuery)
126-
t.equal(uriData.scheme, httpScheme)
127-
t.equal(req.urlData('host'), urlForwardedHost)
128-
t.equal(req.urlData('port'), port)
129-
t.equal(req.urlData('path'), urlPath)
130-
t.equal(req.urlData('query'), urlQuery)
131-
t.equal(req.urlData('scheme'), httpScheme)
105+
t.assert.deepStrictEqual(uriData.host, urlForwardedHost)
106+
t.assert.deepStrictEqual(uriData.port, port)
107+
t.assert.deepStrictEqual(uriData.path, urlPath)
108+
t.assert.deepStrictEqual(uriData.query, urlQuery)
109+
t.assert.deepStrictEqual(uriData.scheme, httpScheme)
110+
t.assert.deepStrictEqual(req.urlData('host'), urlForwardedHost)
111+
t.assert.deepStrictEqual(req.urlData('port'), port)
112+
t.assert.deepStrictEqual(req.urlData('path'), urlPath)
113+
t.assert.deepStrictEqual(req.urlData('query'), urlQuery)
114+
t.assert.deepStrictEqual(req.urlData('scheme'), httpScheme)
132115
reply.send()
133116
})
134117

135-
fastify.listen({ port: 0 }, (err) => {
136-
fastify.server.unref()
137-
if (err) t.threw(err)
118+
await fastify.listen({ port: 0 })
119+
const port = fastify.server.address().port
120+
fastify.server.unref()
138121

139-
port = fastify.server.address().port
140-
http
141-
.get(`http://${urlHost}:${port}${urlPath}?${urlQuery}#foo`, { headers: { 'X-Forwarded-Host': `${urlForwardedHost}:${port}` } }, () => {})
142-
.on('error', t.threw)
143-
})
122+
await fetch(`http://${urlHost}:${fastify.server.address().port}${urlPath}?${urlQuery}#foo`, { headers: { 'X-Forwarded-Host': `${urlForwardedHost}:${port}` } })
144123

145-
t.teardown(() => fastify.close())
124+
t.after(() => fastify.close())
146125
})
147126

148-
test('parses a full URI ignoring X-Forwarded-Host when trustProxy is not set', (t) => {
149-
t.plan(10)
150-
let port
127+
test('parses a full URI ignoring X-Forwarded-Host when trustProxy is not set', async (t) => {
128+
t.plan(11)
151129
const fastify = Fastify()
152130

153131
fastify
154132
.register(plugin)
155133
.after((err) => {
156-
if (err) t.error(err)
134+
t.assert.ifError(err)
157135
})
158136

159137
fastify.get(urlPath, (req, reply) => {
160138
const uriData = req.urlData()
161-
t.equal(uriData.host, urlHost)
162-
t.equal(uriData.port, port)
163-
t.equal(uriData.path, urlPath)
164-
t.equal(uriData.query, urlQuery)
165-
t.equal(uriData.scheme, httpScheme)
166-
t.equal(req.urlData('host'), urlHost)
167-
t.equal(req.urlData('port'), port)
168-
t.equal(req.urlData('path'), urlPath)
169-
t.equal(req.urlData('query'), urlQuery)
170-
t.equal(req.urlData('scheme'), httpScheme)
139+
t.assert.deepStrictEqual(uriData.host, urlHost)
140+
t.assert.deepStrictEqual(uriData.port, port)
141+
t.assert.deepStrictEqual(uriData.path, urlPath)
142+
t.assert.deepStrictEqual(uriData.query, urlQuery)
143+
t.assert.deepStrictEqual(uriData.scheme, httpScheme)
144+
t.assert.deepStrictEqual(req.urlData('host'), urlHost)
145+
t.assert.deepStrictEqual(req.urlData('port'), port)
146+
t.assert.deepStrictEqual(req.urlData('path'), urlPath)
147+
t.assert.deepStrictEqual(req.urlData('query'), urlQuery)
148+
t.assert.deepStrictEqual(req.urlData('scheme'), httpScheme)
171149
reply.send()
172150
})
173151

174-
fastify.listen({ port: 0 }, (err) => {
175-
fastify.server.unref()
176-
if (err) t.threw(err)
152+
await fastify.listen({ port: 0 })
153+
const port = fastify.server.address().port
154+
fastify.server.unref()
177155

178-
port = fastify.server.address().port
179-
http
180-
.get(`http://${urlHost}:${port}${urlPath}?${urlQuery}#foo`, { headers: { 'X-Forwarded-Host': `${urlForwardedHost}:${port}` } }, () => {})
181-
.on('error', t.threw)
182-
})
156+
await fetch(`http://${urlHost}:${fastify.server.address().port}${urlPath}?${urlQuery}#foo`, { headers: { 'X-Forwarded-Host': `${urlForwardedHost}:${port}` } })
183157

184-
t.teardown(() => fastify.close())
158+
t.after(() => fastify.close())
185159
})
186160

187161
test('should parse path without a port specified', async (t) => {
@@ -196,6 +170,6 @@ test('should parse path without a port specified', async (t) => {
196170
})
197171

198172
const res = await fastify.inject({ url: '/', headers: { host: 'localhost' } })
199-
t.equal(res.statusCode, 200)
200-
t.equal(res.body, 'That worked, path is /')
173+
t.assert.deepStrictEqual(res.statusCode, 200)
174+
t.assert.deepStrictEqual(res.body, 'That worked, path is /')
201175
})

0 commit comments

Comments
 (0)