Skip to content
This repository was archived by the owner on Feb 23, 2024. It is now read-only.

Commit 6726ce7

Browse files
f-alizadaFarhad Alizada
andauthored
Ignore case for policy fragment id comparison (#844)
Co-authored-by: Farhad Alizada <falizada@microsoft.com> Closes https://github.com/Azure/azure-api-management-devops-resource-kit/issues/836
1 parent 1a57643 commit 6726ce7

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

src/ArmTemplates/Extractor/EntityExtractors/PolicyFragmentsExtractor.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// Licensed under the MIT License.
44
// --------------------------------------------------------------------------
55

6+
using System;
67
using System.Collections.Generic;
78
using System.Linq;
89
using System.Threading.Tasks;
@@ -90,7 +91,7 @@ bool DoesPolicyReferencePolicyFragment(
9091
{
9192
var policyContent = this.policyExtractor.GetCachedPolicyContent(policyTemplateResource, baseFilesGenerationDirectory);
9293

93-
if (policyContent.Contains(policyFragmentReferenceString))
94+
if (policyContent.Contains(policyFragmentReferenceString, StringComparison.OrdinalIgnoreCase))
9495
{
9596
return true;
9697
}

tests/ArmTemplates.Tests/Extractor/Scenarios/PolicyFragmentsExtractorTests.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,5 +149,50 @@ public async Task GeneratePolicyFragmentTemplates_GeneratesPolicyFragmentTemplat
149149
policyFragment1.Should().NotBeNull();
150150
policyFragment1.Properties.Description.Should().Be("A policy fragment example 1");
151151
}
152+
153+
[Fact]
154+
public async Task GeneratePolicyFragmentTemplates_GeneratesPolicyFragmentTemplateForSingleApi_GivenDifferentPolicyFragmentIdCases()
155+
{
156+
// arrange
157+
var currentTestDirectory = Path.Combine(this.OutputDirectory, nameof(GeneratePolicyFragmentTemplates_GeneratesPolicyFragmentTemplateForSingleApi));
158+
159+
var extractorConfig = this.GetDefaultExtractorConsoleAppConfiguration(
160+
apiName: "api");
161+
var extractorParameters = new ExtractorParameters(extractorConfig);
162+
var fileLocation = Path.Combine(MockClientUtils.ApiClientJsonResponsesPath, "ApiManagementListPolicyFragments_success_response.json");
163+
var mockedClient = await MockPolicyFragmentClient.GetMockedHttpPolicyFragmentClient(new MockClientConfiguration(responseFileLocation: fileLocation));
164+
165+
var policExtractor = new PolicyExtractor(this.GetTestLogger<PolicyExtractor>(), null, new TemplateBuilder());
166+
var policyFragmentExtractor = new PolicyFragmentsExtractor(this.GetTestLogger<PolicyFragmentsExtractor>(), new TemplateBuilder(), mockedClient, policExtractor);
167+
168+
var extractorExecutor = ExtractorExecutor.BuildExtractorExecutor(
169+
this.GetTestLogger<ExtractorExecutor>(),
170+
policyFragmentsExtractor: policyFragmentExtractor,
171+
policyExtractor: policExtractor);
172+
extractorExecutor.SetExtractorParameters(extractorParameters);
173+
174+
var apiPolicies = new List<PolicyTemplateResource>()
175+
{
176+
new PolicyTemplateResource()
177+
{
178+
Properties = new PolicyTemplateProperties()
179+
{
180+
PolicyContent = "fragment-id=\"POLICYFRAGMENT1\""
181+
}
182+
}
183+
};
184+
// act
185+
var policyFragments = await extractorExecutor.GeneratePolicyFragmentsTemplateAsync(apiPolicies, currentTestDirectory);
186+
187+
// assert
188+
File.Exists(Path.Combine(currentTestDirectory, extractorParameters.FileNames.PolicyFragments)).Should().BeTrue();
189+
190+
policyFragments.Parameters.Should().ContainKey(ParameterNames.ApimServiceName);
191+
policyFragments.TypedResources.PolicyFragments.Count().Should().Be(1);
192+
193+
var policyFragment1 = policyFragments.TypedResources.PolicyFragments.First(x => x.OriginalName.Equals("policyFragment1"));
194+
policyFragment1.Should().NotBeNull();
195+
policyFragment1.Properties.Description.Should().Be("A policy fragment example 1");
196+
}
152197
}
153198
}

0 commit comments

Comments
 (0)