Harden production workflows and agent admission
This commit is contained in:
@@ -1,30 +1,30 @@
|
||||
import pytest
|
||||
|
||||
from ._helpers import make_event, make_heartbeat
|
||||
from ._helpers import make_event, register_agent
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_incident_key_ownership_rejected(app_client, auth_headers):
|
||||
await app_client.post("/api/v1/heartbeat", json=make_heartbeat("agent-1"), headers=auth_headers)
|
||||
await app_client.post("/api/v1/heartbeat", json=make_heartbeat("agent-2"), headers=auth_headers)
|
||||
async def test_incident_key_ownership_rejected(app_client, ui_auth_headers):
|
||||
agent_1_headers = await register_agent(app_client, ui_auth_headers, "agent-1")
|
||||
agent_2_headers = await register_agent(app_client, ui_auth_headers, "agent-2")
|
||||
|
||||
ev1 = make_event(status="critical", exit_code=2, incident_key="shared-key")
|
||||
r1 = await app_client.post(
|
||||
"/api/v1/events", json={"agent_id": "agent-1", "events": [ev1]}, headers=auth_headers
|
||||
"/api/v1/events", json={"agent_id": "agent-1", "events": [ev1]}, headers=agent_1_headers
|
||||
)
|
||||
assert r1.status_code == 202
|
||||
|
||||
ev2 = make_event(status="critical", exit_code=2, incident_key="shared-key")
|
||||
r2 = await app_client.post(
|
||||
"/api/v1/events", json={"agent_id": "agent-2", "events": [ev2]}, headers=auth_headers
|
||||
"/api/v1/events", json={"agent_id": "agent-2", "events": [ev2]}, headers=agent_2_headers
|
||||
)
|
||||
assert r2.status_code == 400
|
||||
assert r2.json()["error"]["code"] == "validation"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_incident_key_too_long(app_client, auth_headers):
|
||||
await app_client.post("/api/v1/heartbeat", json=make_heartbeat(), headers=auth_headers)
|
||||
async def test_incident_key_too_long(app_client, ui_auth_headers):
|
||||
auth_headers = await register_agent(app_client, ui_auth_headers)
|
||||
ev = make_event(status="critical", exit_code=2, incident_key="x" * 257)
|
||||
r = await app_client.post(
|
||||
"/api/v1/events", json={"agent_id": "agent-1", "events": [ev]}, headers=auth_headers
|
||||
@@ -33,20 +33,20 @@ async def test_incident_key_too_long(app_client, auth_headers):
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_events_query_cursor_pagination(app_client, auth_headers):
|
||||
await app_client.post("/api/v1/heartbeat", json=make_heartbeat(), headers=auth_headers)
|
||||
async def test_events_query_cursor_pagination(app_client, auth_headers, ui_auth_headers):
|
||||
auth_headers = await register_agent(app_client, ui_auth_headers)
|
||||
evs = [make_event(check_id=f"chk-{i}") for i in range(5)]
|
||||
await app_client.post(
|
||||
"/api/v1/events", json={"agent_id": "agent-1", "events": evs}, headers=auth_headers
|
||||
)
|
||||
r = await app_client.get("/api/v1/events/query?limit=2", headers=auth_headers)
|
||||
r = await app_client.get("/api/v1/events/query?limit=2", headers=ui_auth_headers)
|
||||
assert r.status_code == 200
|
||||
page1 = r.json()
|
||||
assert len(page1["items"]) == 2
|
||||
assert page1["next_cursor"]
|
||||
|
||||
r2 = await app_client.get(
|
||||
f"/api/v1/events/query?limit=2&cursor={page1['next_cursor']}", headers=auth_headers
|
||||
f"/api/v1/events/query?limit=2&cursor={page1['next_cursor']}", headers=ui_auth_headers
|
||||
)
|
||||
page2 = r2.json()
|
||||
assert len(page2["items"]) == 2
|
||||
|
||||
Reference in New Issue
Block a user