Conftest 验证装置数据

问题描述

我一直在使用 Conftest 编写一些策略,并希望使用 conftest verify 命令验证我的配置。到目前为止,我已经能够像这样成功验证我的政策

test_deployment_with_security_context {
  no_violations with input as {
     ... json content ...
  }
}

然而,上面省略的 JSON 内容相当大,并且使我的策略测试变得混乱。我想将 JSON 放入一个文件并将其导入到测试中。 conftest verify 命令采用 --data 标志,允许将文件作为数据加载并可供策略使用。例如,根据文档,conftest verify --data policy 将递归加载它找到的 YAML 和 JSON 文件。因此,位于 policy/examples/input.json 中的文件import data.examples 下的策略中可用。我的问题是如何在测试中使用这些数据?

解决方法

对此有一个 open issue - 文档当前反映了 OPA 从目录中递归读取数据文件并使用目录名称进行命名空间的行为。此行为目前反映在 conftest 中。我建议跟踪票证的进展情况。作为在此之前的解决方法,您始终可以自己“命名空间”数据,以便您的 input.json 看起来像这样:

{
  "examples": {
     "actual_data": {
        ...
     }
  }
}