Skip to content

Commit 9effe93

Browse files
authored
Merge patch release v1.35.1 (Azure#2799)
* Fixes null parameter overrides default Azure#2795 (Azure#2797) * Release v1.35.1 (Azure#2798)
1 parent 1d8f3fe commit 9effe93

File tree

6 files changed

+75
-33
lines changed

6 files changed

+75
-33
lines changed

docs/CHANGELOG-v1.md

+9-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ See [upgrade notes][1] for helpful information when upgrading from previous vers
3232

3333
## Unreleased
3434

35-
What's changed since v1.35.0:
35+
What's changed since v1.35.1:
3636

3737
- New rules:
3838
- Container App:
@@ -42,6 +42,14 @@ What's changed since v1.35.0:
4242
- Quality updates to documentation by @lukemurraynz.
4343
[#2789](https://github.com/Azure/PSRule.Rules.Azure/pull/2789)
4444

45+
## v1.35.1
46+
47+
What's changed since v1.35.0:
48+
49+
- Bug fixes:
50+
- Fixed null parameter overrides default value by @BernieWhite.
51+
[#2795](https://github.com/Azure/PSRule.Rules.Azure/issues/2795)
52+
4553
## v1.35.0
4654

4755
What's changed since v1.34.2:

src/PSRule.Rules.Azure/Data/Template/TemplateVisitor.cs

+3
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,9 @@ private bool AssignParameterLiteral(string name, JObject parameter)
352352

353353
private void AddParameterAssignment(string name, JToken value)
354354
{
355+
if (value == null || value.Type == JTokenType.Null || value.Type == JTokenType.Undefined)
356+
return;
357+
355358
_ParameterAssignments.Add(name, value);
356359
}
357360

tests/PSRule.Rules.Azure.Tests/TemplateVisitorTests.cs

+13-1
Original file line numberDiff line numberDiff line change
@@ -1099,11 +1099,23 @@ public void UnionMockWithArray()
10991099
/// Test case for https://github.com/Azure/PSRule.Rules.Azure/issues/2751.
11001100
/// </summary>
11011101
[Fact]
1102-
public void Index_into_mock_output_object()
1102+
public void ProcessTemplate_WhenIndexIntoMock_ShouldReturnMock()
11031103
{
11041104
var resources = ProcessTemplate(GetSourcePath("Tests.Bicep.35.json"), null, out _);
11051105
}
11061106

1107+
/// <summary>
1108+
/// Test case for https://github.com/Azure/PSRule.Rules.Azure/issues/2795.
1109+
/// </summary>
1110+
[Fact]
1111+
public void ProcessTemplate_WhenParameterNullWithDefault_ShouldUseDefault()
1112+
{
1113+
var resources = ProcessTemplate(GetSourcePath("Tests.Bicep.27.json"), null, out _);
1114+
1115+
var actual = resources.FirstOrDefault(r => r["type"].Value<string>() == "Microsoft.Storage/storageAccounts");
1116+
Assert.Equal("Standard_LRS", actual["sku"]["name"].Value<string>());
1117+
}
1118+
11071119
#region Helper methods
11081120

11091121
private static string GetSourcePath(string fileName)

tests/PSRule.Rules.Azure.Tests/Tests.Bicep.27.bicep

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33

44
module child 'Tests.Bicep.27.child.bicep' = {
55
name: 'child'
6+
params: {
7+
skuName: null
8+
}
69
}
710

811
output childFromFor string = child.outputs.fromFor

tests/PSRule.Rules.Azure.Tests/Tests.Bicep.27.child.bicep

+33-26
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT License.
33

4+
param skuName string = 'Standard_LRS'
45
param minTLSVersion string?
56
param corsRules corsRule
67

@@ -17,11 +18,13 @@ param accessPolicies array?
1718
@secure()
1819
param secrets object?
1920

20-
var formattedAccessPolicies = [for accessPolicy in (accessPolicies ?? []): {
21-
objectId: accessPolicy.objectId
22-
tenantId: contains(accessPolicy, 'tenantId') ? accessPolicy.tenantId : tenant().tenantId
23-
permissions: {}
24-
}]
21+
var formattedAccessPolicies = [
22+
for accessPolicy in (accessPolicies ?? []): {
23+
objectId: accessPolicy.objectId
24+
tenantId: contains(accessPolicy, 'tenantId') ? accessPolicy.tenantId : tenant().tenantId
25+
permissions: {}
26+
}
27+
]
2528

2629
var secretList = secrets.?secureList ?? []
2730

@@ -30,7 +33,7 @@ resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = {
3033
#disable-next-line no-loc-expr-outside-params
3134
location: resourceGroup().location
3235
sku: {
33-
name: 'Standard_LRS'
36+
name: skuName
3437
}
3538
kind: 'StorageV2'
3639
properties: {
@@ -61,12 +64,14 @@ resource kv 'Microsoft.KeyVault/vaults@2023-07-01' = {
6164
}
6265
}
6366

64-
resource kvSecret 'Microsoft.KeyVault/vaults/secrets@2023-07-01' = [for item in secretList: {
65-
name: item.name
66-
properties: {
67-
value: item.value
67+
resource kvSecret 'Microsoft.KeyVault/vaults/secrets@2023-07-01' = [
68+
for item in secretList: {
69+
name: item.name
70+
properties: {
71+
value: item.value
72+
}
6873
}
69-
}]
74+
]
7075

7176
resource storageAccount_objectReplicationPolicy 'Microsoft.Storage/storageAccounts/objectReplicationPolicies@2022-09-01' = {
7277
name: 'default'
@@ -85,22 +90,24 @@ resource storageAccount_objectReplicationPolicy 'Microsoft.Storage/storageAccoun
8590
}
8691
}
8792

88-
resource storageAccount_objectReplicationPolicyItems 'Microsoft.Storage/storageAccounts/objectReplicationPolicies@2022-09-01' = [for (item, index) in [ 1 ]: {
89-
name: 'default${index}'
90-
parent: storage
91-
properties: {
92-
sourceAccount: 'sourceId'
93-
destinationAccount: 'destId'
94-
rules: [
95-
{
96-
ruleId: null
97-
sourceContainer: 'source'
98-
destinationContainer: 'dest'
99-
filters: null
100-
}
101-
]
93+
resource storageAccount_objectReplicationPolicyItems 'Microsoft.Storage/storageAccounts/objectReplicationPolicies@2022-09-01' = [
94+
for (item, index) in [1]: {
95+
name: 'default${index}'
96+
parent: storage
97+
properties: {
98+
sourceAccount: 'sourceId'
99+
destinationAccount: 'destId'
100+
rules: [
101+
{
102+
ruleId: null
103+
sourceContainer: 'source'
104+
destinationContainer: 'dest'
105+
filters: null
106+
}
107+
]
108+
}
102109
}
103-
}]
110+
]
104111

105112
output policyId string = storageAccount_objectReplicationPolicy.properties.policyId
106113
output ruleIds string[] = map(storageAccount_objectReplicationPolicy.properties.rules, rule => rule.ruleId)

tests/PSRule.Rules.Azure.Tests/Tests.Bicep.27.json

+14-5
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"metadata": {
55
"_generator": {
66
"name": "bicep",
7-
"version": "0.23.1.45101",
8-
"templateHash": "1063354008601109842"
7+
"version": "0.26.54.24096",
8+
"templateHash": "7737727980270162371"
99
}
1010
},
1111
"resources": [
@@ -18,15 +18,20 @@
1818
"scope": "inner"
1919
},
2020
"mode": "Incremental",
21+
"parameters": {
22+
"skuName": {
23+
"value": null
24+
}
25+
},
2126
"template": {
2227
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
2328
"languageVersion": "2.0",
2429
"contentVersion": "1.0.0.0",
2530
"metadata": {
2631
"_generator": {
2732
"name": "bicep",
28-
"version": "0.23.1.45101",
29-
"templateHash": "11238883118622659404"
33+
"version": "0.26.54.24096",
34+
"templateHash": "14665743710501821887"
3035
}
3136
},
3237
"definitions": {
@@ -68,6 +73,10 @@
6873
}
6974
},
7075
"parameters": {
76+
"skuName": {
77+
"type": "string",
78+
"defaultValue": "Standard_LRS"
79+
},
7180
"minTLSVersion": {
7281
"type": "string",
7382
"nullable": true
@@ -118,7 +127,7 @@
118127
"name": "test",
119128
"location": "[resourceGroup().location]",
120129
"sku": {
121-
"name": "Standard_LRS"
130+
"name": "[parameters('skuName')]"
122131
},
123132
"kind": "StorageV2",
124133
"properties": {

0 commit comments

Comments
 (0)