Skip to content

Commit b004e0e

Browse files
Fix mock server in ai runtime tests
Co-authored-by: Kent C. Dodds <me+github@kentcdodds.com>
1 parent 5cceefd commit b004e0e

1 file changed

Lines changed: 31 additions & 12 deletions

File tree

worker/ai-runtime.test.ts

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
/// <reference types="bun" />
2+
import { createServer } from 'node:http'
3+
import { type AddressInfo } from 'node:net'
24
import { expect, test, vi } from 'vitest'
35

46
async function loadCreateAiRuntime(cacheKey = crypto.randomUUID()) {
@@ -8,25 +10,42 @@ async function loadCreateAiRuntime(cacheKey = crypto.randomUUID()) {
810
}
911

1012
async function createMockServer() {
11-
const server = Bun.serve({
12-
port: 0,
13-
fetch(request) {
14-
const url = new URL(request.url)
15-
if (url.pathname !== '/chat') {
16-
return new Response('Not Found', { status: 404 })
17-
}
18-
return Response.json({
13+
const server = createServer((request, response) => {
14+
const url = new URL(request.url ?? '', 'http://127.0.0.1')
15+
if (url.pathname !== '/chat') {
16+
response.statusCode = 404
17+
response.end('Not Found')
18+
return
19+
}
20+
21+
response.statusCode = 200
22+
response.setHeader('Content-Type', 'application/json')
23+
response.end(
24+
JSON.stringify({
1925
kind: 'text',
2026
text: 'hello from mock runtime',
2127
chunks: ['hello ', 'from ', 'mock runtime'],
22-
})
23-
},
28+
}),
29+
)
2430
})
2531

32+
await new Promise<void>((resolve) => {
33+
server.listen(0, '127.0.0.1', resolve)
34+
})
35+
const address = server.address() as AddressInfo
36+
2637
return {
27-
baseUrl: `http://127.0.0.1:${server.port}`,
38+
baseUrl: `http://127.0.0.1:${address.port}`,
2839
[Symbol.asyncDispose]: async () => {
29-
await server.stop()
40+
await new Promise<void>((resolve, reject) => {
41+
server.close((error) => {
42+
if (error) {
43+
reject(error)
44+
return
45+
}
46+
resolve()
47+
})
48+
})
3049
},
3150
}
3251
}

0 commit comments

Comments
 (0)