mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
YAML-driven test cases for the core Azure Policy compiler. These cover alias resolution, field conditions, logical operators, type coercion, count expressions, template functions, effect compilation, and policy definition parsing. 24 files, each a self-contained scenario exercised by the test runner in the companion code PR. Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
265 lines
6.1 KiB
YAML
265 lines
6.1 KiB
YAML
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
# Value Conditions Test Suite
|
|
# Tests the "value" LHS in conditions (as opposed to "field" or "count").
|
|
|
|
cases:
|
|
# =========================================================================
|
|
# Value with literal values
|
|
# =========================================================================
|
|
|
|
- note: value_string_literal
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": "hello",
|
|
"equals": "hello"
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
type: "any"
|
|
want_effect: "audit"
|
|
|
|
- note: value_number_literal
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": 42,
|
|
"equals": 42
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
type: "any"
|
|
want_effect: "audit"
|
|
|
|
- note: value_boolean_literal
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": true,
|
|
"equals": true
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
type: "any"
|
|
want_effect: "audit"
|
|
|
|
- note: value_null_literal
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": null,
|
|
"equals": null
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
type: "any"
|
|
want_effect: "audit"
|
|
|
|
# =========================================================================
|
|
# Value with expressions
|
|
# =========================================================================
|
|
|
|
- note: value_parameters_expression
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": "[parameters('environment')]",
|
|
"equals": "production"
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
parameters:
|
|
environment: "production"
|
|
resource:
|
|
type: "any"
|
|
want_effect: "deny"
|
|
|
|
- note: value_concat_expression
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": "[concat(parameters('prefix'), '-resource')]",
|
|
"contains": "prod"
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
parameters:
|
|
prefix: "prod"
|
|
resource:
|
|
type: "any"
|
|
want_effect: "audit"
|
|
|
|
- note: value_field_expression
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": "[field('name')]",
|
|
"contains": "prod"
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
name: "my-prod-vm"
|
|
want_effect: "audit"
|
|
|
|
- note: value_length_expression
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": "[length(field('name'))]",
|
|
"greater": 5
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
name: "my-long-resource-name"
|
|
want_effect: "audit"
|
|
|
|
# =========================================================================
|
|
# Value with array RHS
|
|
# =========================================================================
|
|
|
|
- note: value_in_array
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": "[parameters('location')]",
|
|
"in": ["eastus", "westus", "centralus"]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
parameters:
|
|
location: "eastus"
|
|
resource:
|
|
type: "any"
|
|
want_effect: "deny"
|
|
|
|
- note: value_not_in_array
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": "[parameters('location')]",
|
|
"notIn": ["eastus", "westus"]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
parameters:
|
|
location: "northeurope"
|
|
resource:
|
|
type: "any"
|
|
want_effect: "deny"
|
|
|
|
# =========================================================================
|
|
# Value in allOf / anyOf
|
|
# =========================================================================
|
|
|
|
- note: value_in_allOf
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": [
|
|
{ "value": "[parameters('env')]", "equals": "production" },
|
|
{ "value": "[parameters('region')]", "in": ["eastus", "westus"] }
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
parameters:
|
|
env: "production"
|
|
region: "eastus"
|
|
resource:
|
|
type: "any"
|
|
want_effect: "deny"
|
|
|
|
- note: value_in_anyOf
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"anyOf": [
|
|
{ "value": "[parameters('tier')]", "equals": "free" },
|
|
{ "value": "[parameters('tier')]", "equals": "basic" }
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
parameters:
|
|
tier: "free"
|
|
resource:
|
|
type: "any"
|
|
want_effect: "deny"
|
|
|
|
# =========================================================================
|
|
# Value mixed with field conditions
|
|
# =========================================================================
|
|
|
|
- note: value_mixed_with_field
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
|
|
{ "value": "[parameters('enforcePolicy')]", "equals": true },
|
|
{ "field": "location", "notIn": "[parameters('allowedLocations')]" }
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
parameters:
|
|
enforcePolicy: true
|
|
allowedLocations:
|
|
- "eastus"
|
|
- "westus"
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
location: "northeurope"
|
|
want_effect: "deny"
|
|
|
|
# =========================================================================
|
|
# Value with negative numbers
|
|
# =========================================================================
|
|
|
|
- note: value_negative_number
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": -1,
|
|
"less": 0
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
type: "any"
|
|
want_effect: "audit"
|
|
|
|
- note: value_zero
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": 0,
|
|
"equals": 0
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
type: "any"
|
|
want_effect: "audit"
|
|
|
|
- note: value_float
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"value": 3.14,
|
|
"greater": 3
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
type: "any"
|
|
want_effect: "audit"
|