Verify remote render recovery identity and endpoint binding
This commit is contained in:
parent
721de36692
commit
a00a910227
@ -169,3 +169,51 @@ test("SRT input rejects bad time ranges and preserves multiline unicode text", (
|
|||||||
const rows = parseSrt("\uFEFF1\r\n00:00:01,000 --> 00:00:02,500\r\n你好\r\n第二行");
|
const rows = parseSrt("\uFEFF1\r\n00:00:01,000 --> 00:00:02,500\r\n你好\r\n第二行");
|
||||||
expect(rows[0]).toEqual({ start: SECOND, end: 2.5 * SECOND, text: "你好\n第二行" });
|
expect(rows[0]).toEqual({ start: SECOND, end: 2.5 * SECOND, text: "你好\n第二行" });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("remote render records deterministic identity before network failure and refuses endpoint changes", async () => {
|
||||||
|
const { remoteRender } = await import("@/lib/video-canvas/smart-edit/remote-render");
|
||||||
|
const savedURL = process.env.SMART_EDIT_RENDER_URL,
|
||||||
|
savedToken = process.env.SMART_EDIT_RENDER_TOKEN,
|
||||||
|
oldFetch = globalThis.fetch;
|
||||||
|
process.env.SMART_EDIT_RENDER_URL = "http://127.0.0.1:19399";
|
||||||
|
process.env.SMART_EDIT_RENDER_TOKEN = "x".repeat(64);
|
||||||
|
const checkpoints: any[] = [];
|
||||||
|
let calls = 0;
|
||||||
|
globalThis.fetch = (async () => {
|
||||||
|
calls++;
|
||||||
|
return new Response("{}", { status: 503 });
|
||||||
|
}) as typeof fetch;
|
||||||
|
try {
|
||||||
|
const lifecycle = {
|
||||||
|
active: async () => {},
|
||||||
|
save: async (value: unknown) => {
|
||||||
|
checkpoints.push(value);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
await expect(remoteRender(plan(), "user", "stable-task", "/unused", lifecycle)).rejects.toThrow(
|
||||||
|
"任务已保存",
|
||||||
|
);
|
||||||
|
await expect(
|
||||||
|
remoteRender(plan(), "user", "stable-task", "/unused", {
|
||||||
|
...lifecycle,
|
||||||
|
resume: checkpoints[0],
|
||||||
|
}),
|
||||||
|
).rejects.toThrow("任务已保存");
|
||||||
|
expect(checkpoints[0]).toEqual(checkpoints[1]);
|
||||||
|
expect(calls).toBe(2);
|
||||||
|
process.env.SMART_EDIT_RENDER_URL = "http://127.0.0.1:19400";
|
||||||
|
await expect(
|
||||||
|
remoteRender(plan(), "user", "stable-task", "/unused", {
|
||||||
|
...lifecycle,
|
||||||
|
resume: checkpoints[0],
|
||||||
|
}),
|
||||||
|
).rejects.toThrow("所属服务器已变化");
|
||||||
|
expect(calls).toBe(2);
|
||||||
|
} finally {
|
||||||
|
globalThis.fetch = oldFetch;
|
||||||
|
if (savedURL === undefined) delete process.env.SMART_EDIT_RENDER_URL;
|
||||||
|
else process.env.SMART_EDIT_RENDER_URL = savedURL;
|
||||||
|
if (savedToken === undefined) delete process.env.SMART_EDIT_RENDER_TOKEN;
|
||||||
|
else process.env.SMART_EDIT_RENDER_TOKEN = savedToken;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user