From 31fe0c181ad3cb162224b30887b9d5abbecc605a Mon Sep 17 00:00:00 2001 From: Spark Date: Sat, 7 Nov 2026 04:52:49 +0000 Subject: [PATCH] tests: ouvrir explicitement l'inscription dans les fixtures locales de test_app et test_v66_agent_api (fusion #146) --- CHANGELOG.md | 2 +- tests/test_app.py | 6 ++++++ tests/test_v66_agent_api.py | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cacc8c1..6d03851 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ - **#146 — l'inscription publique locale n'est plus ouverte par défaut** : nouveau réglage d'administration « inscription locale ouverte » (`app/services/reglages_acces.py`, patron `llm_config`/`sso_config` : ligne unique en base qui prime sur la variable `INSCRIPTION_LOCALE_OUVERTE`, défaut **fermée** — décision de Bruno : les comptes naissent dans le Hub Dracodev). Réversible à tout moment par un administrateur via `GET`/`PUT /api/admin/reglages-acces`. - **Quand elle est fermée** : `POST /auth/register` répond 403 et `GET /auth/register` affiche une page de refus propre en français — les comptes se créent dans le Hub Dracodev, avec le lien du Hub dérivé de l'hôte (`draco_urls.hub_url()`, comme les autres liens de la suite) ; l'onglet Register disparaît de l'écran de connexion (avis nommant le Hub à la place) et les boutons « Get started » de la page d'accueil cèdent la place au lien Hub. **La connexion des comptes existants, locaux comme draco, n'est jamais affectée.** - **#144 (part Flowdeck)** : l'échec du formulaire de connexion locale (« Invalid credentials », 401) suggère désormais la voie centrale : « Si votre compte a été créé dans le Hub Dracodev, connectez-vous avec le bouton « Login with ObsiGate (SSO) »… » — le bouton existant, dont le libellé est repris tel quel. Aucune logique d'authentification ne change. -- **Tests** : `tests/test_reglages_acces.py` (nouveau, 12 tests) — fermée par défaut (défaut du code vérifié), POST refusé 403 + message + aucun compte créé, page de refus, onglet Register absent, ouverte = inscription d'aujourd'hui, connexion des comptes existants (local et draco) inchangée ouvert/fermé, échec local nommant ObsiGate (SSO), aller-retour de l'API d'administration et refus aux anonymes. Le harnais de test ouvre explicitement l'inscription pour les suites historiques qui créent leurs comptes par `/auth/register` (conftest, commenté). +- **Tests** : `tests/test_reglages_acces.py` (nouveau, 12 tests) — fermée par défaut (défaut du code vérifié), POST refusé 403 + message + aucun compte créé, page de refus, onglet Register absent, ouverte = inscription d'aujourd'hui, connexion des comptes existants (local et draco) inchangée ouvert/fermé, échec local nommant ObsiGate (SSO), aller-retour de l'API d'administration et refus aux anonymes. Le harnais de test ouvre explicitement l'inscription pour les suites historiques qui créent leurs comptes par `/auth/register` (conftest et les fixtures locales des suites historiques, commenté). ## v7.85.4 (2026-11-06) — Barre commune v0.6.0 re-vendangée : entrée « Administration » (fusion #142) diff --git a/tests/test_app.py b/tests/test_app.py index a5b4025..4cf8ea1 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -31,6 +31,12 @@ def client(): from app.main import app init_db() + # Fusion #146 : inscription fermée par défaut en production — + # cette suite historique crée ses comptes par /auth/register, + # elle ouvre donc le réglage explicitement (comme conftest). + from app.services import reglages_acces + reglages_acces.set_reglages_acces(inscription_locale_ouverte=True) + # A default user id=1 so tests that reference the implicit user (favorites, # workspace ownership) satisfy foreign keys without relying on leaked state. from app.db import get_conn diff --git a/tests/test_v66_agent_api.py b/tests/test_v66_agent_api.py index f7f11d8..75e0e33 100644 --- a/tests/test_v66_agent_api.py +++ b/tests/test_v66_agent_api.py @@ -42,6 +42,11 @@ def client(): settings.agent_run_timeout_seconds = 30 init_db() + # Fusion #146 : inscription fermée par défaut en production — + # _token() crée ses comptes par /auth/register, la suite ouvre + # donc le réglage explicitement (comme conftest). + from app.services import reglages_acces + reglages_acces.set_reglages_acces(inscription_locale_ouverte=True) with get_conn() as conn: conn.execute( "INSERT OR IGNORE INTO users (login, full_name, email, password_hash, is_admin) "