Files
AI-Profile-Router/integrations/openclaw-athena-talk/test-browser.mjs
T

76 lines
2.9 KiB
JavaScript

import assert from "node:assert/strict";
import { createServer } from "node:http";
import { test } from "node:test";
import plugin from "./dist/index.js";
async function listen(server) {
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
return `http://127.0.0.1:${server.address().port}`;
}
test("browser session signs a short-lived token and proxies the SDP offer", async () => {
let upstreamCalls = 0;
const upstream = createServer(async (req, res) => {
upstreamCalls += 1;
assert.equal(req.method, "POST");
assert.match(req.headers.authorization, /^Bearer [^.]+\.[^.]+$/);
assert.equal(await new Response(req).text(), "offer-sdp");
res.writeHead(200, { "Content-Type": "application/sdp" }).end("answer-sdp");
});
const upstreamBase = await listen(upstream);
let provider;
const routes = [];
plugin.register({
registerRealtimeTranscriptionProvider: () => {},
registerRealtimeVoiceProvider: (value) => { provider = value; },
registerHttpRoute: (value) => { routes.push(value); },
runtime: { config: { current: () => ({ talk: { realtime: { providers: {
"athena-talk": { realtimeUpstreamUrl: `${upstreamBase}/v1/realtime/calls` },
} } } }) } },
});
const route = routes.find((value) => value.path.endsWith("/calls"));
const keyRoute = routes.find((value) => value.path.endsWith("/public-key"));
assert.equal(route.path, "/plugins/athena-talk/realtime/calls");
const browser = await provider.createBrowserSession({
providerConfig: { realtimeUpstreamUrl: `${upstreamBase}/v1/realtime/calls` },
model: "athena-local",
});
assert.equal(browser.transport, "webrtc");
assert.ok(browser.expiresAt > Date.now());
const proxy = createServer((req, res) => {
if (req.url === keyRoute.path) return keyRoute.handler(req, res);
return route.handler(req, res);
});
const proxyBase = await listen(proxy);
try {
const response = await fetch(`${proxyBase}${browser.offerUrl}`, {
method: "POST",
headers: { Authorization: `Bearer ${browser.clientSecret}`, "Content-Type": "application/sdp" },
body: "offer-sdp",
});
assert.equal(response.status, 200);
assert.equal(await response.text(), "answer-sdp");
assert.equal(upstreamCalls, 1);
const key = await fetch(`${proxyBase}${keyRoute.path}`);
assert.equal(key.status, 200);
assert.match(await key.text(), /BEGIN PUBLIC KEY/);
const invalid = await fetch(`${proxyBase}${browser.offerUrl}`, {
method: "POST",
headers: { Authorization: `Bearer ${browser.clientSecret}x` },
body: "offer-sdp",
});
assert.equal(invalid.status, 401);
assert.equal(upstreamCalls, 1);
} finally {
proxy.closeAllConnections();
upstream.closeAllConnections();
await Promise.all([
new Promise((resolve) => proxy.close(resolve)),
new Promise((resolve) => upstream.close(resolve)),
]);
}
});