Files
horus-3d/tests/unit/studioUpstreamGatewaySettings.test.ts
Luke The Dev 4fa4f13558 First Release of Claw3D (#11)
Co-authored-by: iamlukethedev <iamlukethedev@users.noreply.github.com>
2026-03-19 23:14:04 -05:00

59 lines
2.1 KiB
TypeScript

import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { afterEach, describe, expect, it } from "vitest";
const makeTempDir = (name: string) => fs.mkdtempSync(path.join(os.tmpdir(), `${name}-`));
describe("server studio upstream gateway settings", () => {
const priorStateDir = process.env.OPENCLAW_STATE_DIR;
let tempDir: string | null = null;
afterEach(() => {
process.env.OPENCLAW_STATE_DIR = priorStateDir;
if (tempDir) {
fs.rmSync(tempDir, { recursive: true, force: true });
tempDir = null;
}
});
it("falls back to openclaw.json token/port when studio settings are missing", async () => {
tempDir = makeTempDir("studio-upstream-openclaw-defaults");
process.env.OPENCLAW_STATE_DIR = tempDir;
fs.writeFileSync(
path.join(tempDir, "openclaw.json"),
JSON.stringify({ gateway: { port: 18790, auth: { token: "tok" } } }, null, 2),
"utf8"
);
const { loadUpstreamGatewaySettings } = await import("../../server/studio-settings");
const settings = loadUpstreamGatewaySettings(process.env);
expect(settings.url).toBe("ws://localhost:18790");
expect(settings.token).toBe("tok");
});
it("keeps a configured url and fills token from openclaw.json when missing", async () => {
tempDir = makeTempDir("studio-upstream-url-keep");
process.env.OPENCLAW_STATE_DIR = tempDir;
fs.mkdirSync(path.join(tempDir, "claw3d"), { recursive: true });
fs.writeFileSync(
path.join(tempDir, "claw3d", "settings.json"),
JSON.stringify({ gateway: { url: "ws://gateway.example:18789", token: "" } }, null, 2),
"utf8"
);
fs.writeFileSync(
path.join(tempDir, "openclaw.json"),
JSON.stringify({ gateway: { port: 18789, auth: { token: "tok-local" } } }, null, 2),
"utf8"
);
const { loadUpstreamGatewaySettings } = await import("../../server/studio-settings");
const settings = loadUpstreamGatewaySettings(process.env);
expect(settings.url).toBe("ws://gateway.example:18789");
expect(settings.token).toBe("tok-local");
});
});