78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { after, before, test } from "node:test";
|
|
|
|
import { createServer } from "vite";
|
|
|
|
let server;
|
|
let fetchPerceptionPreparationStatus;
|
|
let perceptionPreparationMessage;
|
|
|
|
before(async () => {
|
|
server = await createServer({
|
|
appType: "custom",
|
|
logLevel: "silent",
|
|
server: { middlewareMode: true },
|
|
});
|
|
({
|
|
fetchPerceptionPreparationStatus,
|
|
perceptionPreparationMessage,
|
|
} = await server.ssrLoadModule(
|
|
"/src/core/observation/perceptionPreparation.ts",
|
|
));
|
|
});
|
|
|
|
after(async () => {
|
|
await server?.close();
|
|
});
|
|
|
|
test("perception preparation status is same-origin, typed and phase-specific", async () => {
|
|
let requested;
|
|
const status = await fetchPerceptionPreparationStatus(
|
|
"/api/v1/observation-sessions/session-1/perception.rrd",
|
|
"recording-001",
|
|
{
|
|
origin: "http://127.0.0.1:8000",
|
|
fetcher: async (input, init) => {
|
|
requested = { url: String(input), method: init.method };
|
|
return Response.json({
|
|
state: "preparing",
|
|
phase: "artifact-validation",
|
|
elapsed_seconds: 2.5,
|
|
byte_length: null,
|
|
});
|
|
},
|
|
},
|
|
);
|
|
|
|
assert.deepEqual(requested, {
|
|
url: "http://127.0.0.1:8000/api/v1/observation-sessions/session-1/perception/status?recording_id=recording-001",
|
|
method: "GET",
|
|
});
|
|
assert.deepEqual(status, {
|
|
state: "preparing",
|
|
phase: "artifact-validation",
|
|
elapsedSeconds: 2.5,
|
|
byteLength: null,
|
|
});
|
|
assert.equal(
|
|
perceptionPreparationMessage(status.phase),
|
|
"Проверяем опубликованный AI-результат.",
|
|
);
|
|
});
|
|
|
|
test("perception preparation status rejects cross-origin endpoints", async () => {
|
|
await assert.rejects(
|
|
fetchPerceptionPreparationStatus(
|
|
"https://example.com/api/v1/observation-sessions/session-1/perception.rrd",
|
|
"recording-001",
|
|
{
|
|
origin: "http://127.0.0.1:8000",
|
|
fetcher: async () => {
|
|
throw new Error("must not fetch");
|
|
},
|
|
},
|
|
),
|
|
/Unsafe perception preparation status request/,
|
|
);
|
|
});
|