mirror of
https://github.com/YuzuZensai/Termix.git
synced 2026-11-12 17:21:38 +00:00
26 lines
885 B
TypeScript
26 lines
885 B
TypeScript
import { describe, expect, it } from "vitest";
|
|||
|
|
import { consumeViewLink, toViewLinkPath } from "@/lib/view-link-resume";
|
||
|
|
|
||
|
|
describe("toViewLinkPath", () => {
|
||
|
|
it.each([
|
||
|
|
["/?view=example-plugin.request&request=123", true],
|
||
|
|
["/termix/?view=example-plugin.request#top", true],
|
||
|
|
["//evil.com/?view=x", false],
|
||
|
|
["/\\evil.com/?view=x", false],
|
||
|
|
["https://evil.com/?view=x", false],
|
||
|
|
["/foo", false],
|
||
|
|
["/?view=", false],
|
||
|
|
["not a url", false],
|
||
|
|
])("%s -> %s", (value, accepted) => {
|
||
|
|
expect(toViewLinkPath(value)).toBe(accepted ? value : null);
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
describe("consumeViewLink", () => {
|
||
|
|
it("clears the stored link even when it is invalid", () => {
|
||
|
|
sessionStorage.setItem("termix-pending-view-link", "//evil.com/?view=x");
|
||
|
|
expect(consumeViewLink()).toBeNull();
|
||
|
|
expect(sessionStorage.getItem("termix-pending-view-link")).toBeNull();
|
||
|
|
});
|
||
|
|
});
|