mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-11 23:10:34 +08:00
31 lines
844 B
TypeScript
31 lines
844 B
TypeScript
import type { HttpdClient } from "@httpd-client";
|
|
import type { RadiclePeer } from "@tests/support/peerManager.js";
|
|
|
|
import assert from "node:assert";
|
|
|
|
export async function authenticate(
|
|
api: HttpdClient,
|
|
peer: RadiclePeer,
|
|
): Promise<string> {
|
|
const { stdout } = await peer.spawn("rad-web", [
|
|
"http://localhost:3001",
|
|
"--no-open",
|
|
"--connect",
|
|
`${peer.httpdBaseUrl.hostname}:${peer.httpdBaseUrl.port}`,
|
|
]);
|
|
const match = stdout.match(/Visit (http:\/\/\S+) to connect/);
|
|
assert(
|
|
match !== null && match[1],
|
|
`Failed to get authentication URL from: ${stdout}`,
|
|
);
|
|
|
|
const authUrl = new URL(match[1]);
|
|
const sessionId = authUrl.pathname.split("/")[2];
|
|
|
|
await api.session.update(sessionId, {
|
|
sig: authUrl.searchParams.get("sig")!,
|
|
pk: authUrl.searchParams.get("pk")!,
|
|
});
|
|
return sessionId;
|
|
}
|