SPB Git

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.9 KB · 54 lines python
Raw Blame History
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