- Fixed CLI tests by patching local imports at source (psutil, os, Path). - Fixed Collector tests by globalizing docker.from_env mock. - Stabilized SSE stream tests via AsyncMock and immediate generator termination to prevent hangs. - Achieved >80% coverage on CLI (84%), Collector (97%), and DB Repository (100%). - Implemented SMTP Relay service tests (100%).
42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
"""
|
|
Tests for the mutate decky API endpoint.
|
|
"""
|
|
|
|
import pytest
|
|
import httpx
|
|
from unittest.mock import patch
|
|
|
|
|
|
class TestMutateDecky:
|
|
@pytest.mark.asyncio
|
|
async def test_unauthenticated_returns_401(self, client: httpx.AsyncClient):
|
|
resp = await client.post("/api/v1/deckies/decky-01/mutate")
|
|
assert resp.status_code == 401
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_successful_mutation(self, client: httpx.AsyncClient, auth_token: str):
|
|
with patch("decnet.web.router.fleet.api_mutate_decky.mutate_decky", return_value=True):
|
|
resp = await client.post(
|
|
"/api/v1/deckies/decky-01/mutate",
|
|
headers={"Authorization": f"Bearer {auth_token}"},
|
|
)
|
|
assert resp.status_code == 200
|
|
assert "Successfully mutated" in resp.json()["message"]
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_failed_mutation_returns_404(self, client: httpx.AsyncClient, auth_token: str):
|
|
with patch("decnet.web.router.fleet.api_mutate_decky.mutate_decky", return_value=False):
|
|
resp = await client.post(
|
|
"/api/v1/deckies/decky-01/mutate",
|
|
headers={"Authorization": f"Bearer {auth_token}"},
|
|
)
|
|
assert resp.status_code == 404
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_invalid_decky_name_returns_422(self, client: httpx.AsyncClient, auth_token: str):
|
|
resp = await client.post(
|
|
"/api/v1/deckies/INVALID NAME!!/mutate",
|
|
headers={"Authorization": f"Bearer {auth_token}"},
|
|
)
|
|
assert resp.status_code == 422
|