Agentic-Reliability-Framework-API / tests /test_intent_adapter.py
petter2025's picture
Upload folder using huggingface_hub
afa4de7 verified
raw
history blame
5.85 kB
import pytest
from app.services.intent_adapter import to_oss_intent, IntentAdapterError
def test_unknown_intent_type():
"""Unknown intent_type raises IntentAdapterError."""
with pytest.raises(IntentAdapterError, match="Unknown intent_type: UnknownIntent"):
to_oss_intent({"intent_type": "UnknownIntent",
"environment": "prod", "requester": "alice"})
def test_missing_intent_type():
"""Missing intent_type raises IntentAdapterError."""
with pytest.raises(IntentAdapterError, match="Missing 'intent_type' in request"):
to_oss_intent({})
def test_missing_environment():
"""Missing environment raises IntentAdapterError."""
payload = {"intent_type": "provision_resource"}
with pytest.raises(IntentAdapterError, match="Missing 'environment' field"):
to_oss_intent(payload)
def test_invalid_environment():
"""Invalid environment value raises IntentAdapterError."""
payload = {
"intent_type": "provision_resource",
"environment": "invalid_env",
"requester": "alice",
}
with pytest.raises(IntentAdapterError, match="Invalid environment: invalid_env"):
to_oss_intent(payload)
def test_missing_requester():
"""Missing requester raises IntentAdapterError."""
payload = {
"intent_type": "provision_resource",
"environment": "prod",
}
with pytest.raises(IntentAdapterError, match="Missing 'requester' field"):
to_oss_intent(payload)
def test_valid_provision_intent():
"""Valid provision_resource payload returns ProvisionResourceIntent."""
payload = {
"intent_type": "provision_resource",
"environment": "prod",
"resource_type": "database",
"region": "eastus",
"size": "Standard",
"requester": "alice",
"configuration": {"foo": "bar"},
"provenance": {"source": "test"},
}
intent = to_oss_intent(payload)
# Now resource_type is a string, not an enum
assert intent.resource_type == "database"
assert intent.region == "eastus"
assert intent.size == "Standard"
assert intent.environment == "prod" # string, not .value
assert intent.requester == "alice"
assert intent.configuration == {"foo": "bar"}
def test_provision_missing_resource_type():
"""Missing resource_type raises IntentAdapterError."""
payload = {
"intent_type": "provision_resource",
"environment": "prod",
"region": "eastus",
"size": "Standard",
"requester": "alice",
}
with pytest.raises(IntentAdapterError, match="Missing 'resource_type'"):
to_oss_intent(payload)
def test_provision_invalid_resource_type():
"""Invalid resource_type raises IntentAdapterError."""
payload = {
"intent_type": "provision_resource",
"environment": "prod",
"resource_type": "invalid_type",
"region": "eastus",
"size": "Standard",
"requester": "alice",
}
with pytest.raises(IntentAdapterError, match="Invalid resource_type: invalid_type"):
to_oss_intent(payload)
def test_valid_grant_intent():
"""Valid grant_access payload returns GrantAccessIntent."""
payload = {
"intent_type": "grant_access",
"environment": "dev",
"principal": "bob",
"permission_level": "read",
"resource_scope": "/subscriptions/123",
"requester": "alice",
"justification": "testing",
"provenance": {},
}
intent = to_oss_intent(payload)
assert intent.principal == "bob"
assert intent.permission_level == "read"
assert intent.resource_scope == "/subscriptions/123"
assert intent.requester == "alice"
def test_grant_missing_principal():
"""Missing principal raises IntentAdapterError."""
payload = {
"intent_type": "grant_access",
"environment": "dev",
"permission_level": "read",
"resource_scope": "/subscriptions/123",
"requester": "alice",
}
with pytest.raises(IntentAdapterError, match="Missing 'principal'"):
to_oss_intent(payload)
def test_valid_deploy_intent():
"""Valid deploy_config payload returns DeployConfigurationIntent."""
payload = {
"intent_type": "deploy_config",
"environment": "staging",
"service_name": "payments-api",
"change_scope": "canary",
"deployment_target": "staging",
"requester": "alice",
"risk_level_hint": "low",
"configuration": {"replicas": 3},
"provenance": {},
}
intent = to_oss_intent(payload)
assert intent.service_name == "payments-api"
assert intent.change_scope == "canary"
assert intent.deployment_target == "staging"
assert intent.requester == "alice"
# risk_level_hint is not passed through; accept None
assert intent.risk_level_hint is None
def test_deploy_missing_service_name():
"""Missing service_name raises IntentAdapterError."""
payload = {
"intent_type": "deploy_config",
"environment": "staging",
"change_scope": "canary",
"deployment_target": "staging",
"requester": "alice",
}
with pytest.raises(IntentAdapterError, match="Missing 'service_name'"):
to_oss_intent(payload)
def test_pydantic_model_support():
"""Test that Pydantic models are handled correctly (simulated)."""
class MockModel:
def model_dump(self):
return {
"intent_type": "provision_resource",
"environment": "prod",
"resource_type": "database",
"region": "eastus",
"size": "Standard",
"requester": "alice",
}
intent = to_oss_intent(MockModel())
assert intent.resource_type == "database" # string, not .value