File size: 2,091 Bytes
afa4de7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | """
Tests for governance endpoints: /api/v1/intents/evaluate
"""
def test_evaluate_provision_intent(client):
payload = {
"intent_type": "provision_resource",
"environment": "prod",
"resource_type": "database",
"region": "eastus",
"size": "Standard",
"estimated_cost": 1200,
"policy_violations": [],
"requester": "alice",
"provenance": {},
"configuration": {}
}
response = client.post("/api/v1/intents/evaluate", json=payload)
assert response.status_code == 200, response.text
data = response.json()
assert "risk_score" in data
def test_evaluate_grant_access(client):
payload = {
"intent_type": "grant_access",
"environment": "dev",
"principal": "bob",
"permission_level": "read",
"resource_scope": "/subscriptions/123",
"estimated_cost": None,
"policy_violations": [],
"requester": "alice",
"provenance": {},
"justification": "test"
}
response = client.post("/api/v1/intents/evaluate", json=payload)
assert response.status_code == 200, response.text
data = response.json()
assert "risk_score" in data
def test_evaluate_deploy_config(client):
payload = {
"intent_type": "deploy_config",
"environment": "staging",
"service_name": "payments-api",
"change_scope": "canary",
"deployment_target": "staging",
"estimated_cost": 20,
"policy_violations": [],
"requester": "alice",
"provenance": {},
"configuration": {}
}
response = client.post("/api/v1/intents/evaluate", json=payload)
assert response.status_code == 200, response.text
data = response.json()
assert "risk_score" in data
def test_invalid_intent_type(client):
payload = {
"intent_type": "UnknownIntent",
"environment": "prod",
"requester": "alice",
"provenance": {}
}
response = client.post("/api/v1/intents/evaluate", json=payload)
assert response.status_code == 422
|