我对OPA和rego文件很陌生。我创建了这样一个rego文件:
package sample.access
import data.myaccess
default allow = false
allow = true {
myaccess.is_user_allowed(input.user)
}此外,我还创建了这样的测试rego文件:
package sample.access
test_allow_positive{
allow with input as {
"user": "user1"
} with data.myaccess as {
{
{"user": "user1"},
{"user": "user2"}
}
}
}当我运行这个测试用例时,我得到的错误类似于"rego_type_error:未定义函数rego_type_error“帮我解决这个问题。谢谢
发布于 2021-05-11 19:32:52
我想这就是你想要做的:
创建一个规则,allow,如果input.user来自一组在调用时传递的用户,则返回input.user。要做到这一点,您可以使用以下规则:
package sample.access
allow {
data.allowed[input.user]
}相应的单元测试:
package sample.access
test_allow {
allow with input as {
"user": "user1"
} with data.allowed as {"user1", "user2"}
}
test_deny {
not allow with input as {
"user": "user3"
} with data.allowed as {"user1", "user2"}
}请注意,不需要显式导入将在运行时传递的参数。
如果需要以{"user": "id"}列表的形式输入数据,则应该使用集合理解。
package sample.access
allow {
is_user_allowed = {user | user = data.allowed[_].user}
is_user_allowed[input.user]
}然后,您的单元测试需要修改如下:
package sample.access
test_allow {
allow with input as {
"user": "user1"
} with data.allowed as {
{"user": "user1"},
{"user": "user2"}
}
}
test_deny {
not allow with input as {
"user": "user3"
} with data.allowed as {
{"user": "user1"},
{"user": "user2"}
}
}https://stackoverflow.com/questions/65870501
复制相似问题