|
17 | 17 | import { describe, it, before, after } from 'node:test'; |
18 | 18 | import { expect } from 'expect'; |
19 | 19 | import * as grpc from '@grpc/grpc-js'; |
20 | | -import { startServer } from '../src/server.js'; |
21 | 20 | import { grpc as healthProto } from '../src/proto/health.js'; |
| 21 | +import { createGrpcServer } from '../src/server.js'; |
22 | 22 |
|
23 | | -const TEST_PORT = 50152; |
24 | 23 | const HEALTH_SERVICE_NAME = 'grpc.health.v1.Health'; |
25 | 24 |
|
| 25 | +/** |
| 26 | + * Start a test server on a dynamically assigned port |
| 27 | + */ |
| 28 | +async function startTestServer(): Promise<{ server: grpc.Server; port: number }> { |
| 29 | + return new Promise((resolve, reject) => { |
| 30 | + const server = createGrpcServer(); |
| 31 | + server.bindAsync('0.0.0.0:0', grpc.ServerCredentials.createInsecure(), (error, port) => { |
| 32 | + if (error) { |
| 33 | + reject(error); |
| 34 | + } else { |
| 35 | + resolve({ server, port }); |
| 36 | + } |
| 37 | + }); |
| 38 | + }); |
| 39 | +} |
| 40 | + |
26 | 41 | /** |
27 | 42 | * Create a gRPC client for the Health service |
28 | 43 | */ |
@@ -84,8 +99,9 @@ describe('Health service', () => { |
84 | 99 | let client: ReturnType<typeof createHealthClient>; |
85 | 100 |
|
86 | 101 | before(async () => { |
87 | | - server = await startServer(TEST_PORT); |
88 | | - client = createHealthClient(TEST_PORT); |
| 102 | + const testServer = await startTestServer(); |
| 103 | + server = testServer.server; |
| 104 | + client = createHealthClient(testServer.port); |
89 | 105 | }); |
90 | 106 |
|
91 | 107 | after(async () => { |
|
0 commit comments