b33fa6d6f6
Co-authored-by: dwelle <luzar.david@gmail.com>
31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
import { normalizeLink } from "./url";
|
|
|
|
describe("normalizeLink", () => {
|
|
// NOTE not an extensive XSS test suite, just to check if we're not
|
|
// regressing in sanitization
|
|
it("should sanitize links", () => {
|
|
expect(
|
|
// eslint-disable-next-line no-script-url
|
|
normalizeLink(`javascript://%0aalert(document.domain)`).startsWith(
|
|
// eslint-disable-next-line no-script-url
|
|
`javascript:`,
|
|
),
|
|
).toBe(false);
|
|
expect(normalizeLink("ola")).toBe("ola");
|
|
expect(normalizeLink(" ola")).toBe("ola");
|
|
|
|
expect(normalizeLink("https://www.excalidraw.com")).toBe(
|
|
"https://www.excalidraw.com",
|
|
);
|
|
expect(normalizeLink("www.excalidraw.com")).toBe("www.excalidraw.com");
|
|
expect(normalizeLink("/ola")).toBe("/ola");
|
|
expect(normalizeLink("http://test")).toBe("http://test");
|
|
expect(normalizeLink("ftp://test")).toBe("ftp://test");
|
|
expect(normalizeLink("file://")).toBe("file://");
|
|
expect(normalizeLink("file://")).toBe("file://");
|
|
expect(normalizeLink("[test](https://test)")).toBe("[test](https://test)");
|
|
expect(normalizeLink("[[test]]")).toBe("[[test]]");
|
|
expect(normalizeLink("<test>")).toBe("<test>");
|
|
});
|
|
});
|