diff --git a/tests/subscriptions/test_db.py b/tests/subscriptions/test_db.py index 75c7065..dec9418 100644 --- a/tests/subscriptions/test_db.py +++ b/tests/subscriptions/test_db.py @@ -39,47 +39,47 @@ def test_init_schema_creates_table(users_db_path): def test_create_pending_and_get_by_user(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") row = db.get_by_user(uid) assert row["status"] == "pending" assert row["plan"] == "simple" - assert row["frisbii_customer_handle"] == "decpinfo-1" + assert row["frisbii_customer_handle"] == "colibre-1" def test_update_from_webhook_sets_status_and_handle(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") - db.update_from_webhook("decpinfo-1", "sub_42", "trial", _future()) + db.create_pending(uid, "colibre-1", "simple") + db.update_from_webhook("colibre-1", "sub_42", "trial", _future()) row = db.get_by_user(uid) assert row["status"] == "trial" assert row["frisbii_subscription_handle"] == "sub_42" - assert db.get_by_customer("decpinfo-1")["user_id"] == uid + assert db.get_by_customer("colibre-1")["user_id"] == uid def test_has_active_subscription_by_status(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") # pending → faux assert db.has_active_subscription(uid) is False for status in ("trial", "active"): - db.update_from_webhook("decpinfo-1", "sub_42", status, _future()) + db.update_from_webhook("colibre-1", "sub_42", status, _future()) assert db.has_active_subscription(uid) is True # cancelled futur → vrai, cancelled passé → faux - db.update_from_webhook("decpinfo-1", "sub_42", "cancelled", _future()) + db.update_from_webhook("colibre-1", "sub_42", "cancelled", _future()) assert db.has_active_subscription(uid) is True - db.update_from_webhook("decpinfo-1", "sub_42", "cancelled", _past()) + db.update_from_webhook("colibre-1", "sub_42", "cancelled", _past()) assert db.has_active_subscription(uid) is False - db.update_from_webhook("decpinfo-1", "sub_42", "expired", None) + db.update_from_webhook("colibre-1", "sub_42", "expired", None) assert db.has_active_subscription(uid) is False def test_set_cancelled(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") - db.update_from_webhook("decpinfo-1", "sub_42", "active", _future()) + db.create_pending(uid, "colibre-1", "simple") + db.update_from_webhook("colibre-1", "sub_42", "active", _future()) end = _future() db.set_cancelled(uid, end) row = db.get_by_user(uid) @@ -91,11 +91,11 @@ def test_has_active_subscription_z_suffix_datetime(users_db_path): """Fix 2 : suffix 'Z' dans current_period_end doit être parsé correctement.""" db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") # Frisbii peut renvoyer des dates avec 'Z' au lieu de '+00:00'. - db.update_from_webhook("decpinfo-1", "sub_42", "cancelled", "2099-12-31T23:59:59Z") + db.update_from_webhook("colibre-1", "sub_42", "cancelled", "2099-12-31T23:59:59Z") assert db.has_active_subscription(uid) is True - db.update_from_webhook("decpinfo-1", "sub_42", "cancelled", "2020-01-01T00:00:00Z") + db.update_from_webhook("colibre-1", "sub_42", "cancelled", "2020-01-01T00:00:00Z") assert db.has_active_subscription(uid) is False @@ -103,7 +103,7 @@ def test_has_active_subscription_bad_datetime_returns_false(users_db_path): """Fix 2 : une date invalide ne doit pas lever d'exception, juste retourner False.""" db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") # Injection directe d'une valeur invalide via update bas-niveau. from src.auth.db import get_conn @@ -118,21 +118,21 @@ def test_has_active_subscription_bad_datetime_returns_false(users_db_path): def test_trial_used_is_sticky_across_resubscribe(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") assert db.has_used_trial(uid) is False # l'abonnement entre en essai → trial_used positionné - db.update_from_webhook("decpinfo-1", "sub_42", "trial", _future()) + db.update_from_webhook("colibre-1", "sub_42", "trial", _future()) assert db.has_used_trial(uid) is True # essai abandonné, puis nouvelle souscription : trial_used reste vrai - db.update_from_webhook("decpinfo-1", "sub_42", "expired", _past()) - db.create_pending(uid, "decpinfo-1", "soutien") + db.update_from_webhook("colibre-1", "sub_42", "expired", _past()) + db.create_pending(uid, "colibre-1", "soutien") assert db.has_used_trial(uid) is True def test_init_schema_creates_votes_columns(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") row = db.get_by_user(uid) assert row["votes_balance"] == 0 assert row["votes_last_credited_at"] is None @@ -141,7 +141,7 @@ def test_init_schema_creates_votes_columns(users_db_path): def test_credit_pending_grants_initial_two_on_first_active(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") _activate(uid, cursor_iso=None) balance = db.credit_pending(uid) assert balance == db.INITIAL_VOTES @@ -151,7 +151,7 @@ def test_credit_pending_grants_initial_two_on_first_active(users_db_path): def test_credit_pending_is_idempotent_same_day(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") _activate(uid, cursor_iso=None) db.credit_pending(uid) assert db.credit_pending(uid) == db.INITIAL_VOTES # aucun crédit supplémentaire @@ -160,7 +160,7 @@ def test_credit_pending_is_idempotent_same_day(users_db_path): def test_credit_pending_capped_at_votes_per_week(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") fifteen_days_ago = (datetime.now(timezone.utc) - timedelta(days=15)).isoformat() _activate(uid, cursor_iso=fifteen_days_ago) # 15 jours = 2 semaines pleines, mais le solde est cappé à VOTES_PER_WEEK @@ -170,14 +170,14 @@ def test_credit_pending_capped_at_votes_per_week(users_db_path): def test_credit_pending_no_credit_when_not_active(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") # statut 'pending' + db.create_pending(uid, "colibre-1", "simple") # statut 'pending' assert db.credit_pending(uid) == 0 def test_spend_vote_decrements_when_balance_positive(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") _activate(uid, cursor_iso=None) db.credit_pending(uid) # solde = INITIAL_VOTES assert db.spend_vote(uid) is True @@ -187,7 +187,7 @@ def test_spend_vote_decrements_when_balance_positive(users_db_path): def test_spend_vote_refused_when_balance_zero(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") _activate(uid, cursor_iso=None) # solde reste 0 tant que credit_pending n'est pas appelé assert db.spend_vote(uid) is False @@ -196,11 +196,11 @@ def test_spend_vote_refused_when_balance_zero(users_db_path): def test_reactivation_resets_cursor_without_regranting(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") + db.create_pending(uid, "colibre-1", "simple") _activate(uid, cursor_iso=None) db.credit_pending(uid) # +3, curseur posé # désabonnement - db.update_from_webhook("decpinfo-1", "sub_1", "cancelled", _future()) + db.update_from_webhook("colibre-1", "sub_1", "cancelled", _future()) # période sans abonnement simulée : on recule artificiellement le curseur old_cursor = (datetime.now(timezone.utc) - timedelta(days=30)).isoformat() db.get_conn().execute( @@ -208,7 +208,7 @@ def test_reactivation_resets_cursor_without_regranting(users_db_path): (old_cursor, uid), ) # réabonnement - db.update_from_webhook("decpinfo-1", "sub_1", "active", _future()) + db.update_from_webhook("colibre-1", "sub_1", "active", _future()) row = db.get_by_user(uid) assert row["votes_balance"] == db.INITIAL_VOTES # pas de re-crédit des +3 # le curseur a été remis ~à maintenant → pas de crédit du gap de 30 jours @@ -218,8 +218,8 @@ def test_reactivation_resets_cursor_without_regranting(users_db_path): def test_trial_to_active_does_not_reset_then_grants_two(users_db_path): db.init_schema() uid = _make_user() - db.create_pending(uid, "decpinfo-1", "simple") - db.update_from_webhook("decpinfo-1", "sub_1", "trial", _future()) - db.update_from_webhook("decpinfo-1", "sub_1", "active", _future()) + db.create_pending(uid, "colibre-1", "simple") + db.update_from_webhook("colibre-1", "sub_1", "trial", _future()) + db.update_from_webhook("colibre-1", "sub_1", "active", _future()) # fin d'essai : credit_pending accorde les +INITIAL_VOTES initiaux assert db.credit_pending(uid) == db.INITIAL_VOTES