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>
345 lines
8.7 KiB
YAML
345 lines
8.7 KiB
YAML
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
# Logical Combinators Test Suite
|
|
# Tests allOf, anyOf, not, and nested combinations.
|
|
|
|
cases:
|
|
# =========================================================================
|
|
# allOf
|
|
# =========================================================================
|
|
|
|
- note: allOf_two_conditions
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
|
|
{ "field": "location", "equals": "eastus" }
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
location: "eastus"
|
|
want_effect: "deny"
|
|
|
|
- note: allOf_partial_match
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
|
|
{ "field": "location", "equals": "westus" }
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
location: "eastus"
|
|
want_undefined: true
|
|
|
|
- note: allOf_three_conditions
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
|
|
{ "field": "location", "equals": "eastus" },
|
|
{ "field": "name", "contains": "prod" }
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
location: "eastus"
|
|
name: "my-prod-vm"
|
|
want_effect: "deny"
|
|
|
|
- note: allOf_single_condition
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" }
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
want_effect: "deny"
|
|
|
|
- note: allOf_empty_array
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": []
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "anything"
|
|
want_effect: "deny"
|
|
|
|
# =========================================================================
|
|
# anyOf
|
|
# =========================================================================
|
|
|
|
- note: anyOf_first_matches
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"anyOf": [
|
|
{ "field": "location", "equals": "eastus" },
|
|
{ "field": "location", "equals": "westus" }
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
location: "eastus"
|
|
want_effect: "deny"
|
|
|
|
- note: anyOf_second_matches
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"anyOf": [
|
|
{ "field": "location", "equals": "eastus" },
|
|
{ "field": "location", "equals": "westus" }
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
location: "westus"
|
|
want_effect: "deny"
|
|
|
|
- note: anyOf_no_match
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"anyOf": [
|
|
{ "field": "location", "equals": "eastus" },
|
|
{ "field": "location", "equals": "westus" }
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
location: "northeurope"
|
|
want_undefined: true
|
|
|
|
- note: anyOf_three_options
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"anyOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachineScaleSets" },
|
|
{ "field": "type", "equals": "Microsoft.Compute/disks" }
|
|
]
|
|
},
|
|
"then": { "effect": "audit" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/disks"
|
|
want_effect: "audit"
|
|
|
|
# =========================================================================
|
|
# not
|
|
# =========================================================================
|
|
|
|
- note: not_condition
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"not": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
}
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Storage/storageAccounts"
|
|
want_effect: "deny"
|
|
|
|
- note: not_condition_no_match
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"not": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
}
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
want_undefined: true
|
|
|
|
- note: not_allOf
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"not": {
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
|
|
{ "field": "location", "equals": "eastus" }
|
|
]
|
|
}
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
location: "westus"
|
|
want_effect: "deny"
|
|
|
|
- note: not_anyOf
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"not": {
|
|
"anyOf": [
|
|
{ "field": "location", "equals": "eastus" },
|
|
{ "field": "location", "equals": "westus" }
|
|
]
|
|
}
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
location: "northeurope"
|
|
want_effect: "deny"
|
|
|
|
# =========================================================================
|
|
# Nested combinations
|
|
# =========================================================================
|
|
|
|
- note: allOf_with_nested_anyOf
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
|
|
{
|
|
"anyOf": [
|
|
{ "field": "location", "equals": "eastus" },
|
|
{ "field": "location", "equals": "westus" }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
location: "westus"
|
|
want_effect: "deny"
|
|
|
|
- note: anyOf_with_nested_allOf
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"anyOf": [
|
|
{
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
|
|
{ "field": "location", "equals": "eastus" }
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Storage/storageAccounts" },
|
|
{ "field": "location", "equals": "westus" }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Storage/storageAccounts"
|
|
location: "westus"
|
|
want_effect: "deny"
|
|
|
|
- note: allOf_with_not
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
|
|
{
|
|
"not": {
|
|
"field": "location",
|
|
"equals": "eastus"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
location: "westus"
|
|
want_effect: "deny"
|
|
|
|
- note: deeply_nested_combinators
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"allOf": [
|
|
{ "field": "type", "equals": "Microsoft.Network/networkSecurityGroups/securityRules" },
|
|
{
|
|
"not": {
|
|
"anyOf": [
|
|
{
|
|
"allOf": [
|
|
{ "field": "properties.protocol", "equals": "TCP" },
|
|
{ "field": "properties.destinationPortRange", "in": ["443", "8443"] }
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{ "field": "properties.protocol", "equals": "UDP" },
|
|
{ "field": "properties.destinationPortRange", "equals": "53" }
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Network/networkSecurityGroups/securityRules"
|
|
properties:
|
|
protocol: "TCP"
|
|
destinationPortRange: "80"
|
|
want_effect: "deny"
|
|
|
|
- note: double_negation
|
|
policy_rule: |
|
|
{
|
|
"if": {
|
|
"not": {
|
|
"not": {
|
|
"field": "type",
|
|
"equals": "Microsoft.Compute/virtualMachines"
|
|
}
|
|
}
|
|
},
|
|
"then": { "effect": "deny" }
|
|
}
|
|
resource:
|
|
type: "Microsoft.Compute/virtualMachines"
|
|
want_effect: "deny"
|