模拟自定义函数- open-policy-agent



我有几百个不同的*。Rego文件,每个都有不同的规则。每个规则都需要检查输入中的用户角色和方法。所以我决定用以下内容创建一个functions.rego

package abc.functions
method_and_role_valid(in, meth, role) {
in.method == meth
in.current_user_roles[_] == role
}

其他文档可以导入这个函数,而不必一次又一次地重新定义它,例如

package opa.abc.institutions.view
import data.abc.functions
default allow = false
allow {
functions.method_and_role_valid(input, "view", "administrator")
}

这项工作。但是,我需要为每条规则编写测试。在阅读了opa关于测试的指导方针,特别是模拟函数和数据之后,我尝试做以下操作

package opa.abc.institutions.view
test_allow_1 {
allow with input as {"method": "view", "current_user_roles": ["authenticated"]} with data.abc.functions.method_and_role_valid as true
}
test_deny_2 {
not allow with input as {"method": "view", "current_user_roles": ["authenticated"]} with data.abc.functions.method_and_role_valid as false
}

这会产生错误rego_type_error: undefined function data.abc.functions.method_and_role_valid

文档显示了内置函数的模拟示例(也用单个布尔值替换函数),真的没有办法模拟"custom"像我一样在虚拟文档中定义函数?

在你的代码中运行opa test .似乎可以正常工作:

❯ opa test .
PASS: 2/2

运行测试时是否忘记包含所有文件?

相关内容

  • 没有找到相关文章

最新更新