diff --git a/Project.toml b/Project.toml index 9e9987d..b4a9550 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "OpenPolicyAgent" uuid = "8f257efb-743c-4ebc-8197-d291a1f743b4" authors = ["JuliaHub Inc.", "Tanmay Mohapatra "] -version = "0.3.1" +version = "0.3.2" [deps] Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" diff --git a/src/utils/sql.jl b/src/utils/sql.jl index ecff1eb..366e198 100644 --- a/src/utils/sql.jl +++ b/src/utils/sql.jl @@ -159,7 +159,7 @@ function visit(visitor::SQLVisitor, ref::AST.OPARef) return nothing end -function visit(visitor::SQLVisitor, arr::AST.OPAArray) +function visit(visitor::SQLVisitor, arr::Union{AST.OPAArray,AST.OPASet}) push!(visitor.result_stack, string("(", join([walk(visitor, v) for v in arr.value], ", "), ")")) return nothing end diff --git a/test/sql_translate.jl b/test/sql_translate.jl index b37bdba..10395e7 100644 --- a/test/sql_translate.jl +++ b/test/sql_translate.jl @@ -207,7 +207,7 @@ function to_sql(ref::OPARef) end end -function to_sql(arr::OPAArray) +function to_sql(arr::Union{OPAArray,OPASet}) return string("(", join(to_sql.(arr.value), ", "), ")") end diff --git a/test/test_data.jl b/test/test_data.jl index b0e88d9..051782d 100644 --- a/test/test_data.jl +++ b/test/test_data.jl @@ -233,6 +233,25 @@ const PARTIAL_COMPILE_CASES = [ unknowns = ["data.reports"], sql = "( ( public.juliahub_reports.clearance_level - 4 ) >= 0 )", ), + ( + policy = """package example + import future.keywords.in + allow { + data.reports[_].category in {"public"} + } + """, + query = "data.example.allow == true", + input = Dict{String,Any}( + "subject" => Dict{String,Any}( + "clearance_level" => 4 + ) + ), + options = Dict{String,Any}( + "disableInlining" => [] + ), + unknowns = ["data.reports"], + sql = "( public.juliahub_reports.category in ('public') )", + ), ] const EXAMPLE_QUERY = """input.servers[i].ports[_] = "p2"; input.servers[i].name = name"""