From fc7d6138d91bbbe162aa1214f403a133e54ae8e5 Mon Sep 17 00:00:00 2001 From: Codecraft Ops Date: Mon, 10 Aug 2026 05:27:53 +0300 Subject: [PATCH] Fix portal service provider attribution --- api/routes/portal.py | 2 +- tests/test_portal_token.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/api/routes/portal.py b/api/routes/portal.py index 242bd72..a1471d5 100644 --- a/api/routes/portal.py +++ b/api/routes/portal.py @@ -1081,7 +1081,7 @@ async def portal_create_service( now = datetime.now(timezone.utc).isoformat() service = { "id": str(uuid.uuid4()), - "provider_id": provider.get("api_key_id") or provider["id"], + "provider_id": provider["id"], "name": name, "description": description, "endpoint": endpoint, diff --git a/tests/test_portal_token.py b/tests/test_portal_token.py index 4c2eaf5..ddddee8 100644 --- a/tests/test_portal_token.py +++ b/tests/test_portal_token.py @@ -229,6 +229,38 @@ def test_revoked_token_rejected(self, client, provider_account, db): assert resp.status_code == 401 or resp.status_code == 403 +class TestPortalServiceCreation: + def test_created_service_belongs_to_portal_provider( + self, client, provider_account, db + ): + cookies = _session_cookie(provider_account["id"]) + csrf = _get_csrf(client, cookies) + + resp = client.post( + "/portal/services/create", + data={ + "csrf_token": csrf, + "name": "Portal Test Service", + "description": "An external API created through the provider portal.", + "endpoint": "https://example.com/api", + "price_per_call": "0.05", + "free_tier_calls": "2", + "category": "data", + "service_type": "external", + }, + cookies=cookies, + ) + + assert resp.status_code == 200 + assert "Portal Test Service" in resp.text + with db.connect() as conn: + service = conn.execute( + "SELECT provider_id FROM services WHERE name = ?", + ("Portal Test Service",), + ).fetchone() + assert service["provider_id"] == provider_account["id"] + + class TestSettingsPagePATDisplay: def test_settings_shows_generate_button(self, client, provider_account): cookies = _session_cookie(provider_account["id"])