diff --git a/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs b/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs index 322bb041fe..08d71d1e93 100644 --- a/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs +++ b/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs @@ -6,9 +6,9 @@ namespace Steeltoe.Extensions.Configuration.Kubernetes.ServiceBinding; -internal sealed class RabbitMQLegacyConnectorPostProcessor : IConfigurationPostProcessor +internal sealed class MongoDbLegacyConnectorPostProcessor : IConfigurationPostProcessor { - internal const string BindingTypeKey = "rabbitmq"; + internal const string BindingTypeKey = "mongodb"; public void PostProcessConfiguration(PostProcessorConfigurationProvider provider, IDictionary configData) { @@ -19,17 +19,17 @@ public void PostProcessConfiguration(PostProcessorConfigurationProvider provider configData.Filter(ServiceBindingConfigurationProvider.KubernetesBindingsPrefix, ServiceBindingConfigurationProvider.TypeKey, BindingTypeKey).ForEach( bindingNameKey => - { - // Spring -> spring.rabbitmq.... - // Steeltoe -> rabbitmq:client:.... - var mapper = new ServiceBindingMapper(configData, bindingNameKey, "rabbitmq", "client"); - mapper.MapFromTo("addresses", "uri"); - mapper.MapFromTo("host", "server"); - mapper.MapFromTo("password", "password"); - mapper.MapFromTo("port", "port"); - mapper.MapFromTo("username", "username"); - mapper.MapFromTo("virtual-host", "virtualhost"); - }); + { + var mapper = new ServiceBindingMapper(configData, bindingNameKey, "mongodb", "client"); + + // Spring -> spring.data.mongodb.... + // Steeltoe -> mongodb:client:... + mapper.MapFromTo("host", "server"); + mapper.MapFromTo("port", "port"); + mapper.MapFromTo("database", "database"); + mapper.MapFromTo("username", "username"); + mapper.MapFromTo("password", "password"); + }); } } @@ -100,3 +100,55 @@ public void PostProcessConfiguration(PostProcessorConfigurationProvider provider }); } } + +internal sealed class RabbitMQLegacyConnectorPostProcessor : IConfigurationPostProcessor +{ + internal const string BindingTypeKey = "rabbitmq"; + + public void PostProcessConfiguration(PostProcessorConfigurationProvider provider, IDictionary configData) + { + if (!provider.IsBindingTypeEnabled(BindingTypeKey)) + { + return; + } + + configData.Filter(ServiceBindingConfigurationProvider.KubernetesBindingsPrefix, ServiceBindingConfigurationProvider.TypeKey, BindingTypeKey).ForEach( + bindingNameKey => + { + // Spring -> spring.rabbitmq.... + // Steeltoe -> rabbitmq:client:.... + var mapper = new ServiceBindingMapper(configData, bindingNameKey, "rabbitmq", "client"); + mapper.MapFromTo("addresses", "uri"); + mapper.MapFromTo("host", "server"); + mapper.MapFromTo("password", "password"); + mapper.MapFromTo("port", "port"); + mapper.MapFromTo("username", "username"); + mapper.MapFromTo("virtual-host", "virtualhost"); + }); + } +} + +internal sealed class RedisLegacyConnectorPostProcessor : IConfigurationPostProcessor +{ + internal const string BindingTypeKey = "redis"; + + public void PostProcessConfiguration(PostProcessorConfigurationProvider provider, IDictionary configData) + { + if (!provider.IsBindingTypeEnabled(BindingTypeKey)) + { + return; + } + + configData.Filter(ServiceBindingConfigurationProvider.KubernetesBindingsPrefix, ServiceBindingConfigurationProvider.TypeKey, BindingTypeKey).ForEach( + bindingNameKey => + { + var mapper = new ServiceBindingMapper(configData, bindingNameKey, "redis", "client"); + + mapper.MapFromTo("host", "host"); + mapper.MapFromTo("port", "port"); + mapper.MapFromTo("ssl", "ssl"); + mapper.MapFromTo("password", "password"); + mapper.MapFromTo("client-name", "clientName"); + }); + } +} diff --git a/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs b/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs index d4a667d83b..63c2bfc7ec 100644 --- a/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs +++ b/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs @@ -11,20 +11,19 @@ namespace Steeltoe.Extensions.Configuration.Kubernetes.ServiceBinding.Test; public class LegacyConnectorsPostProcessorsTest : BasePostProcessorsTest { [Fact] - public void RabbitMQTest_BindingTypeEnabled() + public void MongoDbTest_BindingTypeEnabled() { - var postProcessor = new RabbitMQLegacyConnectorPostProcessor(); + var postProcessor = new MongoDbLegacyConnectorPostProcessor(); - Dictionary configData = GetConfigData(_testBindingName, RabbitMQPostProcessor.BindingTypeKey, Tuple.Create("addresses", "test-addresses"), Tuple.Create("host", "test-host"), Tuple.Create("password", "test-password"), Tuple.Create("port", "test-port"), Tuple.Create("username", "test-username"), Tuple.Create("virtual-host", "test-virtual-host")); + Dictionary configData = GetConfigData(_testBindingName, MongoDbPostProcessor.BindingTypeKey, Tuple.Create("database", "test-database"), Tuple.Create("host", "test-host"), Tuple.Create("password", "test-password"), Tuple.Create("port", "test-port"), Tuple.Create("username", "test-username")); // BindingType enabled - postProcessor.PostProcessConfiguration(GetConfigurationProvider(postProcessor, RabbitMQPostProcessor.BindingTypeKey, true), configData); - Assert.Equal("test-addresses", configData["rabbitmq:client:uri"]); - Assert.Equal("test-host", configData["rabbitmq:client:server"]); - Assert.Equal("test-password", configData["rabbitmq:client:password"]); - Assert.Equal("test-port", configData["rabbitmq:client:port"]); - Assert.Equal("test-username", configData["rabbitmq:client:username"]); - Assert.Equal("test-virtual-host", configData["rabbitmq:client:virtualhost"]); + postProcessor.PostProcessConfiguration(GetConfigurationProvider(postProcessor, MongoDbPostProcessor.BindingTypeKey, true), configData); + Assert.Equal("test-host", configData["mongodb:client:server"]); + Assert.Equal("test-port", configData["mongodb:client:port"]); + Assert.Equal("test-database", configData["mongodb:client:database"]); + Assert.Equal("test-username", configData["mongodb:client:username"]); + Assert.Equal("test-password", configData["mongodb:client:password"]); } [Fact] @@ -63,4 +62,37 @@ public void PostgreSqlTest_BindingTypeEnabled() Assert.Equal("root.cert", configData["postgres:client:sslrootcert"]); Assert.Equal("--cluster=routing-id&opt=val1", configData["postgres:client:options"]); } + + [Fact] + public void RabbitMQTest_BindingTypeEnabled() + { + var postProcessor = new RabbitMQLegacyConnectorPostProcessor(); + + Dictionary configData = GetConfigData(_testBindingName, RabbitMQPostProcessor.BindingTypeKey, Tuple.Create("addresses", "test-addresses"), Tuple.Create("host", "test-host"), Tuple.Create("password", "test-password"), Tuple.Create("port", "test-port"), Tuple.Create("username", "test-username"), Tuple.Create("virtual-host", "test-virtual-host")); + + // BindingType enabled + postProcessor.PostProcessConfiguration(GetConfigurationProvider(postProcessor, RabbitMQPostProcessor.BindingTypeKey, true), configData); + Assert.Equal("test-addresses", configData["rabbitmq:client:uri"]); + Assert.Equal("test-host", configData["rabbitmq:client:server"]); + Assert.Equal("test-password", configData["rabbitmq:client:password"]); + Assert.Equal("test-port", configData["rabbitmq:client:port"]); + Assert.Equal("test-username", configData["rabbitmq:client:username"]); + Assert.Equal("test-virtual-host", configData["rabbitmq:client:virtualhost"]); + } + + [Fact] + public void RedisTest_BindingTypeEnabled() + { + var postProcessor = new RedisLegacyConnectorPostProcessor(); + + Dictionary configData = GetConfigData(_testBindingName, RedisPostProcessor.BindingTypeKey, Tuple.Create("host", "test-host"), Tuple.Create("password", "test-password"), Tuple.Create("port", "test-port"), Tuple.Create("username", "test-username"), Tuple.Create("client-name", "test-client"), Tuple.Create("ssl", "true")); + + // BindingType enabled + postProcessor.PostProcessConfiguration(GetConfigurationProvider(postProcessor, RedisPostProcessor.BindingTypeKey, true), configData); + Assert.Equal("test-host", configData["redis:client:host"]); + Assert.Equal("test-port", configData["redis:client:port"]); + Assert.Equal("true", configData["redis:client:ssl"]); + Assert.Equal("test-password", configData["redis:client:password"]); + Assert.Equal("test-client", configData["redis:client:clientName"]); + } }