From 9445110edb3d587baa9d69431f0e2c45882e3c3c Mon Sep 17 00:00:00 2001 From: Elad Perets Date: Wed, 12 Aug 2020 11:14:49 -0700 Subject: [PATCH] Updated Az.Resources .NET SDK reference to 3.10.0-preview The new version includes the latest contract for Azure Policy aliases, where each alias includes additional metadata indicating whether it can be used in modify policies. --- .../ResourceManager/ResourceManager.csproj | 2 +- .../Resources.Test/Resources.Test.csproj | 2 +- .../ScenarioTests/PolicyAliasTests.cs | 27 +++++++++++++++++++ .../ScenarioTests/ProviderListBuilder.cs | 13 ++++++--- src/Resources/Resources/ChangeLog.md | 1 + src/Resources/Tags/Tags.csproj | 2 +- 6 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/Resources/ResourceManager/ResourceManager.csproj b/src/Resources/ResourceManager/ResourceManager.csproj index 8e9c4523486a..d0d365261216 100644 --- a/src/Resources/ResourceManager/ResourceManager.csproj +++ b/src/Resources/ResourceManager/ResourceManager.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/Resources/Resources.Test/Resources.Test.csproj b/src/Resources/Resources.Test/Resources.Test.csproj index 09f39f1822f4..0658bef8cd04 100644 --- a/src/Resources/Resources.Test/Resources.Test.csproj +++ b/src/Resources/Resources.Test/Resources.Test.csproj @@ -31,7 +31,7 @@ - + diff --git a/src/Resources/Resources.Test/ScenarioTests/PolicyAliasTests.cs b/src/Resources/Resources.Test/ScenarioTests/PolicyAliasTests.cs index 605e5eefba5a..f9ae03965a6c 100644 --- a/src/Resources/Resources.Test/ScenarioTests/PolicyAliasTests.cs +++ b/src/Resources/Resources.Test/ScenarioTests/PolicyAliasTests.cs @@ -441,6 +441,27 @@ public void TestGetAzureRmPolicyAliasAllParameters() this.VerifyListCallPatternAndReset(); } + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void TestGetAzureRmPolicyAliasWithPathMetadata() + { + var providers = new ProviderListBuilder(); + var provider = providers.AddProvider("Provider1"); + var resourceTypes = provider.AddResourceType("ResourceType1"); + var alias = resourceTypes.AddAlias("Alias1"); + alias.AddDefaultAliasPathMetadata(AliasPathAttributes.Modifiable, AliasPathTokenType.String); + alias.AddAliasPath("properties.alias1", new List { "2020-01-01" }, new AliasPathMetadata(AliasPathAttributes.Modifiable, AliasPathTokenType.Object)); + + var listResult = providers.List; + this.SetupAliasListResult(listResult); + + this.commandRuntimeMock + .Setup(m => m.WriteObject(It.IsAny(), It.IsAny())) + .Callback((object obj, bool listAll) => { this.AssertResult(obj, listResult, 1); }); + + this.cmdlet.ExecuteCmdlet(); + this.VerifyListCallPatternAndReset(); + } /// /// Helper method that sets up the expected result of the alias list cmdlet /// @@ -497,6 +518,9 @@ private void AssertResult(object resultObject, IEnumerable expectedPro var expectedAlias = expectedResourceType.Aliases.SingleOrDefault(item => item.Name.EqualsInsensitively(actualAlias.Name)); Assert.NotNull(expectedAlias); + Assert.Equal(expectedAlias.DefaultMetadata?.Attributes, actualAlias.DefaultMetadata?.Attributes); + Assert.Equal(expectedAlias.DefaultMetadata?.Type, actualAlias.DefaultMetadata?.Type); + // verify paths collection if (actualAlias.Paths == null) { @@ -509,6 +533,9 @@ private void AssertResult(object resultObject, IEnumerable expectedPro var expectedPath = expectedAlias.Paths.SingleOrDefault(item => item.Path.EqualsInsensitively(actualPath.Path)); Assert.NotNull(expectedPath); + Assert.Equal(actualPath.Metadata?.Attributes, expectedPath.Metadata?.Attributes); + Assert.Equal(actualPath.Metadata?.Type, expectedPath.Metadata?.Type); + // verify API version collection if (actualPath.ApiVersions == null) { diff --git a/src/Resources/Resources.Test/ScenarioTests/ProviderListBuilder.cs b/src/Resources/Resources.Test/ScenarioTests/ProviderListBuilder.cs index 8ffd0ac76b3e..6de6a575c0c7 100644 --- a/src/Resources/Resources.Test/ScenarioTests/ProviderListBuilder.cs +++ b/src/Resources/Resources.Test/ScenarioTests/ProviderListBuilder.cs @@ -91,21 +91,28 @@ public class AliasBuilder public static IList DefaultApiVersions { get; } = new List { "2018-01-01", "2016-01-01" }; private string Name { get; } private List Paths { get; } = new List(); + private AliasPathMetadata DefaultAliasPathMetadata { get; set; } public AliasBuilder(string name) { this.Name = name; } - public Alias Alias => new Alias + public Alias Alias => new Alias(defaultMetadata: this.DefaultAliasPathMetadata) { Name = this.Name, Paths = this.Paths }; - public AliasPath AddAliasPath(string path, IEnumerable apiVersions = null) + public AliasPathMetadata AddDefaultAliasPathMetadata(string attributes, string type) { - var rv = new AliasPath + this.DefaultAliasPathMetadata = new AliasPathMetadata(attributes, type); + return this.DefaultAliasPathMetadata; + } + + public AliasPath AddAliasPath(string path, IEnumerable apiVersions = null, AliasPathMetadata metadata= null) + { + var rv = new AliasPath(metadata: metadata) { Path = path, ApiVersions = apiVersions?.ToList() ?? AliasBuilder.DefaultApiVersions diff --git a/src/Resources/Resources/ChangeLog.md b/src/Resources/Resources/ChangeLog.md index fae1ed79163d..6642ba5321f9 100644 --- a/src/Resources/Resources/ChangeLog.md +++ b/src/Resources/Resources/ChangeLog.md @@ -18,6 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release +* Updated `Get-AzPolicyAlias` response to include information indicating whether the alias is modifiable by Azure Policy. * Created new cmdlet `Set-AzRoleAssignment` * Added `Get-AzDeploymentManagementGroupWhatIfResult` for getting ARM template What-If results at management Group scope * Added `Get-AzTenantWhatIfResult` new cmdlet for getting ARM template What-If results at tenant scope diff --git a/src/Resources/Tags/Tags.csproj b/src/Resources/Tags/Tags.csproj index d5bdca6bbc94..e1df939fe791 100644 --- a/src/Resources/Tags/Tags.csproj +++ b/src/Resources/Tags/Tags.csproj @@ -12,7 +12,7 @@ - + \ No newline at end of file