diff --git a/docs/features/servicediscovery.rst b/docs/features/servicediscovery.rst index f23d2a4a..2552a6b2 100644 --- a/docs/features/servicediscovery.rst +++ b/docs/features/servicediscovery.rst @@ -25,9 +25,12 @@ Then add the following to your ConfigureServices method. The following is required in the GlobalConfiguration. The Provider is required and if you do not specify a host and port the Consul default will be used. +Please note the Scheme option defauls to HTTP. It was added in this `PR `_. It defaults to HTTP to not introduce a breaking change. + .. code-block:: json "ServiceDiscoveryProvider": { + "Scheme": "https", "Host": "localhost", "Port": 8500, "Type": "Consul" diff --git a/src/Ocelot.Provider.Consul/ConsulClientFactory.cs b/src/Ocelot.Provider.Consul/ConsulClientFactory.cs index f3f0e54f..94055df7 100644 --- a/src/Ocelot.Provider.Consul/ConsulClientFactory.cs +++ b/src/Ocelot.Provider.Consul/ConsulClientFactory.cs @@ -9,7 +9,7 @@ { return new ConsulClient(c => { - c.Address = new Uri($"http://{config.Host}:{config.Port}"); + c.Address = new Uri($"{config.Scheme}://{config.Host}:{config.Port}"); if (!string.IsNullOrEmpty(config?.Token)) { diff --git a/src/Ocelot.Provider.Consul/ConsulFileConfigurationRepository.cs b/src/Ocelot.Provider.Consul/ConsulFileConfigurationRepository.cs index 1044b7b6..56e55dfe 100644 --- a/src/Ocelot.Provider.Consul/ConsulFileConfigurationRepository.cs +++ b/src/Ocelot.Provider.Consul/ConsulFileConfigurationRepository.cs @@ -31,7 +31,7 @@ _configurationKey = string.IsNullOrWhiteSpace(serviceDiscoveryProvider.ConfigurationKey) ? "InternalConfiguration" : serviceDiscoveryProvider.ConfigurationKey; - var config = new ConsulRegistryConfiguration(serviceDiscoveryProvider.Host, + var config = new ConsulRegistryConfiguration(serviceDiscoveryProvider.Scheme, serviceDiscoveryProvider.Host, serviceDiscoveryProvider.Port, _configurationKey, serviceDiscoveryProvider.Token); _consul = factory.Get(config); diff --git a/src/Ocelot.Provider.Consul/ConsulProviderFactory.cs b/src/Ocelot.Provider.Consul/ConsulProviderFactory.cs index 8cffa882..a70fbbeb 100644 --- a/src/Ocelot.Provider.Consul/ConsulProviderFactory.cs +++ b/src/Ocelot.Provider.Consul/ConsulProviderFactory.cs @@ -12,7 +12,7 @@ var consulFactory = provider.GetService(); - var consulRegistryConfiguration = new ConsulRegistryConfiguration(config.Host, config.Port, reRoute.ServiceName, config.Token); + var consulRegistryConfiguration = new ConsulRegistryConfiguration(config.Scheme, config.Host, config.Port, reRoute.ServiceName, config.Token); var consulServiceDiscoveryProvider = new Consul(consulRegistryConfiguration, factory, consulFactory); diff --git a/src/Ocelot.Provider.Consul/ConsulRegistryConfiguration.cs b/src/Ocelot.Provider.Consul/ConsulRegistryConfiguration.cs index a84088b0..38bf515f 100644 --- a/src/Ocelot.Provider.Consul/ConsulRegistryConfiguration.cs +++ b/src/Ocelot.Provider.Consul/ConsulRegistryConfiguration.cs @@ -2,15 +2,17 @@ { public class ConsulRegistryConfiguration { - public ConsulRegistryConfiguration(string host, int port, string keyOfServiceInConsul, string token) + public ConsulRegistryConfiguration(string scheme, string host, int port, string keyOfServiceInConsul, string token) { Host = string.IsNullOrEmpty(host) ? "localhost" : host; Port = port > 0 ? port : 8500; + Scheme = string.IsNullOrEmpty(scheme) ? "http" : scheme; KeyOfServiceInConsul = keyOfServiceInConsul; Token = token; } public string KeyOfServiceInConsul { get; } + public string Scheme { get; } public string Host { get; } public int Port { get; } public string Token { get; } diff --git a/src/Ocelot/Configuration/Builder/ServiceProviderConfigurationBuilder.cs b/src/Ocelot/Configuration/Builder/ServiceProviderConfigurationBuilder.cs index 16ec15d0..2d304700 100644 --- a/src/Ocelot/Configuration/Builder/ServiceProviderConfigurationBuilder.cs +++ b/src/Ocelot/Configuration/Builder/ServiceProviderConfigurationBuilder.cs @@ -2,6 +2,7 @@ namespace Ocelot.Configuration.Builder { public class ServiceProviderConfigurationBuilder { + private string _serviceDiscoveryProviderScheme; private string _serviceDiscoveryProviderHost; private int _serviceDiscoveryProviderPort; private string _type; @@ -10,6 +11,12 @@ namespace Ocelot.Configuration.Builder private int _pollingInterval; private string _namespace; + public ServiceProviderConfigurationBuilder WithScheme(string serviceDiscoveryProviderScheme) + { + _serviceDiscoveryProviderScheme = serviceDiscoveryProviderScheme; + return this; + } + public ServiceProviderConfigurationBuilder WithHost(string serviceDiscoveryProviderHost) { _serviceDiscoveryProviderHost = serviceDiscoveryProviderHost; @@ -54,7 +61,7 @@ namespace Ocelot.Configuration.Builder public ServiceProviderConfiguration Build() { - return new ServiceProviderConfiguration(_type, _serviceDiscoveryProviderHost, _serviceDiscoveryProviderPort, _token, _configurationKey, _pollingInterval, _namespace); + return new ServiceProviderConfiguration(_type, _serviceDiscoveryProviderScheme, _serviceDiscoveryProviderHost, _serviceDiscoveryProviderPort, _token, _configurationKey, _pollingInterval, _namespace); } } } diff --git a/src/Ocelot/Configuration/Creator/ServiceProviderConfigurationCreator.cs b/src/Ocelot/Configuration/Creator/ServiceProviderConfigurationCreator.cs index aa631f87..ee6c9a7a 100644 --- a/src/Ocelot/Configuration/Creator/ServiceProviderConfigurationCreator.cs +++ b/src/Ocelot/Configuration/Creator/ServiceProviderConfigurationCreator.cs @@ -8,6 +8,7 @@ namespace Ocelot.Configuration.Creator public ServiceProviderConfiguration Create(FileGlobalConfiguration globalConfiguration) { var port = globalConfiguration?.ServiceDiscoveryProvider?.Port ?? 0; + var scheme = globalConfiguration?.ServiceDiscoveryProvider?.Scheme ?? "http"; var host = globalConfiguration?.ServiceDiscoveryProvider?.Host ?? "localhost"; var type = !string.IsNullOrEmpty(globalConfiguration?.ServiceDiscoveryProvider?.Type) ? globalConfiguration?.ServiceDiscoveryProvider?.Type @@ -16,6 +17,7 @@ namespace Ocelot.Configuration.Creator var k8snamespace = globalConfiguration?.ServiceDiscoveryProvider?.Namespace ?? string.Empty; return new ServiceProviderConfigurationBuilder() + .WithScheme(scheme) .WithHost(host) .WithPort(port) .WithType(type) diff --git a/src/Ocelot/Configuration/File/FileServiceDiscoveryProvider.cs b/src/Ocelot/Configuration/File/FileServiceDiscoveryProvider.cs index c41f1e24..71a34e42 100644 --- a/src/Ocelot/Configuration/File/FileServiceDiscoveryProvider.cs +++ b/src/Ocelot/Configuration/File/FileServiceDiscoveryProvider.cs @@ -2,6 +2,7 @@ namespace Ocelot.Configuration.File { public class FileServiceDiscoveryProvider { + public string Scheme { get; set; } public string Host { get; set; } public int Port { get; set; } public string Type { get; set; } diff --git a/src/Ocelot/Configuration/ServiceProviderConfiguration.cs b/src/Ocelot/Configuration/ServiceProviderConfiguration.cs index 86178c6e..545ff490 100644 --- a/src/Ocelot/Configuration/ServiceProviderConfiguration.cs +++ b/src/Ocelot/Configuration/ServiceProviderConfiguration.cs @@ -2,9 +2,10 @@ { public class ServiceProviderConfiguration { - public ServiceProviderConfiguration(string type, string host, int port, string token, string configurationKey, int pollingInterval, string @namespace = "") + public ServiceProviderConfiguration(string type, string scheme, string host, int port, string token, string configurationKey, int pollingInterval, string @namespace = "") { ConfigurationKey = configurationKey; + Scheme = scheme; Host = host; Port = port; Token = token; @@ -13,6 +14,8 @@ Namespace = @namespace; } + public string Scheme { get; } + public string Host { get; } public int Port { get; } diff --git a/test/Ocelot.AcceptanceTests/CannotStartOcelotTests.cs b/test/Ocelot.AcceptanceTests/CannotStartOcelotTests.cs index c08d5eb5..74359480 100644 --- a/test/Ocelot.AcceptanceTests/CannotStartOcelotTests.cs +++ b/test/Ocelot.AcceptanceTests/CannotStartOcelotTests.cs @@ -24,6 +24,7 @@ namespace Ocelot.AcceptanceTests { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "localhost", Type = "consul", Port = 8500 @@ -66,6 +67,7 @@ namespace Ocelot.AcceptanceTests { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "localhost", Type = "consul", Port = 8500 diff --git a/test/Ocelot.AcceptanceTests/ConfigurationInConsulTests.cs b/test/Ocelot.AcceptanceTests/ConfigurationInConsulTests.cs index ae6b6c42..c1d650e5 100644 --- a/test/Ocelot.AcceptanceTests/ConfigurationInConsulTests.cs +++ b/test/Ocelot.AcceptanceTests/ConfigurationInConsulTests.cs @@ -60,6 +60,7 @@ namespace Ocelot.AcceptanceTests { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort } diff --git a/test/Ocelot.AcceptanceTests/ConsulConfigurationInConsulTests.cs b/test/Ocelot.AcceptanceTests/ConsulConfigurationInConsulTests.cs index f9774565..6a4a8d2d 100644 --- a/test/Ocelot.AcceptanceTests/ConsulConfigurationInConsulTests.cs +++ b/test/Ocelot.AcceptanceTests/ConsulConfigurationInConsulTests.cs @@ -61,6 +61,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort } @@ -91,6 +92,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort } @@ -123,6 +125,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort } @@ -152,6 +155,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort } @@ -184,6 +188,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort } @@ -214,6 +219,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort } @@ -274,6 +280,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "http", Host = "localhost", Port = consulPort }, @@ -295,6 +302,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "http", Host = "localhost", Port = consulPort } diff --git a/test/Ocelot.AcceptanceTests/ConsulWebSocketTests.cs b/test/Ocelot.AcceptanceTests/ConsulWebSocketTests.cs index 935a56f7..09213a0a 100644 --- a/test/Ocelot.AcceptanceTests/ConsulWebSocketTests.cs +++ b/test/Ocelot.AcceptanceTests/ConsulWebSocketTests.cs @@ -83,6 +83,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "http", Host = "localhost", Port = consulPort, Type = "consul" diff --git a/test/Ocelot.AcceptanceTests/ServiceDiscoveryTests.cs b/test/Ocelot.AcceptanceTests/ServiceDiscoveryTests.cs index c3d5479c..b2d8d1d3 100644 --- a/test/Ocelot.AcceptanceTests/ServiceDiscoveryTests.cs +++ b/test/Ocelot.AcceptanceTests/ServiceDiscoveryTests.cs @@ -81,6 +81,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort } @@ -137,6 +138,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort } @@ -180,6 +182,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "http", Host = "localhost", Port = consulPort }, @@ -243,6 +246,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort }, @@ -302,6 +306,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort, Token = token @@ -372,6 +377,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort } @@ -437,6 +443,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "http", Host = "localhost", Port = consulPort, Type = "PollConsul", diff --git a/test/Ocelot.AcceptanceTests/SslTests.cs b/test/Ocelot.AcceptanceTests/SslTests.cs index ee1f8141..e270a0f2 100644 --- a/test/Ocelot.AcceptanceTests/SslTests.cs +++ b/test/Ocelot.AcceptanceTests/SslTests.cs @@ -6,7 +6,7 @@ namespace Ocelot.AcceptanceTests using System.Collections.Generic; using System.Net; using TestStack.BDDfy; - using Xunit; + using Xunit; public class SslTests : IDisposable { @@ -118,4 +118,4 @@ namespace Ocelot.AcceptanceTests _steps.Dispose(); } } -} +} diff --git a/test/Ocelot.AcceptanceTests/TwoDownstreamServicesTests.cs b/test/Ocelot.AcceptanceTests/TwoDownstreamServicesTests.cs index 6e3e843b..e26fff9f 100644 --- a/test/Ocelot.AcceptanceTests/TwoDownstreamServicesTests.cs +++ b/test/Ocelot.AcceptanceTests/TwoDownstreamServicesTests.cs @@ -74,6 +74,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider() { + Scheme = "https", Host = "localhost", Port = consulPort } diff --git a/test/Ocelot.IntegrationTests/AdministrationTests.cs b/test/Ocelot.IntegrationTests/AdministrationTests.cs index 8c378ece..b9d6b068 100644 --- a/test/Ocelot.IntegrationTests/AdministrationTests.cs +++ b/test/Ocelot.IntegrationTests/AdministrationTests.cs @@ -124,6 +124,7 @@ namespace Ocelot.IntegrationTests RequestIdKey = "RequestId", ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "127.0.0.1", } }, @@ -660,6 +661,7 @@ namespace Ocelot.IntegrationTests var response = JsonConvert.DeserializeObject(_response.Content.ReadAsStringAsync().Result); response.GlobalConfiguration.RequestIdKey.ShouldBe(expecteds.GlobalConfiguration.RequestIdKey); + response.GlobalConfiguration.ServiceDiscoveryProvider.Scheme.ShouldBe(expecteds.GlobalConfiguration.ServiceDiscoveryProvider.Scheme); response.GlobalConfiguration.ServiceDiscoveryProvider.Host.ShouldBe(expecteds.GlobalConfiguration.ServiceDiscoveryProvider.Host); response.GlobalConfiguration.ServiceDiscoveryProvider.Port.ShouldBe(expecteds.GlobalConfiguration.ServiceDiscoveryProvider.Port); diff --git a/test/Ocelot.UnitTests/Configuration/ConfigurationCreatorTests.cs b/test/Ocelot.UnitTests/Configuration/ConfigurationCreatorTests.cs index 68516ad6..7736bf4e 100644 --- a/test/Ocelot.UnitTests/Configuration/ConfigurationCreatorTests.cs +++ b/test/Ocelot.UnitTests/Configuration/ConfigurationCreatorTests.cs @@ -105,7 +105,7 @@ namespace Ocelot.UnitTests.Configuration GlobalConfiguration = new FileGlobalConfiguration() }; _reRoutes = new List(); - _spc = new ServiceProviderConfiguration("", "", 1, "", "", 1); + _spc = new ServiceProviderConfiguration("", "", "", 1, "", "", 1); _lbo = new LoadBalancerOptionsBuilder().Build(); _qoso = new QoSOptions(1, 1, 1, ""); _hho = new HttpHandlerOptionsBuilder().Build(); diff --git a/test/Ocelot.UnitTests/Configuration/DiskFileConfigurationRepositoryTests.cs b/test/Ocelot.UnitTests/Configuration/DiskFileConfigurationRepositoryTests.cs index 7c00c2f4..dcf51ce4 100644 --- a/test/Ocelot.UnitTests/Configuration/DiskFileConfigurationRepositoryTests.cs +++ b/test/Ocelot.UnitTests/Configuration/DiskFileConfigurationRepositoryTests.cs @@ -139,6 +139,7 @@ namespace Ocelot.UnitTests.Configuration private void ThenTheConfigurationIsStoredAs(FileConfiguration expecteds) { _result.GlobalConfiguration.RequestIdKey.ShouldBe(expecteds.GlobalConfiguration.RequestIdKey); + _result.GlobalConfiguration.ServiceDiscoveryProvider.Scheme.ShouldBe(expecteds.GlobalConfiguration.ServiceDiscoveryProvider.Scheme); _result.GlobalConfiguration.ServiceDiscoveryProvider.Host.ShouldBe(expecteds.GlobalConfiguration.ServiceDiscoveryProvider.Host); _result.GlobalConfiguration.ServiceDiscoveryProvider.Port.ShouldBe(expecteds.GlobalConfiguration.ServiceDiscoveryProvider.Port); @@ -196,6 +197,7 @@ namespace Ocelot.UnitTests.Configuration private void ThenTheFollowingIsReturned(FileConfiguration expecteds) { _result.GlobalConfiguration.RequestIdKey.ShouldBe(expecteds.GlobalConfiguration.RequestIdKey); + _result.GlobalConfiguration.ServiceDiscoveryProvider.Scheme.ShouldBe(expecteds.GlobalConfiguration.ServiceDiscoveryProvider.Scheme); _result.GlobalConfiguration.ServiceDiscoveryProvider.Host.ShouldBe(expecteds.GlobalConfiguration.ServiceDiscoveryProvider.Host); _result.GlobalConfiguration.ServiceDiscoveryProvider.Port.ShouldBe(expecteds.GlobalConfiguration.ServiceDiscoveryProvider.Port); @@ -243,6 +245,7 @@ namespace Ocelot.UnitTests.Configuration { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Port = 198, Host = "blah" } @@ -278,6 +281,7 @@ namespace Ocelot.UnitTests.Configuration { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Port = 198, Host = "blah" } diff --git a/test/Ocelot.UnitTests/Configuration/ServiceProviderCreatorTests.cs b/test/Ocelot.UnitTests/Configuration/ServiceProviderCreatorTests.cs index 1fbf4f79..a19d71be 100644 --- a/test/Ocelot.UnitTests/Configuration/ServiceProviderCreatorTests.cs +++ b/test/Ocelot.UnitTests/Configuration/ServiceProviderCreatorTests.cs @@ -26,6 +26,7 @@ namespace Ocelot.UnitTests.Configuration { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "127.0.0.1", Port = 1234, Type = "ServiceFabric", @@ -36,6 +37,7 @@ namespace Ocelot.UnitTests.Configuration }; var expected = new ServiceProviderConfigurationBuilder() + .WithScheme("https") .WithHost("127.0.0.1") .WithPort(1234) .WithType("ServiceFabric") @@ -62,6 +64,7 @@ namespace Ocelot.UnitTests.Configuration private void ThenTheConfigIs(ServiceProviderConfiguration expected) { + _result.Scheme.ShouldBe(expected.Scheme); _result.Host.ShouldBe(expected.Host); _result.Port.ShouldBe(expected.Port); _result.Token.ShouldBe(expected.Token); diff --git a/test/Ocelot.UnitTests/Configuration/Validation/FileConfigurationFluentValidatorTests.cs b/test/Ocelot.UnitTests/Configuration/Validation/FileConfigurationFluentValidatorTests.cs index 7055c1ad..ffb4bd97 100644 --- a/test/Ocelot.UnitTests/Configuration/Validation/FileConfigurationFluentValidatorTests.cs +++ b/test/Ocelot.UnitTests/Configuration/Validation/FileConfigurationFluentValidatorTests.cs @@ -57,6 +57,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "localhost", Type = "ServiceFabric", Port = 8500 @@ -90,6 +91,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "localhost", Type = "FakeServiceDiscoveryProvider", Port = 8500 @@ -113,6 +115,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "localhost", Type = "FakeServiceDiscoveryProvider", Port = 8500 @@ -147,6 +150,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "localhost", Type = "FakeServiceDiscoveryProvider", Port = 8500 @@ -171,6 +175,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "localhost", Type = "FakeServiceDiscoveryProvider", Port = 8500 @@ -206,6 +211,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "localhost", Type = "consul", Port = 8500 @@ -1197,6 +1203,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Type = "servicefabric", Host = "localhost", Port = 1234 diff --git a/test/Ocelot.UnitTests/Consul/ConsulFileConfigurationRepositoryTests.cs b/test/Ocelot.UnitTests/Consul/ConsulFileConfigurationRepositoryTests.cs index e655f123..cc12042f 100644 --- a/test/Ocelot.UnitTests/Consul/ConsulFileConfigurationRepositoryTests.cs +++ b/test/Ocelot.UnitTests/Consul/ConsulFileConfigurationRepositoryTests.cs @@ -244,6 +244,7 @@ { ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Port = 198, Host = "blah" } diff --git a/test/Ocelot.UnitTests/Consul/ConsulServiceDiscoveryProviderTests.cs b/test/Ocelot.UnitTests/Consul/ConsulServiceDiscoveryProviderTests.cs index 8bc44b1f..8e06f111 100644 --- a/test/Ocelot.UnitTests/Consul/ConsulServiceDiscoveryProviderTests.cs +++ b/test/Ocelot.UnitTests/Consul/ConsulServiceDiscoveryProviderTests.cs @@ -25,6 +25,7 @@ private readonly string _serviceName; private readonly int _port; private readonly string _consulHost; + private readonly string _consulScheme; private readonly string _fakeConsulServiceDiscoveryUrl; private List _services; private readonly Mock _factory; @@ -37,14 +38,15 @@ _serviceName = "test"; _port = 8500; _consulHost = "localhost"; - _fakeConsulServiceDiscoveryUrl = $"http://{_consulHost}:{_port}"; + _consulScheme = "http"; + _fakeConsulServiceDiscoveryUrl = $"{_consulScheme}://{_consulHost}:{_port}"; _serviceEntries = new List(); _factory = new Mock(); _clientFactory = new ConsulClientFactory(); _logger = new Mock(); _factory.Setup(x => x.CreateLogger()).Returns(_logger.Object); _factory.Setup(x => x.CreateLogger()).Returns(_logger.Object); - var config = new ConsulRegistryConfiguration(_consulHost, _port, _serviceName, null); + var config = new ConsulRegistryConfiguration(_consulScheme, _consulHost, _port, _serviceName, null); _provider = new Consul(config, _factory.Object, _clientFactory); } @@ -74,7 +76,7 @@ public void should_use_token() { var token = "test token"; - var config = new ConsulRegistryConfiguration(_consulHost, _port, _serviceName, token); + var config = new ConsulRegistryConfiguration(_consulScheme, _consulHost, _port, _serviceName, token); _provider = new Consul(config, _factory.Object, _clientFactory); var serviceEntryOne = new ServiceEntry() diff --git a/test/Ocelot.UnitTests/Consul/ProviderFactoryTests.cs b/test/Ocelot.UnitTests/Consul/ProviderFactoryTests.cs index c51e9cd7..96048b40 100644 --- a/test/Ocelot.UnitTests/Consul/ProviderFactoryTests.cs +++ b/test/Ocelot.UnitTests/Consul/ProviderFactoryTests.cs @@ -35,7 +35,7 @@ namespace Ocelot.UnitTests.Consul .WithServiceName("") .Build(); - var provider = ConsulProviderFactory.Get(_provider, new ServiceProviderConfiguration("", "", 1, "", "", 1), reRoute); + var provider = ConsulProviderFactory.Get(_provider, new ServiceProviderConfiguration("", "", "", 1, "", "", 1), reRoute); provider.ShouldBeOfType(); } @@ -48,7 +48,7 @@ namespace Ocelot.UnitTests.Consul .WithServiceName("") .Build(); - var provider = ConsulProviderFactory.Get(_provider, new ServiceProviderConfiguration("pollconsul", "", 1, "", "", stopsPollerFromPolling), reRoute); + var provider = ConsulProviderFactory.Get(_provider, new ServiceProviderConfiguration("pollconsul", "http", "", 1, "", "", stopsPollerFromPolling), reRoute); var pollProvider = provider as PollConsul; pollProvider.ShouldNotBeNull(); pollProvider.Dispose(); diff --git a/test/Ocelot.UnitTests/DependencyInjection/ConfigurationBuilderExtensionsTests.cs b/test/Ocelot.UnitTests/DependencyInjection/ConfigurationBuilderExtensionsTests.cs index 1c1f1177..fcdc41fc 100644 --- a/test/Ocelot.UnitTests/DependencyInjection/ConfigurationBuilderExtensionsTests.cs +++ b/test/Ocelot.UnitTests/DependencyInjection/ConfigurationBuilderExtensionsTests.cs @@ -98,6 +98,7 @@ }, ServiceDiscoveryProvider = new FileServiceDiscoveryProvider { + Scheme = "https", Host = "Host", Port = 80, Type = "Type" @@ -277,6 +278,7 @@ fc.GlobalConfiguration.RateLimitOptions.QuotaExceededMessage.ShouldBe(_globalConfig.GlobalConfiguration.RateLimitOptions.QuotaExceededMessage); fc.GlobalConfiguration.RateLimitOptions.RateLimitCounterPrefix.ShouldBe(_globalConfig.GlobalConfiguration.RateLimitOptions.RateLimitCounterPrefix); fc.GlobalConfiguration.RequestIdKey.ShouldBe(_globalConfig.GlobalConfiguration.RequestIdKey); + fc.GlobalConfiguration.ServiceDiscoveryProvider.Scheme.ShouldBe(_globalConfig.GlobalConfiguration.ServiceDiscoveryProvider.Scheme); fc.GlobalConfiguration.ServiceDiscoveryProvider.Host.ShouldBe(_globalConfig.GlobalConfiguration.ServiceDiscoveryProvider.Host); fc.GlobalConfiguration.ServiceDiscoveryProvider.Port.ShouldBe(_globalConfig.GlobalConfiguration.ServiceDiscoveryProvider.Port); fc.GlobalConfiguration.ServiceDiscoveryProvider.Type.ShouldBe(_globalConfig.GlobalConfiguration.ServiceDiscoveryProvider.Type); diff --git a/test/Ocelot.UnitTests/DownstreamRouteFinder/DownstreamRouteProviderFactoryTests.cs b/test/Ocelot.UnitTests/DownstreamRouteFinder/DownstreamRouteProviderFactoryTests.cs index ac8f5e0a..fa958ced 100644 --- a/test/Ocelot.UnitTests/DownstreamRouteFinder/DownstreamRouteProviderFactoryTests.cs +++ b/test/Ocelot.UnitTests/DownstreamRouteFinder/DownstreamRouteProviderFactoryTests.cs @@ -54,7 +54,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder [Fact] public void should_return_downstream_route_finder_when_not_dynamic_re_route_and_service_discovery_on() { - var spConfig = new ServiceProviderConfigurationBuilder().WithHost("test").WithPort(50).WithType("test").Build(); + var spConfig = new ServiceProviderConfigurationBuilder().WithScheme("http").WithHost("test").WithPort(50).WithType("test").Build(); var reRoutes = new List { new ReRouteBuilder().WithUpstreamPathTemplate(new UpstreamPathTemplateBuilder().WithOriginalValue("woot").Build()).Build() @@ -66,10 +66,22 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder .BDDfy(); } + [Fact] + public void should_return_downstream_route_finder_as_no_service_discovery_given_no_scheme() + { + var spConfig = new ServiceProviderConfigurationBuilder().WithScheme("").WithHost("test").WithPort(50).Build(); + var reRoutes = new List(); + + this.Given(_ => GivenTheReRoutes(reRoutes, spConfig)) + .When(_ => WhenIGet()) + .Then(_ => ThenTheResultShouldBe()) + .BDDfy(); + } + [Fact] public void should_return_downstream_route_finder_as_no_service_discovery_given_no_host() { - var spConfig = new ServiceProviderConfigurationBuilder().WithHost("").WithPort(50).Build(); + var spConfig = new ServiceProviderConfigurationBuilder().WithScheme("http").WithHost("").WithPort(50).Build(); var reRoutes = new List(); this.Given(_ => GivenTheReRoutes(reRoutes, spConfig)) @@ -81,7 +93,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder [Fact] public void should_return_downstream_route_finder_given_no_service_discovery_port() { - var spConfig = new ServiceProviderConfigurationBuilder().WithHost("localhost").WithPort(0).Build(); + var spConfig = new ServiceProviderConfigurationBuilder().WithScheme("http").WithHost("localhost").WithPort(0).Build(); var reRoutes = new List(); this.Given(_ => GivenTheReRoutes(reRoutes, spConfig)) @@ -93,7 +105,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder [Fact] public void should_return_downstream_route_finder_given_no_service_discovery_type() { - var spConfig = new ServiceProviderConfigurationBuilder().WithHost("localhost").WithPort(50).WithType("").Build(); + var spConfig = new ServiceProviderConfigurationBuilder().WithScheme("http").WithHost("localhost").WithPort(50).WithType("").Build(); var reRoutes = new List(); this.Given(_ => GivenTheReRoutes(reRoutes, spConfig)) @@ -105,7 +117,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder [Fact] public void should_return_downstream_route_creator() { - var spConfig = new ServiceProviderConfigurationBuilder().WithHost("test").WithPort(50).WithType("test").Build(); + var spConfig = new ServiceProviderConfigurationBuilder().WithScheme("http").WithHost("test").WithPort(50).WithType("test").Build(); var reRoutes = new List(); this.Given(_ => GivenTheReRoutes(reRoutes, spConfig)) @@ -117,7 +129,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder [Fact] public void should_return_downstream_route_creator_with_dynamic_re_route() { - var spConfig = new ServiceProviderConfigurationBuilder().WithHost("test").WithPort(50).WithType("test").Build(); + var spConfig = new ServiceProviderConfigurationBuilder().WithScheme("http").WithHost("test").WithPort(50).WithType("test").Build(); var reRoutes = new List { new ReRouteBuilder().Build() diff --git a/test/Ocelot.UnitTests/LoadBalancer/LoadBalancerHouseTests.cs b/test/Ocelot.UnitTests/LoadBalancer/LoadBalancerHouseTests.cs index 57252b2b..597a79f0 100644 --- a/test/Ocelot.UnitTests/LoadBalancer/LoadBalancerHouseTests.cs +++ b/test/Ocelot.UnitTests/LoadBalancer/LoadBalancerHouseTests.cs @@ -26,7 +26,7 @@ namespace Ocelot.UnitTests.LoadBalancer { _factory = new Mock(); _loadBalancerHouse = new LoadBalancerHouse(_factory.Object); - _serviceProviderConfig = new ServiceProviderConfiguration("myType", "myHost", 123, string.Empty, "configKey", 0); + _serviceProviderConfig = new ServiceProviderConfiguration("myType", "myScheme", "myHost", 123, string.Empty, "configKey", 0); } [Fact]