Skip to content

Commit 3c79467

Browse files
committed
Enable array type parameters for template deployment.
1 parent 2c400d8 commit 3c79467

File tree

11 files changed

+2826
-2794
lines changed

11 files changed

+2826
-2794
lines changed

src/ResourceManager/Resources/Commands.Resources.Test/Models.ResourceGroups/GalleryTemplatesClientTests.cs

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,38 @@ public void ConstructsObjectTypeDynamicParameter()
274274
Assert.Equal(parameterSetNames[0], parameterAttribute.ParameterSetName);
275275
}
276276

277+
[Fact]
278+
[Trait(Category.AcceptanceType, Category.CheckIn)]
279+
public void ConstructsArrayTypeDynamicParameter()
280+
{
281+
string[] parameters = { "Name", "Location", "Mode" };
282+
string[] parameterSetNames = { "__AllParameterSets" };
283+
string key = "ranks";
284+
TemplateFileParameterV1 value = new TemplateFileParameterV1()
285+
{
286+
AllowedValues = new List<object>()
287+
{
288+
JArray.Parse("[\"1\", \"3\", \"5\"]"),
289+
JArray.Parse("[\"A\", \"D\", \"F\"]"),
290+
},
291+
DefaultValue = JArray.Parse("[\"A\", \"D\", \"F\"]"),
292+
Type = "array"
293+
};
294+
KeyValuePair<string, TemplateFileParameterV1> parameter = new KeyValuePair<string, TemplateFileParameterV1>(key, value);
295+
296+
RuntimeDefinedParameter dynamicParameter = galleryTemplatesClient.ConstructDynamicParameter(parameters, parameter);
297+
298+
Assert.Equal("ranks", dynamicParameter.Name);
299+
Assert.Equal(value.DefaultValue, dynamicParameter.Value);
300+
Assert.Equal(typeof(object[]), dynamicParameter.ParameterType);
301+
Assert.Equal(1, dynamicParameter.Attributes.Count);
302+
303+
ParameterAttribute parameterAttribute = (ParameterAttribute)dynamicParameter.Attributes[0];
304+
Assert.False(parameterAttribute.Mandatory);
305+
Assert.True(parameterAttribute.ValueFromPipelineByPropertyName);
306+
Assert.Equal(parameterSetNames[0], parameterAttribute.ParameterSetName);
307+
}
308+
277309
[Fact]
278310
[Trait(Category.AcceptanceType, Category.CheckIn)]
279311
public void GetsDynamicParametersForTemplateFile()
@@ -284,7 +316,7 @@ public void GetsDynamicParametersForTemplateFile()
284316
null,
285317
new[] { "TestPS" });
286318

287-
Assert.Equal(6, result.Count);
319+
Assert.Equal(7, result.Count);
288320

289321
Assert.Equal("string", result["string"].Name);
290322
Assert.Equal(typeof(string), result["String"].ParameterType);
@@ -303,6 +335,9 @@ public void GetsDynamicParametersForTemplateFile()
303335

304336
Assert.Equal("secureObject", result["secureObject"].Name);
305337
Assert.Equal(typeof(Hashtable), result["secureObject"].ParameterType);
338+
339+
Assert.Equal("array", result["array"].Name);
340+
Assert.Equal(typeof(object[]), result["array"].ParameterType);
306341
}
307342

308343
[Fact]
@@ -318,14 +353,18 @@ public void GetTemplateParametersFromObject()
318353
{ "code", "F1" },
319354
{ "name", "Free" }
320355
};
356+
templateParameterObject["array"] = new object[] {
357+
"A", "D", "F"
358+
};
359+
321360

322361
RuntimeDefinedParameterDictionary result = galleryTemplatesClient.GetTemplateParametersFromFile(
323362
templateFile,
324363
templateParameterObject,
325364
null,
326365
new[] { "TestPS" });
327366

328-
Assert.Equal(6, result.Count);
367+
Assert.Equal(7, result.Count);
329368

330369
Assert.Equal("string", result["string"].Name);
331370
Assert.Equal(typeof(string), result["string"].ParameterType);
@@ -345,6 +384,13 @@ public void GetTemplateParametersFromObject()
345384
Assert.Equal(2, objectValue.Count);
346385
Assert.Equal("F1", objectValue["code"]);
347386
Assert.Equal("Free", objectValue["name"]);
387+
388+
Assert.Equal("array", result["array"].Name);
389+
Assert.Equal(typeof(object[]), result["array"].ParameterType);
390+
var arrayValue = result["array"].Value as object[];
391+
Assert.Equal(3, arrayValue.Length);
392+
Assert.Equal("A", arrayValue[0]);
393+
Assert.Equal("F", arrayValue[2]);
348394
}
349395

350396
[Fact]
@@ -360,7 +406,7 @@ public void GetTemplateParametersFromFileMergesObjects()
360406
templateParameterFileSchema1,
361407
new[] { "TestPS" });
362408

363-
Assert.Equal(6, result.Count);
409+
Assert.Equal(7, result.Count);
364410

