import { describe, expect, test } from "bun:test"; import { POST_MEDIA_PUBLIC_PREFIX } from "#server/constants/media"; import { extractMediaUrlsFromMarkdown, publicAssetUrlToStorageKey } from "./post-media-urls"; describe("extractMediaUrlsFromMarkdown", () => { test("accepts site-relative asset URL without allowed origins", () => { expect(extractMediaUrlsFromMarkdown(`![](${POST_MEDIA_PUBLIC_PREFIX}a.webp)`)).toEqual([ `${POST_MEDIA_PUBLIC_PREFIX}a.webp`, ]); }); test("rejects absolute URL when no allowed origins", () => { expect(extractMediaUrlsFromMarkdown(`![](https://blog.example.com${POST_MEDIA_PUBLIC_PREFIX}b.webp)`)).toEqual([]); }); test("accepts absolute URL when origin matches allowed list", () => { expect( extractMediaUrlsFromMarkdown(`![](https://blog.example.com${POST_MEDIA_PUBLIC_PREFIX}b.webp)`, { allowedAssetOrigins: ["https://blog.example.com"], }), ).toEqual([`${POST_MEDIA_PUBLIC_PREFIX}b.webp`]); }); test("rejects absolute URL when origin does not match", () => { expect( extractMediaUrlsFromMarkdown(`![](https://evil.example${POST_MEDIA_PUBLIC_PREFIX}b.webp)`, { allowedAssetOrigins: ["https://blog.example.com"], }), ).toEqual([]); }); test("strips query on relative asset URL", () => { expect(extractMediaUrlsFromMarkdown(`![](${POST_MEDIA_PUBLIC_PREFIX}c.webp?v=1)`)).toEqual([ `${POST_MEDIA_PUBLIC_PREFIX}c.webp`, ]); }); test("strips query on absolute asset URL via pathname", () => { expect( extractMediaUrlsFromMarkdown(`![](https://x.example${POST_MEDIA_PUBLIC_PREFIX}d.webp?cache=1)`, { allowedAssetOrigins: ["https://x.example"], }), ).toEqual([`${POST_MEDIA_PUBLIC_PREFIX}d.webp`]); }); test("ignores non-asset absolute URLs", () => { expect( extractMediaUrlsFromMarkdown("![](https://evil.com/other.png)", { allowedAssetOrigins: ["https://evil.com"], }), ).toEqual([]); }); }); describe("publicAssetUrlToStorageKey", () => { test("maps normalized path to storage key", () => { expect(publicAssetUrlToStorageKey(`${POST_MEDIA_PUBLIC_PREFIX}z.webp`)).toBe("z.webp"); }); });