0

我在使用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 的预期/预期限制吗?我可以执行这些函数来构建我的数据文档并且我是否正确导入它?

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])
}
4

1 回答 1

0

我感觉。https://gist.github.com/b0bu/67d60fc0dbc5a9ae36406188117dfb36

问题是import data.token as auth

auth未定义,通过扩展 subscirptionid 从未填充过。这是opa run -b .因为数据文档的结构略有不同。是在conftestdata.token.stuff中翻译成的东西。data.stuff

于 2021-07-16T18:40:57.387 回答