Arag / tests /unit /test_platform_api_service.py
AuthorBot
SuperAdmin QoL: persistent session, TOTP session, shared provider keys.
65a6194
Raw
History Blame Contribute Delete
1.8 kB
"""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