mirror of
https://github.com/hoshikawa2/agent_platform_oci.git
synced 2026-09-07 18:23:46 +00:00
61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
import pytest
|
|
|
|
from agent_framework.guardrails.rails import ComplianceRail
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_cmp_accepts_expected_protocol_directly_even_when_regex_misses_markdown_distance():
|
|
rail = ComplianceRail()
|
|
text = (
|
|
"[FaturasAgent] Entendido. Seu aceite foi registrado e o protocolo de atendimento "
|
|
"foi aberto com o número **1234567890**."
|
|
)
|
|
|
|
decision = await rail.evaluate(
|
|
text,
|
|
{
|
|
"tipo_fluxo": "ajuste",
|
|
"expected_protocols": ["1234567890"],
|
|
},
|
|
)
|
|
|
|
assert decision.allowed is True
|
|
assert decision.sanitized_text is None
|
|
assert decision.metadata["protocol_validation"] == "expected_values"
|
|
assert decision.metadata["expected_protocols"] == ["1234567890"]
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_cmp_does_not_accept_a_different_protocol_when_expected_value_is_known():
|
|
rail = ComplianceRail()
|
|
text = "Seu protocolo é 9999999999."
|
|
|
|
decision = await rail.evaluate(
|
|
text,
|
|
{
|
|
"requer_protocolo": True,
|
|
"expected_protocols": ["1234567890"],
|
|
},
|
|
)
|
|
|
|
assert decision.allowed is True
|
|
assert decision.sanitized_text is not None
|
|
assert "um dois três quatro cinco seis sete oito nove zero" in decision.sanitized_text
|
|
assert decision.metadata["missing_protocols_spoken"] == [
|
|
"um dois três quatro cinco seis sete oito nove zero"
|
|
]
|
|
assert decision.metadata["protocol_validation"] == "expected_values"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_cmp_keeps_regex_compatibility_when_expected_protocols_are_unavailable():
|
|
rail = ComplianceRail()
|
|
|
|
decision = await rail.evaluate(
|
|
"Seu protocolo é 1234567890.",
|
|
{"requer_protocolo": True},
|
|
)
|
|
|
|
assert decision.allowed is True
|
|
assert decision.metadata["protocol_validation"] == "generic_regex"
|