summaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/data/library.test.ts
diff options
context:
space:
mode:
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();
+ });
+});