mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-28 06:00:38 +00:00
* fix(artifacts): authenticate isolated HTML preview resources * docs(artifacts): retain precise path guidance within size budget * fix: preserve HTML preview auth and rendering semantics * fix(artifacts): quote rewritten CSS URLs * docs: keep merged artifact guidance within size limit --------- Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { afterEach, expect, rs, test } from "@rstest/core";
|
|
|
|
import { prepareHtmlPreview } from "@/core/artifacts/html-assets";
|
|
|
|
rs.mock("@/core/static-mode", () => ({ isStaticWebsiteOnly: () => false }));
|
|
|
|
afterEach(() => {
|
|
rs.restoreAllMocks();
|
|
});
|
|
|
|
test("keeps resource 401 responses local to the preview without navigating to login", async () => {
|
|
const navigate = rs
|
|
.spyOn(window.location, "href", "set")
|
|
.mockImplementation(() => undefined);
|
|
const request = rs.spyOn(globalThis, "fetch").mockResolvedValue(
|
|
new Response('{"detail":"Unauthorized"}', {
|
|
status: 401,
|
|
headers: { "Content-Type": "application/json" },
|
|
}),
|
|
);
|
|
const url =
|
|
"https://app.example/gateway/api/threads/chat/artifacts/mnt/user-data/outputs/report.html";
|
|
const result = await prepareHtmlPreview(
|
|
'<h1>Report</h1><img src="chart.png">',
|
|
url,
|
|
);
|
|
expect(result.failedResources).toBe(1);
|
|
expect(result.content).toContain("Report");
|
|
expect(result.content).toContain('src="data:,"');
|
|
expect(navigate).not.toHaveBeenCalled();
|
|
expect(request).toHaveBeenCalledWith(
|
|
url.replace("report.html", "chart.png"),
|
|
expect.objectContaining({ credentials: "include", redirect: "error" }),
|
|
);
|
|
});
|