mirror of
https://github.com/webadderallorg/Recordly.git
synced 2026-09-24 14:55:37 +00:00
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import path from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
import { resolveRecordedVideoStoragePath } from "./storagePath";
|
|
|
|
describe("resolveRecordedVideoStoragePath", () => {
|
|
const recordingsDir = path.resolve("recordings-root");
|
|
|
|
it.each([
|
|
"recording-0.webm",
|
|
"recording-1720588800000.mp4",
|
|
"recording-1720588800000-webcam.webm",
|
|
"recording-1720588800000-webcam.mp4",
|
|
])("accepts an app-generated recording name: %s", (fileName) => {
|
|
expect(resolveRecordedVideoStoragePath(recordingsDir, fileName)).toBe(
|
|
path.resolve(recordingsDir, fileName),
|
|
);
|
|
});
|
|
|
|
it.each([
|
|
"",
|
|
"../recording-1.webm",
|
|
"..\\recording-1.webm",
|
|
"nested/recording-1.webm",
|
|
"nested\\recording-1.webm",
|
|
"/tmp/recording-1.webm",
|
|
"C:\\temp\\recording-1.webm",
|
|
"\\\\server\\share\\recording-1.webm",
|
|
"recording-1.webm:payload",
|
|
"recording-1.webm\n",
|
|
"recording-1.webm\0",
|
|
"recording--1.webm",
|
|
"recording-1.5.webm",
|
|
"recording-1.mov",
|
|
"other-1.webm",
|
|
"recording-1-WEBCAM.webm",
|
|
])("rejects an untrusted recording name: %s", (fileName) => {
|
|
expect(() => resolveRecordedVideoStoragePath(recordingsDir, fileName)).toThrow(
|
|
"Invalid recording file name",
|
|
);
|
|
});
|
|
|
|
it.each([
|
|
{ label: "undefined", value: undefined },
|
|
{ label: "null", value: null },
|
|
{ label: "number", value: 1 },
|
|
{ label: "object", value: {} },
|
|
{ label: "array", value: [] },
|
|
])("rejects a non-string recording name: $label", ({ value }) => {
|
|
expect(() => resolveRecordedVideoStoragePath(recordingsDir, value)).toThrow(
|
|
"Invalid recording file name",
|
|
);
|
|
});
|
|
});
|