Fix terminal log stream authorization
This commit is contained in:
@@ -778,6 +778,30 @@ describe("PlatformApiClient AI providers", () => {
|
||||
expect(client.serverLogEventsUrl("server-1")).toBe("/api/v1/server-instances/server-1/logs/events");
|
||||
});
|
||||
|
||||
it("streams terminal log SSE with bearer authorization and dispatches live events", async () => {
|
||||
const payload = "event: stream\ndata: {\"id\":\"log-1\",\"serverInstanceId\":\"server-1\"}\n\nevent: log\ndata: {\"streamId\":\"log-1\",\"entry\":{\"seq\":3,\"line\":\"live line\"}}\n\nevent: ready\ndata: {\"serverInstanceId\":\"server-1\"}\n\n";
|
||||
const fetchMock = vi.fn(async (_input: RequestInfo | URL, init?: RequestInit) => {
|
||||
expect(new Headers(init?.headers).get("Authorization")).toBe("Bearer terminal-session");
|
||||
expect(new Headers(init?.headers).get("Accept")).toBe("text/event-stream");
|
||||
return new Response(new ReadableStream<Uint8Array>({ start(controller) { controller.enqueue(new TextEncoder().encode(payload)); controller.close(); } }), { status: 200, headers: { "Content-Type": "text/event-stream" } });
|
||||
});
|
||||
vi.stubGlobal("fetch", fetchMock);
|
||||
const client = new PlatformApiClient("/api/v1", () => "terminal-session");
|
||||
const events: string[] = [];
|
||||
const stream = client.openServerLogEvents("server-1", { historyLimit: 2 });
|
||||
stream.addEventListener("stream", (event) => events.push(`stream:${event.data}`));
|
||||
stream.addEventListener("log", (event) => events.push(`log:${event.data}`));
|
||||
stream.addEventListener("ready", (event) => events.push(`ready:${event.data}`));
|
||||
|
||||
await vi.waitFor(() => expect(events).toEqual([
|
||||
'stream:{"id":"log-1","serverInstanceId":"server-1"}',
|
||||
'log:{"streamId":"log-1","entry":{"seq":3,"line":"live line"}}',
|
||||
'ready:{"serverInstanceId":"server-1"}'
|
||||
]));
|
||||
expect(String(fetchMock.mock.calls[0]?.[0])).toBe("/api/v1/server-instances/server-1/logs/events?historyLimit=2");
|
||||
stream.close();
|
||||
});
|
||||
|
||||
it("surfaces password confirmation denials without exposing generic forbidden text", async () => {
|
||||
vi.stubGlobal("fetch", vi.fn(async () => new Response(JSON.stringify({
|
||||
code: "forbidden",
|
||||
|
||||
Reference in New Issue
Block a user