当使用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])
}
我觉得。https://gist.github.com/b0bu/67d60fc0dbc5a9ae36406188117dfb36
问题是import data.token as auth
auth
未定义,因此从未填充subscriptionid。这在opa run -b .
中起作用,因为数据文档的结构略有不同。CCD_ 16在conftest中被翻译为CCD_ 17。