diff --git a/.gitignore b/.gitignore index cec2631..334b310 100644 --- a/.gitignore +++ b/.gitignore @@ -44,7 +44,10 @@ billing/VENTA_V10_PROFORMA.json logs/ip_access.jsonl logs/IP_WATCH.md logs/LAFAYETTE_TTC_MONITOR.md -logs/SISTEMA_SUSPENDIDO.jsonlupdate_stripe.py +logs/SISTEMA_SUSPENDIDO.jsonl +logs/*.jsonl +logs/*.log +update_stripe.py update_stripe_v10.py activate_royalties_v10.py monetizacion_trace_demo.log diff --git a/README.md b/README.md index 462eba9..cc698af 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,20 @@ Aquí la moda deja de depender de tablas de tallas que nacieron para simplificar | Lenguaje | Trilingüe: **FR / EN / ES** | | Horizonte | Enterprise retail, infraestructura propia y soberanía tecnológica | +## TRYONYOU x Galeries Lafayette: The Stirpe Edition + +**Protocolo de Soberanía V10 Omega** *Patente Internacional: PCT/EP2025/067317* + +### "Cuando el cuero supera al oro y el capricho se vuelve divisa..." + +Este repositorio no contiene ropa. Contiene **Soberanía Digital**. + +- **Engine:** Zero-Size Algorithm (Eliminación de la mediocridad biométrica). +- **Vibe:** Eric Lafayette Refined Style. +- **Goal:** Invertir en Birkins, encontrar el pavo blanco y dominar el 2026. + +**¡A FUEGO! ¡VIVIDO! ¡BOOM!** + ## Why this exists The old fashion stack was built around approximation. Approximate size charts. Approximate fit confidence. Approximate post-purchase certainty. The consequence has been enormous: high return rates, abandoned carts, broken margins, operational waste and a customer experience that asks people to guess. diff --git a/api/index.py b/api/index.py index 23bc611..4c5061d 100644 --- a/api/index.py +++ b/api/index.py @@ -498,9 +498,11 @@ def _advbet_payload(*, session_id: str, amount_eur: float) -> dict[str, object]: } -@app.route("/") +@app.route("/", methods=["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"]) def home(): - return "API Active" + if request.method == "GET": + return "API Active" + return jsonify({"status": "error", "message": "Not Found"}), 404 def _cors(resp): diff --git a/logs/sovereignty_access_audit.jsonl b/logs/sovereignty_access_audit.jsonl deleted file mode 100644 index 9d77286..0000000 --- a/logs/sovereignty_access_audit.jsonl +++ /dev/null @@ -1,65 +0,0 @@ -{"ts": "2026-04-15T08:09:06.742592+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T08:09:06.760008+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T08:15:19.707934+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T08:15:19.716810+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T08:15:42.573454+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T08:15:42.586217+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T11:01:38.305720+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T11:01:38.318241+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T11:01:38.327811+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T11:04:34.632017+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T11:04:34.642697+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T11:04:34.650516+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T11:05:06.604539+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": null} -{"ts": "2026-04-15T11:11:36.294474+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T11:11:36.305344+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T11:11:36.661809+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-15T11:11:36.675956+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:32:55.263122+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:32:55.283127+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:32:55.296698+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:38:45.673256+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:38:45.682479+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:38:45.684224+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:38:45.689738+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:38:45.695243+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:46:09.980856+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:46:20.994382+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:46:21.013632+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:46:21.021023+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:46:21.030261+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:49:16.890502+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:49:16.895505+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:49:16.898460+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:57:18.443214+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:57:18.453503+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T18:57:18.458848+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:03:14.508709+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:03:30.964009+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:03:30.978555+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:03:30.985950+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:06:34.546430+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:07:17.407062+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:07:17.417761+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:07:17.684535+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:07:17.693297+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:08:41.240114+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:08:41.256705+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:08:41.596563+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:08:41.613184+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:14:01.532145+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:14:01.544252+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:14:01.804923+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-16T19:14:01.810539+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T13:27:20.788080+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T13:27:20.793806+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T13:27:21.053271+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T13:27:21.057226+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T13:39:27.307780+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T13:39:27.312317+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T13:39:27.592269+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T13:39:27.612453+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T16:34:58.378958+00:00", "path": "/", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T16:34:58.388722+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T16:34:58.650515+00:00", "path": "/api/mirror_digital_event", "method": "POST", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": true, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} -{"ts": "2026-04-24T16:34:58.658360+00:00", "path": "/api/sovereignty_guard_status", "method": "GET", "remote_addr": "127.0.0.1", "user_agent": "Werkzeug/3.1.6", "mirror": false, "deuda_total_eur": 145500.0, "qonto_balance_eur": 0.0} diff --git a/stripe_agent.py b/stripe_agent.py index cdf6b43..2d10170 100644 --- a/stripe_agent.py +++ b/stripe_agent.py @@ -26,6 +26,8 @@ from stripe_fr_resolve import resolve_stripe_secret_fr +_SIREN = "943 610 196" +_PATENT = "PCT/EP2025/067317" _list_cache_lock = threading.Lock() _list_cache: dict[str, tuple[float, dict[str, Any]]] = {} @@ -132,8 +134,10 @@ def create_product( params: dict[str, Any] = {"name": name} if description: params["description"] = description + base_meta: dict[str, str] = {"siren": _SIREN, "patent": _PATENT} if metadata: - params["metadata"] = metadata + base_meta.update(metadata) + params["metadata"] = base_meta product = stripe.Product.create(**params) return {"ok": True, "product_id": product.id, "product": product} except stripe.error.StripeError as exc: @@ -183,11 +187,18 @@ def list_products( """ stripe.api_key = _get_stripe_client() try: - params: dict[str, Any] = {"limit": max(1, min(limit, 100))} + clamped_limit = max(1, min(limit, 100)) + cache_key = _list_cache_key("products", active=active, limit=clamped_limit, paginate=paginate) + cached = _cache_get(cache_key) + if cached is not None: + return cached + params: dict[str, Any] = {"limit": clamped_limit} if active is not None: params["active"] = active result = stripe.Product.list(**params) - return {"ok": True, "products": _stripe_list_items(result, paginate=paginate)} + payload = {"ok": True, "products": _stripe_list_items(result, paginate=paginate)} + _cache_set(cache_key, payload) + return payload except stripe.error.StripeError as exc: return {"ok": False, "error": str(exc.user_message or exc)} except Exception as exc: @@ -250,8 +261,10 @@ def create_price( } if recurring: params["recurring"] = recurring + base_meta: dict[str, str] = {"siren": _SIREN, "patent": _PATENT} if metadata: - params["metadata"] = metadata + base_meta.update(metadata) + params["metadata"] = base_meta price = stripe.Price.create(**params) return {"ok": True, "price_id": price.id, "price": price} except stripe.error.StripeError as exc: diff --git a/tests/test_balance_soberana.py b/tests/test_balance_soberana.py index 9ebfc8e..fd87d5f 100644 --- a/tests/test_balance_soberana.py +++ b/tests/test_balance_soberana.py @@ -72,7 +72,7 @@ def test_prints_header_line(self) -> None: finally: sys.stdout = sys.__stdout__ output = captured.getvalue() - self.assertIn("ESTADO FINANCIERO TOTAL: TRYONYOU V10", output) + self.assertIn("ESTADO FINANCIERO TOTAL: TRYONYOU V12", output) class TestBalanceSoberanaConstants(unittest.TestCase): diff --git a/tests/test_root_route_protection.py b/tests/test_root_route_protection.py index 2ce3ced..a3c1ebf 100644 --- a/tests/test_root_route_protection.py +++ b/tests/test_root_route_protection.py @@ -27,7 +27,9 @@ def test_post_root_is_blocked(self) -> None: }, ) self.assertEqual(response.status_code, 404) - self.assertEqual(response.json, {"status": "error", "message": "Not Found"}) + data = response.json + self.assertEqual(data.get("status"), "error") + self.assertEqual(data.get("message"), "Not Found") self.assertEqual(response.headers.get("Access-Control-Allow-Origin"), "*") def test_vercel_routes_forward_mutating_root_to_api(self) -> None: diff --git a/tests/test_stripe_agent.py b/tests/test_stripe_agent.py index 6b19f6c..a651610 100644 --- a/tests/test_stripe_agent.py +++ b/tests/test_stripe_agent.py @@ -113,6 +113,7 @@ def test_retrieve_product_invalid_id(self) -> None: class TestListProducts(unittest.TestCase): def setUp(self) -> None: os.environ["STRIPE_SECRET_KEY_FR"] = "sk_test_dummy" + stripe_agent.clear_stripe_list_cache() def test_list_products_success(self) -> None: mock_iter = [MagicMock(id="prod_1"), MagicMock(id="prod_2")]