mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 05:51:15 +08:00
fix: validate deepinfra video seeds
This commit is contained in:
@@ -123,6 +123,34 @@ describe("deepinfra video generation provider", () => {
|
||||
expect(release).toHaveBeenCalledOnce();
|
||||
});
|
||||
|
||||
it("does not forward malformed video seed values", async () => {
|
||||
postJsonRequestMock.mockResolvedValue({
|
||||
response: {
|
||||
json: async () => ({
|
||||
video_url: "/generated/video.mp4",
|
||||
request_id: "req_seed",
|
||||
inference_status: { status: "succeeded" },
|
||||
}),
|
||||
},
|
||||
release: vi.fn(async () => {}),
|
||||
});
|
||||
|
||||
const provider = buildDeepInfraVideoGenerationProvider();
|
||||
await provider.generateVideo({
|
||||
provider: "deepinfra",
|
||||
model: "deepinfra/Pixverse/Pixverse-T2V",
|
||||
prompt: "A bicycle weaving through a rainy neon street",
|
||||
cfg: {},
|
||||
providerOptions: {
|
||||
seed: 1.5,
|
||||
},
|
||||
});
|
||||
|
||||
expect(postJsonRequestMock).toHaveBeenCalledOnce();
|
||||
const postRequest = requireFirstPostJsonRequest();
|
||||
expect(Reflect.get(Reflect.get(postRequest ?? {}, "body") ?? {}, "seed")).toBeUndefined();
|
||||
});
|
||||
|
||||
it("reports malformed native video JSON as a provider error", async () => {
|
||||
const release = vi.fn(async () => {});
|
||||
postJsonRequestMock.mockResolvedValue({
|
||||
|
||||
@@ -93,6 +93,14 @@ function resolveDurationSeconds(value: number | undefined): number | undefined {
|
||||
return value <= 6.5 ? 5 : 8;
|
||||
}
|
||||
|
||||
function resolveSeed(value: unknown): number | undefined {
|
||||
const seed = coerceProviderNumber(value);
|
||||
if (seed == null || !Number.isSafeInteger(seed) || seed < 0 || seed > 4_294_967_295) {
|
||||
return undefined;
|
||||
}
|
||||
return seed;
|
||||
}
|
||||
|
||||
function buildDeepInfraVideoBody(
|
||||
req: VideoGenerationRequest,
|
||||
model: string,
|
||||
@@ -109,7 +117,7 @@ function buildDeepInfraVideoBody(
|
||||
if (duration) {
|
||||
body.duration = duration;
|
||||
}
|
||||
const seed = coerceProviderNumber(options.seed);
|
||||
const seed = resolveSeed(options.seed);
|
||||
if (seed != null) {
|
||||
body.seed = seed;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user