fix: PRONOTE_URL ignoré à cause du double préfixe env_prefix
Le champ pronote_url dans PronoteSettings avec env_prefix=PRONOTE_ produisait PRONOTE_PRONOTE_URL au lieu de PRONOTE_URL. La variable documentée dans .env.example et tous les guides était donc ignorée. Renomme le champ pronote_url → url pour que le mécanisme standard env_prefix + nom de champ produise PRONOTE_URL. Toutes les références au champ settings.pronote.pronote_url sont mises à jour vers settings.pronote.url dans le code de production et les tests. Changements : - settings.py : champ pronote_url → url, retrait du contournement alias - client.py : self._settings.pronote_url → self._settings.url - fallback.py : pronote.pronote_url → pronote.url - tests : mises à jour des constructions et assertions, test de régression pour le mapping PRONOTE_URL → url Co-authored-by: opencode/coder litellm/coder@agents.invalid Co-authored-by: opencode/test-engineer litellm/test-engineer@agents.invalid
This commit is contained in:
@@ -46,7 +46,7 @@ def pronote_settings() -> PronoteSettings:
|
||||
:rtype: PronoteSettings
|
||||
"""
|
||||
return PronoteSettings(
|
||||
pronote_url="https://pronote.example.com",
|
||||
url="https://pronote.example.com",
|
||||
username="testuser",
|
||||
password=SecretStr("testpass"),
|
||||
ent="bordeaux",
|
||||
@@ -309,9 +309,7 @@ def test_missing_credentials_raises(empty_pronote_settings: PronoteSettings) ->
|
||||
"""
|
||||
client = PronoteClient(empty_pronote_settings)
|
||||
|
||||
with pytest.raises(
|
||||
ValueError, match="pronote_url, username et password sont requis pour pronotepy"
|
||||
):
|
||||
with pytest.raises(ValueError, match="url, username et password sont requis pour pronotepy"):
|
||||
client._connect()
|
||||
|
||||
|
||||
@@ -384,7 +382,7 @@ def test_connect_without_ent_but_with_required_credentials(
|
||||
|
||||
# Settings sans ent mais avec les autres champs requis
|
||||
settings = PronoteSettings(
|
||||
pronote_url="https://pronote.example.com",
|
||||
url="https://pronote.example.com",
|
||||
username="testuser",
|
||||
password=SecretStr("testpass"),
|
||||
ent=None, # Explicitement None
|
||||
@@ -414,7 +412,7 @@ def test_connect_without_ent_but_with_required_credentials(
|
||||
def test_connect_missing_required_credentials_still_raises(
|
||||
mocker: pytest_mock.MockerFixture,
|
||||
) -> None:
|
||||
"""Vérifie que _connect() lève ValueError si pronote_url, username ou password manquent.
|
||||
"""Vérifie que _connect() lève ValueError si url, username ou password manquent.
|
||||
|
||||
Ce test valide que l'erreur ne mentionne plus ent comme requis.
|
||||
|
||||
@@ -424,9 +422,9 @@ def test_connect_missing_required_credentials_still_raises(
|
||||
from pronote_sync.config.settings import PronoteSettings
|
||||
from pronote_sync.sources.pronote.client import PronoteClient
|
||||
|
||||
# Settings avec ent mais sans pronote_url
|
||||
# Settings avec ent mais sans url
|
||||
settings = PronoteSettings(
|
||||
pronote_url=None,
|
||||
url=None,
|
||||
username="testuser",
|
||||
password=SecretStr("testpass"),
|
||||
ent=None,
|
||||
@@ -439,7 +437,7 @@ def test_connect_missing_required_credentials_still_raises(
|
||||
client._connect()
|
||||
|
||||
# Error should NOT mention ent as required
|
||||
assert "pronote_url, username et password sont requis" in str(exc_info.value)
|
||||
assert "url, username et password sont requis" in str(exc_info.value)
|
||||
assert "ent" not in str(exc_info.value)
|
||||
|
||||
|
||||
@@ -453,7 +451,7 @@ def test_connect_missing_username_raises(mocker: pytest_mock.MockerFixture) -> N
|
||||
from pronote_sync.sources.pronote.client import PronoteClient
|
||||
|
||||
settings = PronoteSettings(
|
||||
pronote_url="https://pronote.example.com",
|
||||
url="https://pronote.example.com",
|
||||
username=None,
|
||||
password=SecretStr("testpass"),
|
||||
ent=None,
|
||||
@@ -465,7 +463,7 @@ def test_connect_missing_username_raises(mocker: pytest_mock.MockerFixture) -> N
|
||||
with pytest.raises(ValueError) as exc_info:
|
||||
client._connect()
|
||||
|
||||
assert "pronote_url, username et password sont requis" in str(exc_info.value)
|
||||
assert "url, username et password sont requis" in str(exc_info.value)
|
||||
|
||||
|
||||
def test_connect_missing_password_raises(mocker: pytest_mock.MockerFixture) -> None:
|
||||
@@ -478,7 +476,7 @@ def test_connect_missing_password_raises(mocker: pytest_mock.MockerFixture) -> N
|
||||
from pronote_sync.sources.pronote.client import PronoteClient
|
||||
|
||||
settings = PronoteSettings(
|
||||
pronote_url="https://pronote.example.com",
|
||||
url="https://pronote.example.com",
|
||||
username="testuser",
|
||||
password=None,
|
||||
ent=None,
|
||||
@@ -490,7 +488,7 @@ def test_connect_missing_password_raises(mocker: pytest_mock.MockerFixture) -> N
|
||||
with pytest.raises(ValueError) as exc_info:
|
||||
client._connect()
|
||||
|
||||
assert "pronote_url, username et password sont requis" in str(exc_info.value)
|
||||
assert "url, username et password sont requis" in str(exc_info.value)
|
||||
|
||||
|
||||
def test_connect_student_account_type(
|
||||
@@ -507,7 +505,7 @@ def test_connect_student_account_type(
|
||||
from pronote_sync.sources.pronote.client import PronoteClient
|
||||
|
||||
pronote_settings_student = PronoteSettings(
|
||||
pronote_url="https://pronote.example.com",
|
||||
url="https://pronote.example.com",
|
||||
username="testuser",
|
||||
password=SecretStr("testpass"),
|
||||
ent="bordeaux",
|
||||
@@ -542,7 +540,7 @@ def test_connect_with_ent_resolution_still_works(
|
||||
from pronote_sync.sources.pronote.client import PronoteClient
|
||||
|
||||
settings = PronoteSettings(
|
||||
pronote_url="https://pronote.example.com",
|
||||
url="https://pronote.example.com",
|
||||
username="testuser",
|
||||
password=SecretStr("testpass"),
|
||||
ent="bordeaux", # ent est fourni
|
||||
|
||||
Reference in New Issue
Block a user