mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-08-13 14:37:26 +00:00
Fallback invalid CommandBoard API ports (#39)
Co-authored-by: Codex Microtask Operator <codex-microtask@example.com>
This commit is contained in:
parent
e89c10cc80
commit
3afda8c147
2 changed files with 14 additions and 2 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import type { Server } from "node:http";
|
||||
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
||||
import { createCommandBoardServer } from "./index.js";
|
||||
import { createCommandBoardServer, readPort } from "./index.js";
|
||||
|
||||
let server: Server;
|
||||
let baseUrl: string;
|
||||
|
|
@ -22,6 +22,13 @@ afterAll(async () => {
|
|||
});
|
||||
|
||||
describe("CommandBoard API contracts", () => {
|
||||
it("falls back when PORT is invalid", () => {
|
||||
expect(readPort("not-a-port", 4010)).toBe(4010);
|
||||
expect(readPort("0", 4010)).toBe(4010);
|
||||
expect(readPort("65536", 4010)).toBe(4010);
|
||||
expect(readPort("4020", 4010)).toBe(4020);
|
||||
});
|
||||
|
||||
it("exposes root API index", async () => {
|
||||
const response = await fetch(`${baseUrl}/`);
|
||||
const body = await response.json() as { ok: boolean; service: string; endpoints: string[] };
|
||||
|
|
|
|||
|
|
@ -396,7 +396,7 @@ function formattedDiscoverMatch(format: "rss" | "opml" | "atom" | "json-feed", e
|
|||
}
|
||||
}
|
||||
|
||||
export function startCommandBoardServer(port = Number(process.env.PORT ?? 4010)) {
|
||||
export function startCommandBoardServer(port = readPort(process.env.PORT, 4010)) {
|
||||
const server = createCommandBoardServer();
|
||||
server.listen(port, () => {
|
||||
console.log(`CommandBoard.run API listening on http://localhost:${port}`);
|
||||
|
|
@ -404,6 +404,11 @@ export function startCommandBoardServer(port = Number(process.env.PORT ?? 4010))
|
|||
return server;
|
||||
}
|
||||
|
||||
export function readPort(value: string | undefined, fallback: number) {
|
||||
const parsed = Number(value ?? fallback);
|
||||
return Number.isInteger(parsed) && parsed > 0 && parsed <= 65535 ? parsed : fallback;
|
||||
}
|
||||
|
||||
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
||||
startCommandBoardServer();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue