Skip to content

Commit f7c8db8

Browse files
authored
feat: port remaining fetch tests to node test runner (#2587)
1 parent 990b96e commit f7c8db8

18 files changed

+483
-568
lines changed

test/fetch/integrity.js

+30-32
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict'
22

3-
const { test } = require('tap')
3+
const { test } = require('node:test')
4+
const assert = require('node:assert')
45
const { createServer } = require('http')
56
const { createHash, getHashes } = require('crypto')
67
const { gzipSync } = require('zlib')
@@ -14,49 +15,46 @@ setGlobalDispatcher(new Agent({
1415
keepAliveMaxTimeout: 1
1516
}))
1617

17-
test('request with correct integrity checksum', (t) => {
18+
test('request with correct integrity checksum', (t, done) => {
1819
const body = 'Hello world!'
1920
const hash = createHash('sha256').update(body).digest('base64')
2021

2122
const server = createServer((req, res) => {
2223
res.end(body)
2324
})
2425

25-
t.teardown(server.close.bind(server))
26+
t.after(server.close.bind(server))
2627

2728
server.listen(0, async () => {
2829
const response = await fetch(`http://localhost:${server.address().port}`, {
2930
integrity: `sha256-${hash}`
3031
})
31-
t.strictSame(body, await response.text())
32-
t.end()
32+
assert.strictEqual(body, await response.text())
33+
done()
3334
})
3435
})
3536

36-
test('request with wrong integrity checksum', (t) => {
37+
test('request with wrong integrity checksum', async (t) => {
3738
const body = 'Hello world!'
3839
const hash = 'c0535e4be2b79ffd93291305436bf889314e4a3faec05ecffcbb7df31ad9e51b'
3940

4041
const server = createServer((req, res) => {
4142
res.end(body)
42-
})
43+
}).listen(0)
4344

44-
t.teardown(server.close.bind(server))
45+
t.after(server.close.bind(server))
46+
await once(server, 'listening')
4547

46-
server.listen(0, () => {
47-
fetch(`http://localhost:${server.address().port}`, {
48-
integrity: `sha256-${hash}`
49-
}).then(response => {
50-
t.pass('request did not fail')
51-
}).catch((err) => {
52-
t.equal(err.cause.message, 'integrity mismatch')
53-
}).finally(() => {
54-
t.end()
55-
})
48+
const expectedError = new TypeError('fetch failed', {
49+
cause: new Error('integrity mismatch')
5650
})
51+
52+
await assert.rejects(fetch(`http://localhost:${server.address().port}`, {
53+
integrity: `sha256-${hash}`
54+
}), expectedError)
5755
})
5856

59-
test('request with integrity checksum on encoded body', (t) => {
57+
test('request with integrity checksum on encoded body', (t, done) => {
6058
const body = 'Hello world!'
6159
const hash = createHash('sha256').update(body).digest('base64')
6260

@@ -65,14 +63,14 @@ test('request with integrity checksum on encoded body', (t) => {
6563
res.end(gzipSync(body))
6664
})
6765

68-
t.teardown(server.close.bind(server))
66+
t.after(server.close.bind(server))
6967

7068
server.listen(0, async () => {
7169
const response = await fetch(`http://localhost:${server.address().port}`, {
7270
integrity: `sha256-${hash}`
7371
})
74-
t.strictSame(body, await response.text())
75-
t.end()
72+
assert.strictEqual(body, await response.text())
73+
done()
7674
})
7775
})
7876

@@ -81,10 +79,10 @@ test('request with a totally incorrect integrity', async (t) => {
8179
res.end()
8280
}).listen(0)
8381

84-
t.teardown(server.close.bind(server))
82+
t.after(server.close.bind(server))
8583
await once(server, 'listening')
8684

87-
await t.resolves(fetch(`http://localhost:${server.address().port}`, {
85+
await assert.doesNotReject(fetch(`http://localhost:${server.address().port}`, {
8886
integrity: 'what-integrityisthis'
8987
}))
9088
})
@@ -97,10 +95,10 @@ test('request with mixed in/valid integrities', async (t) => {
9795
res.end(body)
9896
}).listen(0)
9997

100-
t.teardown(server.close.bind(server))
98+
t.after(server.close.bind(server))
10199
await once(server, 'listening')
102100

103-
await t.resolves(fetch(`http://localhost:${server.address().port}`, {
101+
await assert.doesNotReject(fetch(`http://localhost:${server.address().port}`, {
104102
integrity: `invalid-integrity sha256-${hash}`
105103
}))
106104
})
@@ -113,16 +111,16 @@ test('request with sha384 hash', { skip: !supportedHashes.includes('sha384') },
113111
res.end(body)
114112
}).listen(0)
115113

116-
t.teardown(server.close.bind(server))
114+
t.after(server.close.bind(server))
117115
await once(server, 'listening')
118116

119117
// request should succeed
120-
await t.resolves(fetch(`http://localhost:${server.address().port}`, {
118+
await assert.doesNotReject(fetch(`http://localhost:${server.address().port}`, {
121119
integrity: `sha384-${hash}`
122120
}))
123121

124122
// request should fail
125-
await t.rejects(fetch(`http://localhost:${server.address().port}`, {
123+
await assert.rejects(fetch(`http://localhost:${server.address().port}`, {
126124
integrity: 'sha384-ypeBEsobvcr6wjGzmiPcTaeG7/gUfE5yuYB3ha/uSLs='
127125
}))
128126
})
@@ -135,16 +133,16 @@ test('request with sha512 hash', { skip: !supportedHashes.includes('sha512') },
135133
res.end(body)
136134
}).listen(0)
137135

138-
t.teardown(server.close.bind(server))
136+
t.after(server.close.bind(server))
139137
await once(server, 'listening')
140138

141139
// request should succeed
142-
await t.resolves(fetch(`http://localhost:${server.address().port}`, {
140+
await assert.doesNotReject(fetch(`http://localhost:${server.address().port}`, {
143141
integrity: `sha512-${hash}`
144142
}))
145143

146144
// request should fail
147-
await t.rejects(fetch(`http://localhost:${server.address().port}`, {
145+
await assert.rejects(fetch(`http://localhost:${server.address().port}`, {
148146
integrity: 'sha512-ypeBEsobvcr6wjGzmiPcTaeG7/gUfE5yuYB3ha/uSLs='
149147
}))
150148
})

test/fetch/issue-1447.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
'use strict'
22

3-
const { test } = require('tap')
3+
const { test } = require('node:test')
4+
const { tspl } = require('@matteo.collina/tspl')
45

56
const undici = require('../..')
67
const { fetch: theoreticalGlobalFetch } = require('../../undici-fetch')
78

89
test('Mocking works with both fetches', async (t) => {
10+
const { strictEqual } = tspl(t, { plan: 3 })
11+
912
const mockAgent = new undici.MockAgent()
1013
const body = JSON.stringify({ foo: 'bar' })
1114

@@ -17,7 +20,7 @@ test('Mocking works with both fetches', async (t) => {
1720
path: '/path',
1821
method: 'POST',
1922
body (bodyString) {
20-
t.equal(bodyString, body)
23+
strictEqual(bodyString, body)
2124
return true
2225
}
2326
}).reply(200, { ok: 1 }).times(2)
@@ -35,6 +38,4 @@ test('Mocking works with both fetches', async (t) => {
3538
method: 'POST',
3639
body
3740
})
38-
39-
t.end()
4041
})

test/fetch/issue-2009.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
11
'use strict'
22

3-
const { test } = require('tap')
3+
const { test } = require('node:test')
4+
const { tspl } = require('@matteo.collina/tspl')
45
const { fetch } = require('../..')
56
const { createServer } = require('http')
67
const { once } = require('events')
78

89
test('issue 2009', async (t) => {
10+
const { doesNotReject } = tspl(t, { plan: 10 })
11+
912
const server = createServer((req, res) => {
1013
res.setHeader('a', 'b')
1114
res.flushHeaders()
1215

1316
res.socket.end()
1417
}).listen(0)
1518

16-
t.teardown(server.close.bind(server))
19+
t.after(server.close.bind(server))
1720
await once(server, 'listening')
1821

1922
for (let i = 0; i < 10; i++) {
20-
await t.resolves(
23+
await doesNotReject(
2124
fetch(`http://localhost:${server.address().port}`).then(
2225
async (resp) => {
2326
await resp.body.cancel('Some message')

test/fetch/issue-2021.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict'
22

3-
const { test } = require('tap')
3+
const { test } = require('node:test')
4+
const assert = require('node:assert')
45
const { once } = require('events')
56
const { createServer } = require('http')
67
const { fetch } = require('../..')
@@ -17,12 +18,12 @@ test('content-length header is removed on redirect', async (t) => {
1718
res.end()
1819
}).listen(0).unref()
1920

20-
t.teardown(server.close.bind(server))
21+
t.after(server.close.bind(server))
2122
await once(server, 'listening')
2223

2324
const body = 'a+b+c'
2425

25-
await t.resolves(fetch(`http://localhost:${server.address().port}/redirect`, {
26+
await assert.doesNotReject(fetch(`http://localhost:${server.address().port}/redirect`, {
2627
method: 'POST',
2728
body,
2829
headers: {

test/fetch/issue-2242.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
'use strict'
22

3-
const { test } = require('tap')
3+
const { test } = require('node:test')
4+
const assert = require('node:assert')
45
const { fetch } = require('../..')
56

6-
test('fetch with signal already aborted', async (t) => {
7-
await t.rejects(fetch('http://localhost', { signal: AbortSignal.abort('Already aborted') }), 'Already aborted')
7+
test('fetch with signal already aborted', async () => {
8+
await assert.rejects(
9+
fetch('http://localhost', {
10+
signal: AbortSignal.abort('Already aborted')
11+
}),
12+
/Already aborted/
13+
)
814
})

test/fetch/issue-2318.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
'use strict'
22

3-
const { test } = require('tap')
3+
const { test } = require('node:test')
4+
const { tspl } = require('@matteo.collina/tspl')
45
const { once } = require('events')
56
const { createServer } = require('http')
67
const { fetch } = require('../..')
78

89
test('Undici overrides user-provided `Host` header', async (t) => {
9-
t.plan(1)
10+
const { strictEqual } = tspl(t, { plan: 1 })
1011

1112
const server = createServer((req, res) => {
12-
t.equal(req.headers.host, `localhost:${server.address().port}`)
13+
strictEqual(req.headers.host, `localhost:${server.address().port}`)
1314

1415
res.end()
1516
}).listen(0)
1617

17-
t.teardown(server.close.bind(server))
18+
t.after(server.close.bind(server))
1819
await once(server, 'listening')
1920

2021
await fetch(`http://localhost:${server.address().port}`, {

test/fetch/issue-node-46525.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22

33
const { once } = require('events')
44
const { createServer } = require('http')
5-
const { test } = require('tap')
5+
const { test } = require('node:test')
66
const { fetch } = require('../..')
77

88
// https://github.com/nodejs/node/issues/46525
99
test('No warning when reusing AbortController', async (t) => {
10-
function onWarning (error) {
11-
t.error(error, 'Got warning')
10+
function onWarning () {
11+
throw new Error('Got warning')
1212
}
1313

1414
const server = createServer((req, res) => res.end()).listen(0)
1515

1616
await once(server, 'listening')
1717

1818
process.on('warning', onWarning)
19-
t.teardown(() => {
19+
t.after(() => {
2020
process.off('warning', onWarning)
2121
return server.close()
2222
})

0 commit comments

Comments
 (0)