62 lines
1.4 KiB
Rego
62 lines
1.4 KiB
Rego
package proofedmesh.sinks.expense_db_app_test
|
|
|
|
import data.proofedmesh.sinks.expense_db_app as sink
|
|
import rego.v1
|
|
|
|
good_payload := {
|
|
"schema": {"name": "sink.db.expense", "version": "1.0.0"},
|
|
"workflow_id": "WF-2026-0001",
|
|
}
|
|
|
|
good_approval := {"allowed_sinks": ["sink:expense-db-app"]}
|
|
|
|
test_allow_posting if {
|
|
sink.allow with input as {
|
|
"sink_id": "sink:expense-db-app",
|
|
"agent_id": "agent-sink-posting",
|
|
"action": "expense.post",
|
|
"payload": good_payload,
|
|
"approval": good_approval,
|
|
}
|
|
}
|
|
|
|
test_deny_wrong_agent if {
|
|
not sink.allow with input as {
|
|
"sink_id": "sink:expense-db-app",
|
|
"agent_id": "agent-travel",
|
|
"action": "expense.post",
|
|
"payload": good_payload,
|
|
"approval": good_approval,
|
|
}
|
|
}
|
|
|
|
test_deny_wrong_action if {
|
|
not sink.allow with input as {
|
|
"sink_id": "sink:expense-db-app",
|
|
"agent_id": "agent-sink-posting",
|
|
"action": "expense.update",
|
|
"payload": good_payload,
|
|
"approval": good_approval,
|
|
}
|
|
}
|
|
|
|
test_deny_wrong_schema if {
|
|
bad := {"schema": {"name": "sink.sap.expense", "version": "1.0.0"}}
|
|
not sink.allow with input as {
|
|
"sink_id": "sink:expense-db-app",
|
|
"agent_id": "agent-sink-posting",
|
|
"action": "expense.post",
|
|
"payload": bad,
|
|
"approval": good_approval,
|
|
}
|
|
}
|
|
|
|
test_deny_sink_not_in_approval if {
|
|
not sink.allow with input as {
|
|
"sink_id": "sink:expense-db-app",
|
|
"agent_id": "agent-sink-posting",
|
|
"action": "expense.post",
|
|
"payload": good_payload,
|
|
"approval": {"allowed_sinks": ["sink:sap-s4hana-prod"]},
|
|
}
|
|
}
|