Files
regorus/tests/rvm/rego/cases/default_rules.yaml

282 lines
6.2 KiB
YAML

# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# Default Rules Test Suite
# Tests default rule evaluation when complete rules have no successful definitions
cases:
- note: default_rule_basic
data: {}
modules:
- |
package test
default allow := false
allow := true if {
false # This will always fail
}
query: data.test.allow
want_result: false
- note: default_rule_with_multiple_definitions_all_fail
data: {}
modules:
- |
package test
default result := "default_value"
result := "success1" if {
false # This will fail
}
result := "success2" if {
input.nonexistent == "value" # This will fail
}
result := "success3" if {
1 == 2 # This will fail
}
query: data.test.result
want_result: "default_value"
- note: default_rule_not_used_when_definition_succeeds
data: {}
modules:
- |
package test
default allow := false
allow := true if {
1 == 1 # This will succeed
}
query: data.test.allow
want_result: true
- note: default_rule_with_object_key
data: {}
input: {}
modules:
- |
package test
import rego.v1
default config["timeout"] := 30
config["timeout"] := val if {
val := input.val
}
query: data.test.config.timeout
want_result: 30
- note: default_rule_with_object_key_override
data: {}
input:
val: 60
modules:
- |
package test
import rego.v1
default config["timeout"] := 30
config["timeout"] := val if {
val := input.val
}
query: data.test.config.timeout
want_result: 60
- note: default_rule_complex_value
data: {}
modules:
- |
package test
default settings := {
"enabled": false,
"retries": 3,
"timeout": 30
}
settings := {
"enabled": true,
"retries": 5,
"timeout": 60
} if {
false # This will fail
}
query: data.test.settings
want_result:
enabled: false
retries: 3
timeout: 30
- note: default_rule_with_array
data: {}
modules:
- |
package test
default items := ["default1", "default2"]
items := ["actual1", "actual2"] if {
false # This will fail
}
query: data.test.items
want_result: ["default1", "default2"]
- note: default_rule_with_input_dependency
data: {}
modules:
- |
package test
default result := "no_user"
result := "admin" if {
input.user.role == "admin"
}
result := "user" if {
input.user.role == "user"
}
query: data.test.result
want_result: "no_user"
- note: default_rule_with_input_dependency_success
data: {}
input:
user:
role: "admin"
modules:
- |
package test
default result := "no_user"
result := "admin" if {
input.user.role == "admin"
}
result := "user" if {
input.user.role == "user"
}
query: data.test.result
want_result: "admin"
- note: default_rule_with_data_dependency
data:
config:
mode: "production"
modules:
- |
package test
default debug_mode := false
debug_mode := true if {
data.config.mode == "development"
}
query: data.test.debug_mode
want_result: false
- note: default_rule_nested_package
data: {}
modules:
- |
package test.auth
default allow := false
allow := true if {
false # This will fail
}
query: data.test.auth.allow
want_result: false
- note: default_only_rule_bool
data: {}
modules:
- |
package test
default deny := true
query: data.test.deny
want_result: true
- note: default_only_rule_object
data: {}
modules:
- |
package test
default deny := {"result": false, "reasons": []}
query: data.test.deny
want_result:
result: false
reasons: []
- note: default_only_rule_with_entry_point
data: {}
modules:
- |
package graph.mypolicy
default deny := {"result": false, "reasons": []}
entry_points:
- data.graph.mypolicy.deny
query: data.graph.mypolicy.deny
want_result:
result: false
reasons: []
- note: multiple_default_rules_different_names
skip: true
data: {}
modules:
- |
package test
default allow := false
default deny := true
allow := true if {
false # This will fail
}
deny := false if {
false # This will fail
}
query: data.test
want_result:
allow: false
deny: true
- note: default_rule_with_computed_value
skip: true
data: {}
modules:
- |
package test
base_timeout := 10
default timeout := base_timeout * 3
timeout := base_timeout * 6 if {
false # This will fail
}
query: data.test.timeout
want_result: 30
- note: default_rule_undefined_vs_default
skip: true
data: {}
modules:
- |
package test
default has_default := "default"
# no_default rule has no default and no successful definitions
no_default := "success" if {
false # This will fail
}
query: data.test
want_result:
has_default: "default"
- note: default_rule_with_function_call
skip: true
data: {}
modules:
- |
package test
helper_func := "helper_result"
default result := helper_func
result := "success" if {
false # This will fail
}
query: data.test.result
want_result: "helper_result"
- note: default_rule_consistency_check
data: {}
modules:
- |
package test
default value := 42
value := 42 if {
true # This succeeds with same value as default
}
value := 99 if {
false # This fails
}
query: data.test.value
want_result: 42