# backend/tests/test_psa_tickets.py """Routing and auth tests for new ticket management endpoints.""" import pytest @pytest.mark.asyncio async def test_create_ticket_requires_auth(client): """POST /tickets returns 401 without auth.""" response = await client.post( "/api/v1/integrations/psa/tickets", json={ "summary": "Test", "company_id": 1, "board_id": 1, "status_id": 1, "priority_id": 1 }, ) assert response.status_code == 401 @pytest.mark.asyncio async def test_list_resources_requires_auth(client): response = await client.get("/api/v1/integrations/psa/tickets/1/resources") assert response.status_code == 401 @pytest.mark.asyncio async def test_search_tickets_returns_paginated_shape(client, auth_headers): """search endpoint returns TicketListResponse shape when no PSA connected.""" response = await client.get( "/api/v1/integrations/psa/tickets/search", headers=auth_headers, ) # No PSA connection → 400 or 502; with PSA → 200 assert response.status_code in (200, 400, 502) if response.status_code == 200: data = response.json() assert "items" in data assert "total" in data assert "page" in data @pytest.mark.asyncio async def test_update_status_requires_auth(client): response = await client.patch( "/api/v1/integrations/psa/tickets/1/status?status_id=5" ) assert response.status_code == 401 @pytest.mark.asyncio async def test_ai_parse_requires_auth(client): response = await client.post( "/api/v1/integrations/psa/tickets/ai-parse", json={"prompt": "New ticket for Acme"}, ) assert response.status_code == 401