"""Unit tests for SuperAdmin platform API credential service.""" from unittest.mock import AsyncMock, MagicMock, patch import pytest from fastapi import HTTPException from app.services.platform_api_service import PlatformApiService @pytest.fixture def service(): db = AsyncMock() redis = AsyncMock() svc = PlatformApiService(db, redis) svc._repo = AsyncMock() svc._audit = AsyncMock() return svc @pytest.fixture def actor(): user = MagicMock() user.id = "actor-uuid" user.email = "super@example.com" return user @pytest.mark.asyncio class TestPlatformApiService: async def test_upsert_provider_saves_scope_id(self, service, actor): service._repo.list_all = AsyncMock(return_value=[]) with patch("app.services.platform_api_service.build_provider_views") as views: views.return_value = {"providers": [], "platforms_without_api": []} await service.upsert_provider_credential( actor, provider_id="scrapingbee", api_key="sb-secret-key-123456", api_secret=None, is_enabled=True, ) call_kwargs = service._repo.upsert.await_args.kwargs assert call_kwargs["platform_id"] == "@provider:scrapingbee" assert call_kwargs["provider"] == "scrapingbee" service._audit.log.assert_awaited_once() async def test_upsert_rejects_unknown_provider(self, service, actor): with pytest.raises(HTTPException) as exc: await service.upsert_provider_credential( actor, provider_id="unknown", api_key="key12345678", api_secret=None, is_enabled=True, ) assert exc.value.status_code == 400