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第二行");
|
||||
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