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

Commit acd2886

Browse files
cristicazangitName
andauthored
Add null checks on overriding config (#675)
* Add null checks on overriding config * Add ServiceLevelDiagnosticLoggerBindings key check * Add unit test & make OverrideConfiguration public Co-authored-by: gitName <a@b.c>
1 parent c0f1f09 commit acd2886

File tree

3 files changed

+67
-21
lines changed

3 files changed

+67
-21
lines changed

src/ArmTemplates/Extractor/EntityExtractors/LoggerExtractor.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,16 @@ async Task LoadAllReferencedLoggers(
103103
{
104104
var serviceDiagnostics = await this.diagnosticClient.GetAllAsync(extractorParameters);
105105

106-
var serviceloggerIds = new Dictionary<string, string>();
107106
foreach (var serviceDiagnostic in serviceDiagnostics)
108107
{
109108
string loggerId = serviceDiagnostic.Properties.LoggerId;
110-
111-
this.Cache.ServiceLevelDiagnosticLoggerBindings.Add(
112-
ParameterNamingHelper.GenerateValidParameterName(serviceDiagnostic.Name, ParameterPrefix.Diagnostic),
113-
loggerId);
109+
110+
var serviceDiagnosticsKey = ParameterNamingHelper.GenerateValidParameterName(serviceDiagnostic.Name, ParameterPrefix.Diagnostic);
111+
112+
if (!this.Cache.ServiceLevelDiagnosticLoggerBindings.ContainsKey(serviceDiagnosticsKey))
113+
{
114+
this.Cache.ServiceLevelDiagnosticLoggerBindings.Add(serviceDiagnosticsKey, loggerId);
115+
}
114116
}
115117

116118
if (apisToExtract.IsNullOrEmpty())

src/ArmTemplates/Extractor/Models/ExtractorParameters.cs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public ExtractorParameters(ExtractorConsoleAppConfiguration extractorConfig)
106106
this.ExtractGateways = extractorConfig.ExtractGateways != null && extractorConfig.ExtractGateways.Equals("true", StringComparison.OrdinalIgnoreCase);
107107
}
108108

109-
internal ExtractorParameters OverrideConfiguration(ExtractorConsoleAppConfiguration overridingConfig)
109+
public ExtractorParameters OverrideConfiguration(ExtractorConsoleAppConfiguration overridingConfig)
110110
{
111111
if (overridingConfig == null) return this;
112112

@@ -121,24 +121,23 @@ internal ExtractorParameters OverrideConfiguration(ExtractorConsoleAppConfigurat
121121
this.PolicyXMLBaseUrl = overridingConfig.PolicyXMLBaseUrl ?? this.PolicyXMLBaseUrl;
122122
this.PolicyXMLSasToken = overridingConfig.PolicyXMLSasToken ?? this.PolicyXMLSasToken;
123123
this.ApiVersionSetName = overridingConfig.ApiVersionSetName ?? this.ApiVersionSetName;
124-
this.IncludeAllRevisions = overridingConfig.IncludeAllRevisions != null && overridingConfig.IncludeAllRevisions.Equals("true", StringComparison.OrdinalIgnoreCase);
125-
124+
this.OperationBatchSize = overridingConfig.OperationBatchSize ?? this.OperationBatchSize;
125+
126126
// there can be no service url parameters in overriding configuration
127127
// this.ServiceUrlParameters = overridingConfig.ServiceUrlParameters ?? this.ServiceUrlParameters;
128128

129-
this.ParameterizeServiceUrl = overridingConfig.ParamServiceUrl != null && overridingConfig.ParamServiceUrl.Equals("true", StringComparison.OrdinalIgnoreCase) || overridingConfig.ServiceUrlParameters != null;
130-
this.ParameterizeNamedValue = overridingConfig.ParamNamedValue != null && overridingConfig.ParamNamedValue.Equals("true", StringComparison.OrdinalIgnoreCase);
131-
this.ParameterizeApiLoggerId = overridingConfig.ParamApiLoggerId != null && overridingConfig.ParamApiLoggerId.Equals("true", StringComparison.OrdinalIgnoreCase);
132-
this.ParameterizeLogResourceId = overridingConfig.ParamLogResourceId != null && overridingConfig.ParamLogResourceId.Equals("true", StringComparison.OrdinalIgnoreCase);
133-
this.NotIncludeNamedValue = overridingConfig.NotIncludeNamedValue != null && overridingConfig.NotIncludeNamedValue.Equals("true", StringComparison.OrdinalIgnoreCase);
134-
this.OperationBatchSize = overridingConfig.OperationBatchSize ?? this.OperationBatchSize;
135-
this.ParamNamedValuesKeyVaultSecrets = overridingConfig.ParamNamedValuesKeyVaultSecrets != null && overridingConfig.ParamNamedValuesKeyVaultSecrets.Equals("true", StringComparison.OrdinalIgnoreCase);
136-
this.ParameterizeBackend = overridingConfig.ParamBackend != null && overridingConfig.ParamBackend.Equals("true", StringComparison.OrdinalIgnoreCase);
137-
this.SplitApis = !string.IsNullOrEmpty(overridingConfig.SplitAPIs) && overridingConfig.SplitAPIs.Equals("true", StringComparison.OrdinalIgnoreCase);
138-
this.IncludeAllRevisions = !string.IsNullOrEmpty(overridingConfig.IncludeAllRevisions) && overridingConfig.IncludeAllRevisions.Equals("true", StringComparison.OrdinalIgnoreCase);
139-
this.ExtractGateways = string.IsNullOrEmpty(overridingConfig.ExtractGateways) ? this.ExtractGateways : overridingConfig.ExtractGateways.Equals("true", StringComparison.OrdinalIgnoreCase);
140-
141-
if (!string.IsNullOrEmpty(overridingConfig.BaseFileName) && !string.IsNullOrEmpty(overridingConfig.BaseFileName))
129+
this.ParameterizeServiceUrl = !string.IsNullOrEmpty(overridingConfig.ParamServiceUrl) ? overridingConfig.ParamServiceUrl.Equals("true", StringComparison.OrdinalIgnoreCase) || overridingConfig.ServiceUrlParameters != null : this.ParameterizeServiceUrl;
130+
this.ParameterizeNamedValue = !string.IsNullOrEmpty(overridingConfig.ParamNamedValue) ? overridingConfig.ParamNamedValue.Equals("true", StringComparison.OrdinalIgnoreCase) : this.ParameterizeNamedValue;
131+
this.ParameterizeApiLoggerId = !string.IsNullOrEmpty(overridingConfig.ParamApiLoggerId) ? overridingConfig.ParamApiLoggerId.Equals("true", StringComparison.OrdinalIgnoreCase) : this.ParameterizeApiLoggerId;
132+
this.ParameterizeLogResourceId = !string.IsNullOrEmpty(overridingConfig.ParamLogResourceId) ? overridingConfig.ParamLogResourceId.Equals("true", StringComparison.OrdinalIgnoreCase) : this.ParameterizeLogResourceId;
133+
this.NotIncludeNamedValue = !string.IsNullOrEmpty(overridingConfig.NotIncludeNamedValue) ? overridingConfig.NotIncludeNamedValue.Equals("true", StringComparison.OrdinalIgnoreCase) : this.NotIncludeNamedValue;
134+
this.ParamNamedValuesKeyVaultSecrets = !string.IsNullOrEmpty(overridingConfig.ParamNamedValuesKeyVaultSecrets) ? overridingConfig.ParamNamedValuesKeyVaultSecrets.Equals("true", StringComparison.OrdinalIgnoreCase) : this.ParamNamedValuesKeyVaultSecrets;
135+
this.ParameterizeBackend = !string.IsNullOrEmpty(overridingConfig.ParamBackend) ? overridingConfig.ParamBackend.Equals("true", StringComparison.OrdinalIgnoreCase) : this.ParameterizeBackend;
136+
this.SplitApis = !string.IsNullOrEmpty(overridingConfig.SplitAPIs) ? overridingConfig.SplitAPIs.Equals("true", StringComparison.OrdinalIgnoreCase) : this.SplitApis;
137+
this.IncludeAllRevisions = !string.IsNullOrEmpty(overridingConfig.IncludeAllRevisions) ? overridingConfig.IncludeAllRevisions.Equals("true", StringComparison.OrdinalIgnoreCase) : this.IncludeAllRevisions;
138+
this.ExtractGateways = !string.IsNullOrEmpty(overridingConfig.ExtractGateways) ? overridingConfig.ExtractGateways.Equals("true", StringComparison.OrdinalIgnoreCase) : this.ExtractGateways;
139+
140+
if (!string.IsNullOrEmpty(overridingConfig.BaseFileName))
142141
{
143142
this.FileNames = this.GenerateFileNames(overridingConfig.BaseFileName, overridingConfig.SourceApimName);
144143
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using FluentAssertions;
2+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Commands.Configurations;
3+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Extractor.Models;
4+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Tests.Extractor.Abstractions;
5+
using Xunit;
6+
7+
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Tests.Extractor.Configuration
8+
{
9+
[Trait("Category", "Unit")]
10+
public class ExtractorConfigurationOverrideTests : ExtractorMockerTestsBase
11+
{
12+
[Fact]
13+
public void ExtractorConfigValidate_NoPropertiesSet_MissingParameterException()
14+
{
15+
var defaultExtractorConfig = new ExtractorConsoleAppConfiguration
16+
{
17+
IncludeAllRevisions = true.ToString(),
18+
ParamApiLoggerId = true.ToString(),
19+
ParamBackend = true.ToString(),
20+
ParamLogResourceId = true.ToString(),
21+
ParamNamedValue = true.ToString(),
22+
ParamNamedValuesKeyVaultSecrets = true.ToString(),
23+
ParamServiceUrl = true.ToString(),
24+
NotIncludeNamedValue = true.ToString(),
25+
SplitAPIs = true.ToString(),
26+
ExtractGateways = true.ToString()
27+
};
28+
29+
var extractorParameters = new ExtractorParameters(defaultExtractorConfig);
30+
extractorParameters = extractorParameters.OverrideConfiguration(new ExtractorConsoleAppConfiguration());
31+
32+
extractorParameters.IncludeAllRevisions.Should().BeTrue();
33+
extractorParameters.ParameterizeServiceUrl.Should().BeTrue();
34+
extractorParameters.ParameterizeNamedValue.Should().BeTrue();
35+
extractorParameters.ParameterizeApiLoggerId.Should().BeTrue();
36+
extractorParameters.ParameterizeLogResourceId.Should().BeTrue();
37+
extractorParameters.NotIncludeNamedValue.Should().BeTrue();
38+
extractorParameters.ParamNamedValuesKeyVaultSecrets.Should().BeTrue();
39+
extractorParameters.ParameterizeBackend.Should().BeTrue();
40+
extractorParameters.SplitApis.Should().BeTrue();
41+
extractorParameters.IncludeAllRevisions.Should().BeTrue();
42+
extractorParameters.ExtractGateways.Should().BeTrue();
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)