aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/data/library.test.ts
diff options
context:
space:
mode:
authorkj_sh6042026-03-15 16:19:35 -0400
committerkj_sh6042026-03-15 16:19:35 -0400
commit6ec259a0e71174651bae95d4628138bf6fd68742 (patch)
tree5e33c6a5ec091ecabfcb257fdc7b6a88ed8754ac /packages/excalidraw/data/library.test.ts
parent16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff)
refactor: packages/
Diffstat (limited to 'packages/excalidraw/data/library.test.ts')
-rw-r--r--packages/excalidraw/data/library.test.ts105
1 files changed, 105 insertions, 0 deletions
diff --git a/packages/excalidraw/data/library.test.ts b/packages/excalidraw/data/library.test.ts
new file mode 100644
index 0000000..bbbfd5f
--- /dev/null
+++ b/packages/excalidraw/data/library.test.ts
@@ -0,0 +1,105 @@
+import { validateLibraryUrl } from "./library";
+
+describe("validateLibraryUrl", () => {
+ it("should validate hostname & pathname", () => {
+ // valid hostnames
+ // -------------------------------------------------------------------------
+ expect(
+ validateLibraryUrl("https://www.excalidraw.com", ["excalidraw.com"]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://excalidraw.com", ["excalidraw.com"]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://library.excalidraw.com", ["excalidraw.com"]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://library.excalidraw.com", [
+ "library.excalidraw.com",
+ ]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://excalidraw.com/", ["excalidraw.com/"]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://excalidraw.com", ["excalidraw.com/"]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://excalidraw.com/", ["excalidraw.com"]),
+ ).toBe(true);
+
+ // valid pathnames
+ // -------------------------------------------------------------------------
+ expect(
+ validateLibraryUrl("https://excalidraw.com/path", ["excalidraw.com"]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://excalidraw.com/path/", ["excalidraw.com"]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://excalidraw.com/specific/path", [
+ "excalidraw.com/specific/path",
+ ]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://excalidraw.com/specific/path/", [
+ "excalidraw.com/specific/path",
+ ]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://excalidraw.com/specific/path", [
+ "excalidraw.com/specific/path/",
+ ]),
+ ).toBe(true);
+ expect(
+ validateLibraryUrl("https://excalidraw.com/specific/path/other", [
+ "excalidraw.com/specific/path",
+ ]),
+ ).toBe(true);
+
+ // invalid hostnames
+ // -------------------------------------------------------------------------
+ expect(() =>
+ validateLibraryUrl("https://xexcalidraw.com", ["excalidraw.com"]),
+ ).toThrow();
+ expect(() =>
+ validateLibraryUrl("https://x-excalidraw.com", ["excalidraw.com"]),
+ ).toThrow();
+ expect(() =>
+ validateLibraryUrl("https://excalidraw.comx", ["excalidraw.com"]),
+ ).toThrow();
+ expect(() =>
+ validateLibraryUrl("https://excalidraw.comx", ["excalidraw.com"]),
+ ).toThrow();
+ expect(() =>
+ validateLibraryUrl("https://excalidraw.com.mx", ["excalidraw.com"]),
+ ).toThrow();
+ // protocol must be https
+ expect(() =>
+ validateLibraryUrl("http://excalidraw.com.mx", ["excalidraw.com"]),
+ ).toThrow();
+
+ // invalid pathnames
+ // -------------------------------------------------------------------------
+ expect(() =>
+ validateLibraryUrl("https://excalidraw.com/specific/other/path", [
+ "excalidraw.com/specific/path",
+ ]),
+ ).toThrow();
+ expect(() =>
+ validateLibraryUrl("https://excalidraw.com/specific/paths", [
+ "excalidraw.com/specific/path",
+ ]),
+ ).toThrow();
+ expect(() =>
+ validateLibraryUrl("https://excalidraw.com/specific/path-s", [
+ "excalidraw.com/specific/path",
+ ]),
+ ).toThrow();
+ expect(() =>
+ validateLibraryUrl("https://excalidraw.com/some/specific/path", [
+ "excalidraw.com/specific/path",
+ ]),
+ ).toThrow();
+ });
+});