test: optimize gateway infra memory and security coverage
This commit is contained in:
@@ -8,40 +8,27 @@ describe("splitMediaFromOutput", () => {
|
||||
expect(result.text).toBe("Hello world");
|
||||
});
|
||||
|
||||
it("accepts absolute media paths", () => {
|
||||
const result = splitMediaFromOutput("MEDIA:/Users/pete/My File.png");
|
||||
expect(result.mediaUrls).toEqual(["/Users/pete/My File.png"]);
|
||||
expect(result.text).toBe("");
|
||||
});
|
||||
|
||||
it("accepts quoted absolute media paths", () => {
|
||||
const result = splitMediaFromOutput('MEDIA:"/Users/pete/My File.png"');
|
||||
expect(result.mediaUrls).toEqual(["/Users/pete/My File.png"]);
|
||||
expect(result.text).toBe("");
|
||||
});
|
||||
|
||||
it("accepts tilde media paths", () => {
|
||||
const result = splitMediaFromOutput("MEDIA:~/Pictures/My File.png");
|
||||
expect(result.mediaUrls).toEqual(["~/Pictures/My File.png"]);
|
||||
expect(result.text).toBe("");
|
||||
});
|
||||
|
||||
it("accepts traversal-like media paths (validated at load time)", () => {
|
||||
const result = splitMediaFromOutput("MEDIA:../../etc/passwd");
|
||||
expect(result.mediaUrls).toEqual(["../../etc/passwd"]);
|
||||
expect(result.text).toBe("");
|
||||
});
|
||||
|
||||
it("captures safe relative media paths", () => {
|
||||
const result = splitMediaFromOutput("MEDIA:./screenshots/image.png");
|
||||
expect(result.mediaUrls).toEqual(["./screenshots/image.png"]);
|
||||
expect(result.text).toBe("");
|
||||
});
|
||||
|
||||
it("accepts sandbox-relative media paths", () => {
|
||||
const result = splitMediaFromOutput("MEDIA:media/inbound/image.png");
|
||||
expect(result.mediaUrls).toEqual(["media/inbound/image.png"]);
|
||||
expect(result.text).toBe("");
|
||||
it("accepts supported media path variants", () => {
|
||||
const pathCases = [
|
||||
["/Users/pete/My File.png", "MEDIA:/Users/pete/My File.png"],
|
||||
["/Users/pete/My File.png", 'MEDIA:"/Users/pete/My File.png"'],
|
||||
["~/Pictures/My File.png", "MEDIA:~/Pictures/My File.png"],
|
||||
["../../etc/passwd", "MEDIA:../../etc/passwd"],
|
||||
["./screenshots/image.png", "MEDIA:./screenshots/image.png"],
|
||||
["media/inbound/image.png", "MEDIA:media/inbound/image.png"],
|
||||
["./screenshot.png", " MEDIA:./screenshot.png"],
|
||||
["C:\\Users\\pete\\Pictures\\snap.png", "MEDIA:C:\\Users\\pete\\Pictures\\snap.png"],
|
||||
[
|
||||
"/tmp/tts-fAJy8C/voice-1770246885083.opus",
|
||||
"MEDIA:/tmp/tts-fAJy8C/voice-1770246885083.opus",
|
||||
],
|
||||
["image.png", "MEDIA:image.png"],
|
||||
] as const;
|
||||
for (const [expectedPath, input] of pathCases) {
|
||||
const result = splitMediaFromOutput(input);
|
||||
expect(result.mediaUrls).toEqual([expectedPath]);
|
||||
expect(result.text).toBe("");
|
||||
}
|
||||
});
|
||||
|
||||
it("keeps audio_as_voice detection stable across calls", () => {
|
||||
@@ -59,30 +46,6 @@ describe("splitMediaFromOutput", () => {
|
||||
expect(result.text).toBe(input);
|
||||
});
|
||||
|
||||
it("parses MEDIA tags with leading whitespace", () => {
|
||||
const result = splitMediaFromOutput(" MEDIA:./screenshot.png");
|
||||
expect(result.mediaUrls).toEqual(["./screenshot.png"]);
|
||||
expect(result.text).toBe("");
|
||||
});
|
||||
|
||||
it("accepts Windows-style paths", () => {
|
||||
const result = splitMediaFromOutput("MEDIA:C:\\Users\\pete\\Pictures\\snap.png");
|
||||
expect(result.mediaUrls).toEqual(["C:\\Users\\pete\\Pictures\\snap.png"]);
|
||||
expect(result.text).toBe("");
|
||||
});
|
||||
|
||||
it("accepts TTS temp file paths", () => {
|
||||
const result = splitMediaFromOutput("MEDIA:/tmp/tts-fAJy8C/voice-1770246885083.opus");
|
||||
expect(result.mediaUrls).toEqual(["/tmp/tts-fAJy8C/voice-1770246885083.opus"]);
|
||||
expect(result.text).toBe("");
|
||||
});
|
||||
|
||||
it("accepts bare filenames with extensions", () => {
|
||||
const result = splitMediaFromOutput("MEDIA:image.png");
|
||||
expect(result.mediaUrls).toEqual(["image.png"]);
|
||||
expect(result.text).toBe("");
|
||||
});
|
||||
|
||||
it("rejects bare words without file extensions", () => {
|
||||
const result = splitMediaFromOutput("MEDIA:screenshot");
|
||||
expect(result.mediaUrls).toBeUndefined();
|
||||
|
||||
Reference in New Issue
Block a user