【问题标题】:Specifying input.json file from another directory for use in opa test从另一个目录指定 input.json 文件以用于 opa 测试
【发布时间】:2022-07-18 22:26:51
【问题描述】:

我是 opa/rego 的新手,并且有一个我想运行的 opa 测试。在该测试 .rego 文件中,我想使用来自不同目录的 input.json 文件。有没有办法在测试文件中的“输入为_____”语句中指定该文件?即

test_allow {
    allow with input as <path-to-file>
}

到目前为止,我的想法使我尝试了 -b 选项,但目录相距甚远,我不希望捆绑那么大且依赖。此外,我考虑过导入语句,但我在 opa test 子命令中没有“-i”选项。我还尝试在 opa test 子命令中指定每个文件(.rego 策略文件、.rego 测试文件和输入文件),但无济于事。

非常感谢任何帮助

【问题讨论】:

    标签: json opa rego


    【解决方案1】:

    OPA,以及扩展的 OPA 测试运行程序,在策略评估时并没有真正考虑 文件。当 OPA 启动时,命令指向的所有文件/目录都合并到 data 属性下,然后可以通过它们的路径引用,例如data.my-mocks.mock1,等等。

    如果您想在测试中包含“测试数据”,您可以将这些文件保存在运行opa test 命令时包含的目录中。由于所有数据文件都已合并,因此您需要确保这些文件中没有冲突的路径。这通常通过使用每个项目的唯一“顶级”属性来完成。比如:

    {
        "mock1": {
            "item": "here"
        },
        "mock2": {
            "item": "here"
        }
    }
    

    然后您可以按照您的建议在测试中引用它:

    test_allow {
        allow with input as data.mock1.item
    }
    

    【讨论】:

      猜你喜欢
      • 2019-03-09
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多