Skip to content

Commit 5217f8c

Browse files
committed
Ignore case when comparing Connector configuration keys
1 parent f4d5993 commit 5217f8c

3 files changed

Lines changed: 15 additions & 10 deletions

File tree

src/Connectors/src/Connectors/ConnectionStringPostProcessor.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace Steeltoe.Connectors;
1515
internal abstract class ConnectionStringPostProcessor : IConfigurationPostProcessor
1616
{
1717
private const string ConnectionStringName = "ConnectionString";
18-
public const string DefaultBindingName = "Default";
18+
private const string DefaultBindingName = "Default";
1919

2020
private static readonly string ClientBindingsConfigurationKey = ConfigurationPath.Combine("Steeltoe", "Client");
2121
public static readonly string ServiceBindingsConfigurationKey = ConfigurationPath.Combine("steeltoe", "service-bindings");
@@ -37,7 +37,7 @@ public void PostProcessConfiguration(PostProcessorConfigurationProvider provider
3737
{
3838
bindingsByName.TryGetValue(DefaultBindingName, out BindingInfo? defaultBinding);
3939

40-
string? alternateBindingName = bindingsByName.Keys.SingleOrDefault(bindingName => bindingName != DefaultBindingName);
40+
string? alternateBindingName = bindingsByName.Keys.SingleOrDefault(bindingName => !IsDefaultBindingName(bindingName));
4141
BindingInfo? alternateBinding = alternateBindingName == null ? null : bindingsByName[alternateBindingName];
4242

4343
var bindingInfo = new BindingInfo
@@ -55,20 +55,25 @@ public void PostProcessConfiguration(PostProcessorConfigurationProvider provider
5555
}
5656
else
5757
{
58-
foreach ((string bindingName, BindingInfo bindingInfo) in bindingsByName.Where(binding => binding.Key != DefaultBindingName))
58+
foreach ((string bindingName, BindingInfo bindingInfo) in bindingsByName.Where(binding => !IsDefaultBindingName(binding.Key)))
5959
{
6060
SetConnectionString(configurationData, bindingName, bindingInfo);
6161
}
6262
}
6363
}
6464

65+
public static bool IsDefaultBindingName(string bindingName)
66+
{
67+
return string.Equals(bindingName, DefaultBindingName, StringComparison.OrdinalIgnoreCase);
68+
}
69+
6570
private static bool ShouldSetDefault(Dictionary<string, BindingInfo> bindingsByName)
6671
{
6772
if (bindingsByName.Count == 1)
6873
{
6974
(string bindingName, BindingInfo binding) = bindingsByName.Single();
7075

71-
if (bindingName == DefaultBindingName && binding.IsClientOnly)
76+
if (IsDefaultBindingName(bindingName) && binding.IsClientOnly)
7277
{
7378
return true;
7479
}
@@ -78,7 +83,7 @@ private static bool ShouldSetDefault(Dictionary<string, BindingInfo> bindingsByN
7883

7984
if (bindingsByName.Count == 2 && bindingsByName.TryGetValue(DefaultBindingName, out BindingInfo? defaultBinding) && defaultBinding.IsClientOnly)
8085
{
81-
BindingInfo alternateBinding = bindingsByName.Single(binding => binding.Key != DefaultBindingName).Value;
86+
BindingInfo alternateBinding = bindingsByName.Single(binding => !IsDefaultBindingName(binding.Key)).Value;
8287

8388
if (alternateBinding.IsServerOnly)
8489
{
@@ -91,7 +96,7 @@ private static bool ShouldSetDefault(Dictionary<string, BindingInfo> bindingsByN
9196

9297
private Dictionary<string, BindingInfo> GetBindingsByName(IConfiguration configuration)
9398
{
94-
Dictionary<string, BindingInfo> bindingsByName = [];
99+
var bindingsByName = new Dictionary<string, BindingInfo>(StringComparer.OrdinalIgnoreCase);
95100

96101
foreach (IConfigurationSection clientBinding in GetBindingSections(configuration, ClientBindingsConfigurationKey))
97102
{

src/Connectors/src/Connectors/ConnectorOptionsBinder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public static IReadOnlySet<string> RegisterNamedOptions<TOptions>(IServiceCollec
3030
{
3131
string bindingName = childSection.Key;
3232

33-
if (bindingName == ConnectionStringPostProcessor.DefaultBindingName)
33+
if (ConnectionStringPostProcessor.IsDefaultBindingName(bindingName))
3434
{
3535
services.Configure<TOptions>(childSection);
3636

@@ -62,7 +62,7 @@ private static bool ContainsNamedServiceBindings(IConfigurationSection[] section
6262
return false;
6363
}
6464

65-
if (sections is [{ Key: ConnectionStringPostProcessor.DefaultBindingName }])
65+
if (sections is [{ } singleSection] && ConnectionStringPostProcessor.IsDefaultBindingName(singleSection.Key))
6666
{
6767
return false;
6868
}
@@ -81,6 +81,6 @@ private static void RegisterHealthContributor(IServiceCollection services, strin
8181

8282
private static HashSet<string> GetNamedOptions(IConfigurationSection[] childSections)
8383
{
84-
return childSections.Select(section => section.Key == ConnectionStringPostProcessor.DefaultBindingName ? string.Empty : section.Key).ToHashSet();
84+
return childSections.Select(section => ConnectionStringPostProcessor.IsDefaultBindingName(section.Key) ? string.Empty : section.Key).ToHashSet();
8585
}
8686
}

src/Connectors/test/Connectors.Test/PostgreSql/PostgreSqlConnectorTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ public async Task Registers_default_connection_string_when_single_server_binding
488488
{
489489
var appSettings = new Dictionary<string, string?>
490490
{
491-
["Steeltoe:Client:PostgreSql:Default:ConnectionString"] = "SERVER=localhost;DB=myDb;UID=myUser;PWD=myPass;Log Parameters=True"
491+
["Steeltoe:Client:PostgreSql:DEFAULT:ConnectionString"] = "SERVER=localhost;DB=myDb;UID=myUser;PWD=myPass;Log Parameters=True"
492492
};
493493

494494
WebApplicationBuilder builder = TestWebApplicationBuilderFactory.Create();

0 commit comments

Comments
 (0)