| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- """Integration tests for GET /api/v1/virtual-printers/tailscale-status."""
- from unittest.mock import AsyncMock, patch
- import pytest
- from httpx import AsyncClient
- class TestTailscaleStatusAPI:
- """Tests for the tailscale-status endpoint."""
- @pytest.mark.asyncio
- @pytest.mark.integration
- async def test_tailscale_status_available(self, async_client: AsyncClient):
- """Returns 200 with available=true when Tailscale is connected."""
- from backend.app.services.virtual_printer.tailscale import TailscaleStatus
- mock_status = TailscaleStatus(
- available=True,
- hostname="myhost",
- tailnet_name="example.ts.net",
- fqdn="myhost.example.ts.net",
- tailscale_ips=["100.1.2.3"],
- )
- with patch("backend.app.api.routes.virtual_printers.tailscale_service") as mock_svc:
- mock_svc.get_status = AsyncMock(return_value=mock_status)
- response = await async_client.get("/api/v1/virtual-printers/tailscale-status")
- assert response.status_code == 200
- data = response.json()
- assert data["available"] is True
- assert data["fqdn"] == "myhost.example.ts.net"
- assert data["hostname"] == "myhost"
- assert data["tailnet_name"] == "example.ts.net"
- assert "100.1.2.3" in data["tailscale_ips"]
- assert data["error"] is None
- @pytest.mark.asyncio
- @pytest.mark.integration
- async def test_tailscale_status_unavailable(self, async_client: AsyncClient):
- """Returns 200 with available=false and error message when Tailscale is absent."""
- from backend.app.services.virtual_printer.tailscale import TailscaleStatus
- mock_status = TailscaleStatus(
- available=False,
- hostname="",
- tailnet_name="",
- fqdn="",
- error="tailscale binary not found",
- )
- with patch("backend.app.api.routes.virtual_printers.tailscale_service") as mock_svc:
- mock_svc.get_status = AsyncMock(return_value=mock_status)
- response = await async_client.get("/api/v1/virtual-printers/tailscale-status")
- assert response.status_code == 200
- data = response.json()
- assert data["available"] is False
- assert data["fqdn"] == ""
- assert data["error"] == "tailscale binary not found"
|