365411
Assert.Equal("string", result["string"].Name);
366412
Assert.Equal(typeof(string), result["string"].ParameterType);
@@ -380,6 +426,13 @@ public void GetTemplateParametersFromFileMergesObjects()
380426
Assert.Equal(2, objectValue.Count);
381427
Assert.Equal("F1", objectValue["code"].ToObject<string>());
382428
Assert.Equal("Free", objectValue["name"].ToObject<string>());
429+
430+
Assert.Equal("array", result["array"].Name);
431+
Assert.Equal(typeof(object[]), result["array"].ParameterType);
432+
var arrayValue = result["array"].Value as JArray;
433+
Assert.Equal(3, arrayValue.Count);
434+
Assert.Equal("A", arrayValue[0].ToObject<string>());
435+
Assert.Equal("F", arrayValue[2].ToObject<string>());
383436
}
384437

385438
[Fact]
@@ -395,7 +448,7 @@ public void GetTemplateParametersFromFileWithSchema2MergesObjects()
395448
templateParameterFileSchema2,
396449
new[] { "TestPS" });
397450

398-
Assert.Equal(6, result.Count);
451+
Assert.Equal(7, result.Count);
399452

400453
Assert.Equal("string", result["string"].Name);
401454
Assert.Equal(typeof(string), result["string"].ParameterType);
@@ -415,6 +468,13 @@ public void GetTemplateParametersFromFileWithSchema2MergesObjects()
415468
Assert.Equal(2, objectValue.Count);
416469
Assert.Equal("F1", objectValue["code"].ToObject<string>());
417470
Assert.Equal("Free", objectValue["name"].ToObject<string>());
471+
472+
Assert.Equal("array", result["array"].Name);
473+
Assert.Equal(typeof(object[]), result["array"].ParameterType);
474+
var arrayValue = result["array"].Value as JArray;
475+
Assert.Equal(3, arrayValue.Count);
476+
Assert.Equal("A", arrayValue[0].ToObject<string>());
477+
Assert.Equal("F", arrayValue[2].ToObject<string>());
418478
}
419479

420480
[Fact]

src/ResourceManager/Resources/Commands.Resources.Test/Resources/sampleTemplateFile.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616
"object": {
1717
"type": "object"
1818
},
19-
"secureObject": {
20-
"type": "secureObject"
21-
}
19+
"secureObject": {
20+
"type": "secureObject"
21+
},
22+
"array": {
23+
"type": "array"
24+
}
2225
},
2326
"variables": {
2427
"string": "string",

src/ResourceManager/Resources/Commands.Resources.Test/Resources/sampleTemplateParameterFile.json

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@
1717
"name": "Free"
1818
}
1919
},
20-
"secureObject": {
21-
"value": {
22-
"code": "F2",
23-
"name": "Standard"
24-
}
25-
}
20+
"secureObject": {
21+
"value": {
22+
"code": "F2",
23+
"name": "Standard"
24+
}
25+
},
26+
"array": {
27+
"value": [ "A", "D", "F" ]
28+
}
2629
}
Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,33 @@
11
{
22
"$schema" : "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentParameter.json#",
33
"contentVersion" : "1.0.0.0",
4-
"parameters": {
5-
"securestring": {
6-
"value": "myvalue"
7-
},
8-
"bool": {
9-
"value": "True"
10-
},
11-
"string": {
12-
"value": "myvalue"
13-
},
14-
"int": {
15-
"value": "12"
16-
},
17-
"object": {
18-
"value": {
19-
"code": "F1",
20-
"name": "Free"
21-
}
22-
},
23-
"secureObject": {
24-
"value": {
25-
"code": "F2",
26-
"name": "Standard"
27-
}
28-
}
29-
}
4+
"parameters": {
5+
"securestring": {
6+
"value": "myvalue"
7+
},
8+
"bool": {
9+
"value": "True"
10+
},
11+
"string": {
12+
"value": "myvalue"
13+
},
14+
"int": {
15+
"value": "12"
16+
},
17+
"object": {
18+
"value": {
19+
"code": "F1",
20+
"name": "Free"
21+
}
22+
},
23+
"secureObject": {
24+
"value": {
25+
"code": "F2",
26+
"name": "Standard"
27+
}
28+
},
29+
"array": {
30+
"value": [ "A", "D", "F" ]
31+
}
32+
}
3033
}

src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/DeploymentTests.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ function Test-NewDeploymentWithParameterObject
270270
# Test
271271
New-AzureRmResourceGroup -Name $rgname -Location $rglocation
272272

273-
$deployment = New-AzureRmResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile complexParametersTemplate.json -TemplateParameterObject @{appSku=@{code="f1"; name="Free"}; servicePlan="plan1"}
273+
$deployment = New-AzureRmResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile complexParametersTemplate.json -TemplateParameterObject @{appSku=@{code="f1"; name="Free"}; servicePlan="plan1"; ranks=@("c", "d")}
274274

275275
# Assert
276276
Assert-AreEqual Succeeded $deployment.ProvisioningState
@@ -304,7 +304,7 @@ function Test-NewDeploymentWithDynamicParameters
304304
# Test
305305
New-AzureRmResourceGroup -Name $rgname -Location $rglocation
306306

307-
$deployment = New-AzureRmResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile complexParametersTemplate.json -appSku @{code="f3"; name=@{major="Official"; minor="1.0"}} -servicePlan "plan1"
307+
$deployment = New-AzureRmResourceGroupDeployment -Name $rname -ResourceGroupName $rgname -TemplateFile complexParametersTemplate.json -appSku @{code="f3"; name=@{major="Official"; minor="1.0"}} -servicePlan "plan1" -ranks @("c", "d")
308308

309309
# Assert
310310
Assert-AreEqual Succeeded $deployment.ProvisioningState

0 commit comments

Comments
 (0)