spb/trouve-ka Public
Trouve-KA — moteur de recherche web indépendant, Québec-first. Crawler distribué, index OpenSearch, ranking bilingue, galerie d'images. En prod : www.trouve-ka.com
Python 76.8%
TypeScript 15.7%
SQL 3.9%
Shell 1.4%
CSS 1.3%
Dockerfile 0.7%
1# Trouve-KA — tests de canonicalisation d'URL2# Author: Simon-Pierre Boucher3# Contact: contact@spboucher.ai45from trouveka.shared import canonicalize_url, display_url, extract_domain678def test_removes_fragment_and_default_port():9 assert canonicalize_url("https://quebec.ca:443/services#section") == "https://quebec.ca/services"10 assert canonicalize_url("http://quebec.ca:80/") == "http://quebec.ca/"111213def test_preserves_non_default_port():14 assert canonicalize_url("http://example.qc.ca:8080/x") == "http://example.qc.ca:8080/x"151617def test_lowercases_host_but_preserves_path_case():18 assert canonicalize_url("HTTPS://WWW.Quebec.CA/Services/PDF") == "https://www.quebec.ca/Services/PDF"192021def test_strips_tracking_params_only():22 url = "https://ledevoir.com/a?utm_source=fb&fbclid=xyz&id=42&gclid=1"23 assert canonicalize_url(url) == "https://ledevoir.com/a?id=42"242526def test_preserves_unknown_params_and_order():27 # Deux ressources distinctes ne doivent jamais fusionner : ordre préservé28 assert canonicalize_url("https://x.ca/p?b=2&a=1") == "https://x.ca/p?b=2&a=1"29 assert canonicalize_url("https://x.ca/p?a=1&b=2") == "https://x.ca/p?a=1&b=2"303132def test_rejects_non_http_schemes():33 assert canonicalize_url("file:///etc/passwd") is None34 assert canonicalize_url("javascript:alert(1)") is None35 assert canonicalize_url("ftp://x.ca/f") is None363738def test_relative_resolution():39 assert canonicalize_url("../b", base="https://x.ca/a/c/") == "https://x.ca/a/b"404142def test_collapses_duplicate_slashes():43 assert canonicalize_url("https://x.ca//a///b") == "https://x.ca/a/b"444546def test_extract_domain_strips_www():47 assert extract_domain("https://www.quebec.ca/services") == "quebec.ca"48 assert extract_domain("https://ici.radio-canada.ca/n") == "ici.radio-canada.ca"495051def test_display_url_breadcrumb():52 crumb = display_url("https://www.quebec.ca/services/permis/conduire")53 assert crumb.startswith("quebec.ca › services › permis")54