mirror of
https://github.com/openclaw/openclaw.git
synced 2026-02-19 18:39:20 -05:00
87 lines
2.5 KiB
TypeScript
87 lines
2.5 KiB
TypeScript
import { afterEach, describe, expect, it } from "vitest";
|
|
import { startBrowserBridgeServer, stopBrowserBridgeServer } from "./bridge-server.js";
|
|
import type { ResolvedBrowserConfig } from "./config.js";
|
|
import {
|
|
DEFAULT_OPENCLAW_BROWSER_COLOR,
|
|
DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME,
|
|
} from "./constants.js";
|
|
|
|
function buildResolvedConfig(): ResolvedBrowserConfig {
|
|
return {
|
|
enabled: true,
|
|
evaluateEnabled: false,
|
|
controlPort: 0,
|
|
cdpProtocol: "http",
|
|
cdpHost: "127.0.0.1",
|
|
cdpIsLoopback: true,
|
|
remoteCdpTimeoutMs: 1500,
|
|
remoteCdpHandshakeTimeoutMs: 3000,
|
|
extraArgs: [],
|
|
color: DEFAULT_OPENCLAW_BROWSER_COLOR,
|
|
executablePath: undefined,
|
|
headless: true,
|
|
noSandbox: false,
|
|
attachOnly: true,
|
|
defaultProfile: DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME,
|
|
profiles: {
|
|
[DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME]: {
|
|
cdpPort: 1,
|
|
color: DEFAULT_OPENCLAW_BROWSER_COLOR,
|
|
},
|
|
},
|
|
} as unknown as ResolvedBrowserConfig;
|
|
}
|
|
|
|
describe("startBrowserBridgeServer auth", () => {
|
|
const servers: Array<{ stop: () => Promise<void> }> = [];
|
|
|
|
afterEach(async () => {
|
|
while (servers.length) {
|
|
const s = servers.pop();
|
|
if (s) {
|
|
await s.stop();
|
|
}
|
|
}
|
|
});
|
|
|
|
it("rejects unauthenticated requests when authToken is set", async () => {
|
|
const bridge = await startBrowserBridgeServer({
|
|
resolved: buildResolvedConfig(),
|
|
authToken: "secret-token",
|
|
});
|
|
servers.push({ stop: () => stopBrowserBridgeServer(bridge.server) });
|
|
|
|
const unauth = await fetch(`${bridge.baseUrl}/`);
|
|
expect(unauth.status).toBe(401);
|
|
|
|
const authed = await fetch(`${bridge.baseUrl}/`, {
|
|
headers: { Authorization: "Bearer secret-token" },
|
|
});
|
|
expect(authed.status).toBe(200);
|
|
});
|
|
|
|
it("accepts x-openclaw-password when authPassword is set", async () => {
|
|
const bridge = await startBrowserBridgeServer({
|
|
resolved: buildResolvedConfig(),
|
|
authPassword: "secret-password",
|
|
});
|
|
servers.push({ stop: () => stopBrowserBridgeServer(bridge.server) });
|
|
|
|
const unauth = await fetch(`${bridge.baseUrl}/`);
|
|
expect(unauth.status).toBe(401);
|
|
|
|
const authed = await fetch(`${bridge.baseUrl}/`, {
|
|
headers: { "x-openclaw-password": "secret-password" },
|
|
});
|
|
expect(authed.status).toBe(200);
|
|
});
|
|
|
|
it("requires auth params", async () => {
|
|
await expect(
|
|
startBrowserBridgeServer({
|
|
resolved: buildResolvedConfig(),
|
|
}),
|
|
).rejects.toThrow(/requires auth/i);
|
|
});
|
|
});
|