""" Tests for governance endpoints: /api/v1/intents/evaluate """ import pytest from app.database.models_intents import TenantDB @pytest.fixture(autouse=True) def seed_tenant(db_session): """Ensure the tenant 'test-tenant' exists before each test.""" tenant = db_session.query(TenantDB).filter_by(id="test-tenant").first() if not tenant: db_session.add(TenantDB(id="test-tenant", name="Test Tenant")) db_session.commit() 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, headers={"X-Tenant-ID": "test-tenant"}) 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, headers={"X-Tenant-ID": "test-tenant"}) 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, headers={"X-Tenant-ID": "test-tenant"}) 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, headers={"X-Tenant-ID": "test-tenant"}) assert response.status_code == 422