fix(config): valider l'alias CalDAV legacy et retirer file:// de fetch_ical
Supprime le contournement model_construct : l'alias CALDAV_URL est désormais validé comme le champ canonique (userinfo, host et port rejetés). Retire le support file:// de fetch_ical et corrige l'exemple résiduel du guide. Ajoute les tests négatifs de l'alias legacy et adapte le test de sécurité CalDAV au contrat durci. Refs #63
This commit is contained in:
@@ -212,6 +212,32 @@ def test_caldav_legacy_url_migrates_with_warning() -> None:
|
||||
assert settings.endpoint.url.get_secret_value() == "https://caldav.example.test/dav"
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"url",
|
||||
[
|
||||
"https://user:pass@caldav.example.test/dav", # pragma: allowlist secret
|
||||
"https:///missing-host",
|
||||
"https://host:bad",
|
||||
"file:///tmp/fixture.ics",
|
||||
],
|
||||
)
|
||||
def test_caldav_legacy_url_alias_rejects_invalid_urls(url: str) -> None:
|
||||
"""L'alias obsolète ``CALDAV_URL`` ne contourne pas la validation canonique.
|
||||
|
||||
Contrat corrigé : ``ExternalEndpoint.model_construct`` n'est plus utilisé
|
||||
pour grandfathered les identifiants embarqués. L'alias est migré via le
|
||||
chemin de validation normal, donc les credentials embarqués, l'hôte
|
||||
manquant, le port invalide et le schéma ``file://`` sont refusés,
|
||||
exactement comme pour ``CALDAV_ENDPOINT__URL``.
|
||||
|
||||
:param url: URL invalide fournie via l'alias historique.
|
||||
:return: None
|
||||
"""
|
||||
with pytest.raises(ValidationError):
|
||||
with pytest.warns(DeprecationWarning, match="CALDAV_URL"):
|
||||
CalDAVSettings(url=SecretStr(url))
|
||||
|
||||
|
||||
def test_pronote_endpoints_load_from_nested_environment(monkeypatch: MonkeyPatch) -> None:
|
||||
"""Vérifie le chargement des deux endpoints Pronote depuis l'environnement.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user