我在使用conftest时对数据导入和内置 opa 函数的执行有疑问。在下面的代码示例中,我有两个模块abc
和main
. 我方便地省略了一些设置abc
,重要的是它是一个有效的 https 调用。
从 repl 中工作,我的代码完全按照我的预期执行,即时获取数据available
并检查是否stuff
在该列表中。opa run -b .
然后点击data.abc
执行 https 调用,即我可以看到数据包离开我的界面,并且包含我需要的列表的响应正文被拉入。然后我从deny
. 运行时也会发生同样的事情opa test . -v
。
然而,运行conftest verify -p .
或 conftest test abc/main.json -p .
从不执行http.send
,即数据包永远不会离开我的预期主机接口。
我可以使用静态列表而不是使用 https 调用,但我无法控制列表何时更新。这是 conftest 的预期/预期限制吗?我可以执行这些函数来构建我的数据文档并且我是否正确导入它?
package abc
available = http.send(
{
"method": "get",
"url": request.url,
"headers": headers
}
)
package main
import data.abc.available
deny[msg] {
stuff := input.stuff
not available.body[stuff]
msg := sprintf("%v is not available", [stuff])
}