Files
radicle-explorer/httpd-client/tests/support/httpd.ts
T
Sebastian Martinez 3d4e1bbfd9 Add httpd test fixture to vitest httpd-api tests
This fixture is simil to the way Playwright handles fixtures, which are
being setup and teardown for each test.

Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
2023-07-12 10:58:45 +02:00

25 lines
689 B
TypeScript

import type { HttpdClient } from "@httpd-client";
import type { RadiclePeer } from "@tests/support/peerManager.js";
import { sessionPayloadSchema } from "@httpd-client/lib/session.js";
export async function authenticate(
api: HttpdClient,
peer: RadiclePeer,
): Promise<string> {
const { stdout } = await peer.rad(["web", "--backend", api.url, "--json"]);
const session = sessionPayloadSchema.safeParse(JSON.parse(stdout));
if (!session.success) {
throw new Error("Failed to parse session payload");
}
const { sessionId, signature, publicKey } = session.data;
await api.session.update(sessionId, {
sig: signature,
pk: publicKey,
});
return sessionId;
}