39 lines
1.7 KiB
TypeScript
39 lines
1.7 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { test } from "bun:test";
|
|
|
|
import { applyCloudApiImageEnv, parsePort, parseTimeout } from "./runtime-options.ts";
|
|
|
|
test("parsePort preserves current hwlab-cloud-api port fallback behavior", () => {
|
|
assert.equal(parsePort(undefined, 6667), 6667);
|
|
assert.equal(parsePort("", 6667), 6667);
|
|
assert.equal(parsePort("abc", 6667), 6667);
|
|
assert.equal(parsePort("-1", 6667), 6667);
|
|
assert.equal(parsePort("65536", 6667), 6667);
|
|
assert.equal(parsePort("0", 6667), 0);
|
|
assert.equal(parsePort("19667", 6667), 19667);
|
|
});
|
|
|
|
test("parseTimeout clamps parsed integer values to the configured range", () => {
|
|
assert.equal(parseTimeout(undefined, 1200000, { min: 1000, max: 2400000 }), 1200000);
|
|
assert.equal(parseTimeout("abc", 1200000, { min: 1000, max: 2400000 }), 1200000);
|
|
assert.equal(parseTimeout("1", 1200000, { min: 1000, max: 2400000 }), 1000);
|
|
assert.equal(parseTimeout("99999999", 1200000, { min: 1000, max: 2400000 }), 2400000);
|
|
assert.equal(parseTimeout("1500", 1200000, { min: 1000, max: 2400000 }), 1500);
|
|
});
|
|
|
|
test("applyCloudApiImageEnv derives image identity from commit without overriding explicit values", () => {
|
|
const env = { HWLAB_COMMIT_ID: "abcdef1234567890" };
|
|
applyCloudApiImageEnv(env);
|
|
assert.equal(env.HWLAB_IMAGE, "ghcr.io/pikastech/hwlab-cloud-api:abcdef1");
|
|
assert.equal(env.HWLAB_IMAGE_TAG, "abcdef1");
|
|
|
|
const explicit = {
|
|
HWLAB_GIT_SHA: "11111112222222",
|
|
HWLAB_IMAGE: "registry.local/custom:tag",
|
|
HWLAB_IMAGE_TAG: "custom"
|
|
};
|
|
applyCloudApiImageEnv(explicit);
|
|
assert.equal(explicit.HWLAB_IMAGE, "registry.local/custom:tag");
|
|
assert.equal(explicit.HWLAB_IMAGE_TAG, "custom");
|
|
});
|