import { isValidUrlGlobPattern } from "./validators"; import { assertEquals } from "@test/assert"; function runTests() { console.log("Running URL pattern validation tests..."); // Test valid patterns assertEquals( isValidUrlGlobPattern("simple"), true, "Simple path segment should be valid" ); assertEquals( isValidUrlGlobPattern("simple/path"), true, "Simple path with slash should be valid" ); assertEquals( isValidUrlGlobPattern("/leading/slash"), true, "Path with leading slash should be valid" ); assertEquals( isValidUrlGlobPattern("path/"), true, "Path with trailing slash should be valid" ); assertEquals( isValidUrlGlobPattern("path/*"), true, "Path with wildcard segment should be valid" ); assertEquals( isValidUrlGlobPattern("*"), true, "Single wildcard should be valid" ); assertEquals( isValidUrlGlobPattern("*/subpath"), true, "Wildcard with subpath should be valid" ); assertEquals( isValidUrlGlobPattern("path/*/more"), true, "Path with wildcard in the middle should be valid" ); // Test with special characters assertEquals( isValidUrlGlobPattern("path-with-dash"), true, "Path with dash should be valid" ); assertEquals( isValidUrlGlobPattern("path_with_underscore"), true, "Path with underscore should be valid" ); assertEquals( isValidUrlGlobPattern("path.with.dots"), true, "Path with dots should be valid" ); assertEquals( isValidUrlGlobPattern("path~with~tilde"), true, "Path with tilde should be valid" ); assertEquals( isValidUrlGlobPattern("path!with!exclamation"), true, "Path with exclamation should be valid" ); assertEquals( isValidUrlGlobPattern("path$with$dollar"), true, "Path with dollar should be valid" ); assertEquals( isValidUrlGlobPattern("path&with&ersand"), true, "Path with ampersand should be valid" ); assertEquals( isValidUrlGlobPattern("path'with'quote"), true, "Path with quote should be valid" ); assertEquals( isValidUrlGlobPattern("path(with)parentheses"), true, "Path with parentheses should be valid" ); assertEquals( isValidUrlGlobPattern("path+with+plus"), true, "Path with plus should be valid" ); assertEquals( isValidUrlGlobPattern("path,with,comma"), true, "Path with comma should be valid" ); assertEquals( isValidUrlGlobPattern("path;with;semicolon"), true, "Path with semicolon should be valid" ); assertEquals( isValidUrlGlobPattern("path=with=equals"), true, "Path with equals should be valid" ); assertEquals( isValidUrlGlobPattern("path:with:colon"), true, "Path with colon should be valid" ); assertEquals( isValidUrlGlobPattern("path@with@at"), true, "Path with at should be valid" ); // Test with percent encoding assertEquals( isValidUrlGlobPattern("path%20with%20spaces"), true, "Path with percent-encoded spaces should be valid" ); assertEquals( isValidUrlGlobPattern("path%2Fwith%2Fencoded%2Fslashes"), true, "Path with percent-encoded slashes should be valid" ); // Test with wildcards in segments (the fixed functionality) assertEquals( isValidUrlGlobPattern("padbootstrap*"), true, "Path with wildcard at the end of segment should be valid" ); assertEquals( isValidUrlGlobPattern("pad*bootstrap"), true, "Path with wildcard in the middle of segment should be valid" ); assertEquals( isValidUrlGlobPattern("*bootstrap"), true, "Path with wildcard at the start of segment should be valid" ); assertEquals( isValidUrlGlobPattern("multiple*wildcards*in*segment"), true, "Path with multiple wildcards in segment should be valid" ); assertEquals( isValidUrlGlobPattern("wild*/cards/in*/different/seg*ments"), true, "Path with wildcards in different segments should be valid" ); // Test invalid patterns assertEquals( isValidUrlGlobPattern(""), false, "Empty string should be invalid" ); assertEquals( isValidUrlGlobPattern("//double/slash"), false, "Path with double slash should be invalid" ); assertEquals( isValidUrlGlobPattern("path//end"), false, "Path with double slash in the middle should be invalid" ); assertEquals( isValidUrlGlobPattern("invalid"), false, "Path with invalid characters should be invalid" ); assertEquals( isValidUrlGlobPattern("invalid|char"), false, "Path with invalid pipe character should be invalid" ); assertEquals( isValidUrlGlobPattern('invalid"char'), false, "Path with invalid quote character should be invalid" ); assertEquals( isValidUrlGlobPattern("invalid`char"), false, "Path with invalid backtick character should be invalid" ); assertEquals( isValidUrlGlobPattern("invalid^char"), false, "Path with invalid caret character should be invalid" ); assertEquals( isValidUrlGlobPattern("invalid\\char"), false, "Path with invalid backslash character should be invalid" ); assertEquals( isValidUrlGlobPattern("invalid[char]"), false, "Path with invalid square brackets should be invalid" ); assertEquals( isValidUrlGlobPattern("invalid{char}"), false, "Path with invalid curly braces should be invalid" ); // Test invalid percent encoding assertEquals( isValidUrlGlobPattern("invalid%2"), false, "Path with incomplete percent encoding should be invalid" ); assertEquals( isValidUrlGlobPattern("invalid%GZ"), false, "Path with invalid hex in percent encoding should be invalid" ); assertEquals( isValidUrlGlobPattern("invalid%"), false, "Path with isolated percent sign should be invalid" ); console.log("All tests passed!"); } // Run all tests try { runTests(); } catch (error) { console.error("Test failed:", error); }