Files
openwork/apps/app/tests/workspace-endpoint.test.ts

60 lines
2.2 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { resolveWorkspaceEndpoint, workspaceServerId } from "../src/app/lib/workspace-endpoint";
describe("workspace endpoint resolution", () => {
test("local workspaces use the local server and local workspace id", () => {
const endpoint = resolveWorkspaceEndpoint({
id: "ws_local",
name: "Local",
path: "/tmp/ws-local",
preset: "minimal",
workspaceType: "local",
}, {
baseUrl: "http://127.0.0.1:4096",
token: "local-token",
});
expect(endpoint?.workspaceId).toBe("ws_local");
expect(endpoint?.baseUrl).toBe("http://127.0.0.1:4096");
expect(endpoint?.isRemote).toBe(false);
expect(endpoint?.mountedBaseUrl).toBe("http://127.0.0.1:4096/workspace/ws_local");
expect(endpoint?.opencodeBaseUrl).toBe("http://127.0.0.1:4096/workspace/ws_local/opencode");
expect(endpoint?.token).toBe("local-token");
});
test("remote workspaces use the owning worker URL and server-side workspace id", () => {
const endpoint = resolveWorkspaceEndpoint({
id: "rem_ui-workspace-b",
name: "Remote",
path: "/workspace/server-workspace-b",
preset: "minimal",
workspaceType: "remote",
baseUrl: "https://worker.example.test",
openworkToken: "remote-token",
openworkWorkspaceId: "server-workspace-b",
}, {
baseUrl: "http://127.0.0.1:4096",
token: "local-token",
});
expect(endpoint?.workspaceId).toBe("server-workspace-b");
expect(endpoint?.baseUrl).toBe("https://worker.example.test");
expect(endpoint?.isRemote).toBe(true);
expect(endpoint?.mountedBaseUrl).toBe("https://worker.example.test/workspace/server-workspace-b");
expect(endpoint?.opencodeBaseUrl).toBe("https://worker.example.test/workspace/server-workspace-b/opencode");
expect(endpoint?.token).toBe("remote-token");
});
test("remote workspace ids fall back to stripping rem_ when no explicit server id exists", () => {
expect(workspaceServerId({
id: "rem_workspace-c",
name: "Remote fallback",
path: "/workspace/workspace-c",
preset: "minimal",
workspaceType: "remote",
baseUrl: "https://worker.example.test",
})).toBe("workspace-c");
});
});