Spaces:
Sleeping
Sleeping
| import test from "node:test"; | |
| import assert from "node:assert/strict"; | |
| import net from "node:net"; | |
| import { HistoryStore } from "./history-store.mjs"; | |
| import { ApiPoolProxyManager } from "./api-pool-proxy-manager.mjs"; | |
| function listenOnce(port) { | |
| return new Promise((resolve, reject) => { | |
| const server = net.createServer(); | |
| server.once("error", reject); | |
| server.listen(port, "127.0.0.1", () => { | |
| server.off("error", reject); | |
| resolve(server); | |
| }); | |
| }); | |
| } | |
| test("ApiPoolProxyManager reports port conflicts with 409", async () => { | |
| const occupied = await listenOnce(0); | |
| const address = occupied.address(); | |
| const port = typeof address === "object" && address ? address.port : 8789; | |
| const historyStore = new HistoryStore("/tmp/api-pool-proxy-manager-test"); | |
| historyStore.items = []; | |
| historyStore.load = async () => {}; | |
| historyStore.add = async () => {}; | |
| const manager = new ApiPoolProxyManager(historyStore); | |
| try { | |
| await assert.rejects( | |
| manager.start({ | |
| provider: "codex", | |
| host: "127.0.0.1", | |
| port, | |
| }), | |
| (error) => error?.statusCode === 409 && new RegExp(String(port)).test(error.message), | |
| ); | |
| } finally { | |
| await new Promise((resolve, reject) => occupied.close((error) => (error ? reject(error) : resolve()))); | |
| } | |
| }); | |