|
@@ -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();
|
|
|
+ });
|
|
|
+});
|