11/// <reference types="bun" />
2+ import { createServer } from 'node:http'
3+ import { type AddressInfo } from 'node:net'
24import { expect , test , vi } from 'vitest'
35
46async function loadCreateAiRuntime ( cacheKey = crypto . randomUUID ( ) ) {
@@ -8,25 +10,42 @@ async function loadCreateAiRuntime(cacheKey = crypto.randomUUID()) {
810}
911
1012async 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