在 conftest 中使用 opa http.send

Using opa http.send with conftest

我对使用conftest时的数据导入和内置opa函数的执行有疑问。在下面的代码示例中,我有两个模块 abcmain。我很方便地省略了 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 的 expected/intended 限制吗?我可以执行这些功能来构建我的数据文档吗?我是否正确导入了它?

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 未定义,通过扩展 subscirptionid 从未填充。这在 opa run -b . 中有效,因为数据文档的结构略有不同。 data.token.stuff 是在 conftest 中翻译成 data.stuff 的东西。