From 4d4f693f925a63140ef894c9a91d485aa366815f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 16 Feb 2026 01:56:51 +0000 Subject: [PATCH] test: consolidate media store header extension coverage --- src/media/store.header-ext.test.ts | 38 ------------------------------ src/media/store.test.ts | 25 +++++++++++++++++++- 2 files changed, 24 insertions(+), 39 deletions(-) delete mode 100644 src/media/store.header-ext.test.ts diff --git a/src/media/store.header-ext.test.ts b/src/media/store.header-ext.test.ts deleted file mode 100644 index 7cfa99e24e1..00000000000 --- a/src/media/store.header-ext.test.ts +++ /dev/null @@ -1,38 +0,0 @@ -import fs from "node:fs/promises"; -import path from "node:path"; -import { afterAll, beforeAll, describe, expect, it, vi } from "vitest"; - -const realOs = await vi.importActual("node:os"); -const HOME = path.join(realOs.tmpdir(), "openclaw-home-header-ext-test"); - -vi.mock("node:os", () => ({ - default: { homedir: () => HOME, tmpdir: () => realOs.tmpdir() }, - homedir: () => HOME, - tmpdir: () => realOs.tmpdir(), -})); - -vi.mock("./mime.js", async () => { - const actual = await vi.importActual("./mime.js"); - return { - ...actual, - detectMime: vi.fn(async () => "audio/opus"), - }; -}); - -const store = await import("./store.js"); - -describe("media store header extensions", () => { - beforeAll(async () => { - await fs.rm(HOME, { recursive: true, force: true }); - }); - - afterAll(async () => { - await fs.rm(HOME, { recursive: true, force: true }); - }); - - it("prefers header mime extension when sniffed mime lacks mapping", async () => { - const buf = Buffer.from("fake-audio"); - const saved = await store.saveMediaBuffer(buf, "audio/ogg; codecs=opus"); - expect(path.extname(saved.path)).toBe(".ogg"); - }); -}); diff --git a/src/media/store.test.ts b/src/media/store.test.ts index 642ab1c371c..0b6313c6b85 100644 --- a/src/media/store.test.ts +++ b/src/media/store.test.ts @@ -3,7 +3,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import sharp from "sharp"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { afterAll, beforeAll, describe, expect, it, vi } from "vitest"; import { isPathWithinBase } from "../../test/helpers/paths.js"; import { captureEnv } from "../test-utils/env.js"; @@ -155,6 +155,29 @@ describe("media store", () => { }); }); + it("prefers header mime extension when sniffed mime lacks mapping", async () => { + await withTempStore(async (_store, home) => { + vi.resetModules(); + vi.doMock("./mime.js", async () => { + const actual = await vi.importActual("./mime.js"); + return { + ...actual, + detectMime: vi.fn(async () => "audio/opus"), + }; + }); + + try { + const storeWithMock = await import("./store.js"); + const buf = Buffer.from("fake-audio"); + const saved = await storeWithMock.saveMediaBuffer(buf, "audio/ogg; codecs=opus"); + expect(path.extname(saved.path)).toBe(".ogg"); + expect(saved.path.startsWith(home)).toBe(true); + } finally { + vi.doUnmock("./mime.js"); + } + }); + }); + describe("extractOriginalFilename", () => { it("extracts original filename from embedded pattern", async () => { await withTempStore(async (store) => {