Files
troupe-standup/wizard-work/beam/test_canonical_url.py
T

31 lines
1.1 KiB
Python

import sys
sys.path.insert(0, "/root/.hermes/wizard-outputs/beam")
from canonical_url import canonicalize, equivalent
cases = [
("HTTP://Example.COM/Foo/", "http://example.com/Foo"),
("http://example.com:80/path?b=2&a=1#frag", "http://example.com/path?a=1&b=2"),
("http://example.com/a/../b/./c", "http://example.com/b/c"),
("https://example.com//a//b", "https://example.com/a/b"),
("http://user:pass@example.com/x", "http://example.com/x"),
("http://example.com/%7Efoo", "http://example.com/~foo"),
("example.com/path", "http://example.com/path"),
("//example.com/path", "http://example.com/path"),
]
for a,b in cases:
ca, cb = canonicalize(a), canonicalize(b)
assert ca == cb, (a, ca, b, cb)
assert equivalent(a,b)
print("all cases pass")
# distinct
assert canonicalize("http://a.com/?x=1") != canonicalize("http://a.com/?x=2")
assert canonicalize("http://a.com") != canonicalize("https://a.com")
print("distinct ok")
# invalid
try:
canonicalize("")
raise SystemExit("expected ValueError")
except ValueError:
pass
print("invalid ok")