Spaces:
Running
Running
| """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 | |
| def service(): | |
| db = AsyncMock() | |
| redis = AsyncMock() | |
| svc = PlatformApiService(db, redis) | |
| svc._repo = AsyncMock() | |
| svc._audit = AsyncMock() | |
| return svc | |
| def actor(): | |
| user = MagicMock() | |
| user.id = "actor-uuid" | |
| user.email = "super@example.com" | |
| return user | |
| 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 | |