mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 15:30:49 +08:00 
			
		
		
		
	all acceptance tests passing
This commit is contained in:
		@@ -13,13 +13,15 @@ namespace Ocelot.Configuration.Creator
 | 
			
		||||
        private readonly IHttpHandlerOptionsCreator _httpHandlerOptionsCreator;
 | 
			
		||||
        private readonly IAdministrationPath _adminPath;
 | 
			
		||||
        private readonly ILoadBalancerOptionsCreator _loadBalancerOptionsCreator;
 | 
			
		||||
        private readonly IVersionCreator _versionCreator;
 | 
			
		||||
 | 
			
		||||
        public ConfigurationCreator(
 | 
			
		||||
            IServiceProviderConfigurationCreator serviceProviderConfigCreator,
 | 
			
		||||
            IQoSOptionsCreator qosOptionsCreator,
 | 
			
		||||
            IHttpHandlerOptionsCreator httpHandlerOptionsCreator,
 | 
			
		||||
            IServiceProvider serviceProvider,
 | 
			
		||||
            ILoadBalancerOptionsCreator loadBalancerOptionsCreator
 | 
			
		||||
            ILoadBalancerOptionsCreator loadBalancerOptionsCreator,
 | 
			
		||||
            IVersionCreator versionCreator
 | 
			
		||||
            )
 | 
			
		||||
        {
 | 
			
		||||
            _adminPath = serviceProvider.GetService<IAdministrationPath>();
 | 
			
		||||
@@ -27,6 +29,7 @@ namespace Ocelot.Configuration.Creator
 | 
			
		||||
            _serviceProviderConfigCreator = serviceProviderConfigCreator;
 | 
			
		||||
            _qosOptionsCreator = qosOptionsCreator;
 | 
			
		||||
            _httpHandlerOptionsCreator = httpHandlerOptionsCreator;
 | 
			
		||||
            _versionCreator = versionCreator;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public InternalConfiguration Create(FileConfiguration fileConfiguration, List<ReRoute> reRoutes)
 | 
			
		||||
@@ -41,6 +44,8 @@ namespace Ocelot.Configuration.Creator
 | 
			
		||||
 | 
			
		||||
            var adminPath = _adminPath != null ? _adminPath.Path : null;
 | 
			
		||||
 | 
			
		||||
            var version = _versionCreator.Create(fileConfiguration.GlobalConfiguration.DownstreamHttpVersion);
 | 
			
		||||
 | 
			
		||||
            return new InternalConfiguration(reRoutes,
 | 
			
		||||
                adminPath,
 | 
			
		||||
                serviceProviderConfiguration,
 | 
			
		||||
@@ -48,7 +53,8 @@ namespace Ocelot.Configuration.Creator
 | 
			
		||||
                lbOptions,
 | 
			
		||||
                fileConfiguration.GlobalConfiguration.DownstreamScheme,
 | 
			
		||||
                qosOptions,
 | 
			
		||||
                httpHandlerOptions
 | 
			
		||||
                httpHandlerOptions,
 | 
			
		||||
                version
 | 
			
		||||
                );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,12 @@ namespace Ocelot.Configuration.Creator
 | 
			
		||||
    public class DynamicsCreator : IDynamicsCreator
 | 
			
		||||
    {
 | 
			
		||||
        private readonly IRateLimitOptionsCreator _rateLimitOptionsCreator;
 | 
			
		||||
        private readonly IVersionCreator _versionCreator;
 | 
			
		||||
 | 
			
		||||
        public DynamicsCreator(IRateLimitOptionsCreator rateLimitOptionsCreator)
 | 
			
		||||
        public DynamicsCreator(IRateLimitOptionsCreator rateLimitOptionsCreator, IVersionCreator versionCreator)
 | 
			
		||||
        {
 | 
			
		||||
            _rateLimitOptionsCreator = rateLimitOptionsCreator;
 | 
			
		||||
            _versionCreator = versionCreator;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public List<ReRoute> Create(FileConfiguration fileConfiguration)
 | 
			
		||||
@@ -26,10 +28,13 @@ namespace Ocelot.Configuration.Creator
 | 
			
		||||
            var rateLimitOption = _rateLimitOptionsCreator
 | 
			
		||||
                .Create(fileDynamicReRoute.RateLimitRule, globalConfiguration);
 | 
			
		||||
 | 
			
		||||
            var version = _versionCreator.Create(fileDynamicReRoute.DownstreamHttpVersion);
 | 
			
		||||
 | 
			
		||||
            var downstreamReRoute = new DownstreamReRouteBuilder()
 | 
			
		||||
                .WithEnableRateLimiting(rateLimitOption.EnableRateLimiting)
 | 
			
		||||
                .WithRateLimitOptions(rateLimitOption)
 | 
			
		||||
                .WithServiceName(fileDynamicReRoute.ServiceName)
 | 
			
		||||
                .WithDownstreamHttpVersion(version)
 | 
			
		||||
                .Build();
 | 
			
		||||
 | 
			
		||||
            var reRoute = new ReRouteBuilder()
 | 
			
		||||
 
 | 
			
		||||
@@ -4,5 +4,6 @@ namespace Ocelot.Configuration.File
 | 
			
		||||
    {
 | 
			
		||||
        public string ServiceName { get; set; }
 | 
			
		||||
        public FileRateLimitRule RateLimitRule { get; set; }
 | 
			
		||||
        public string DownstreamHttpVersion { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,5 +26,7 @@
 | 
			
		||||
        public string DownstreamScheme { get; set; }
 | 
			
		||||
 | 
			
		||||
        public FileHttpHandlerOptions HttpHandlerOptions { get; set; }
 | 
			
		||||
 | 
			
		||||
        public string DownstreamHttpVersion { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,8 @@ using System.Collections.Generic;
 | 
			
		||||
 | 
			
		||||
namespace Ocelot.Configuration
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
 | 
			
		||||
    public interface IInternalConfiguration
 | 
			
		||||
    {
 | 
			
		||||
        List<ReRoute> ReRoutes { get; }
 | 
			
		||||
@@ -19,5 +21,7 @@ namespace Ocelot.Configuration
 | 
			
		||||
        QoSOptions QoSOptions { get; }
 | 
			
		||||
 | 
			
		||||
        HttpHandlerOptions HttpHandlerOptions { get; }
 | 
			
		||||
 | 
			
		||||
        Version DownstreamHttpVersion { get;  }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,8 @@ using System.Collections.Generic;
 | 
			
		||||
 | 
			
		||||
namespace Ocelot.Configuration
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
 | 
			
		||||
    public class InternalConfiguration : IInternalConfiguration
 | 
			
		||||
    {
 | 
			
		||||
        public InternalConfiguration(
 | 
			
		||||
@@ -12,7 +14,8 @@ namespace Ocelot.Configuration
 | 
			
		||||
            LoadBalancerOptions loadBalancerOptions,
 | 
			
		||||
            string downstreamScheme,
 | 
			
		||||
            QoSOptions qoSOptions,
 | 
			
		||||
            HttpHandlerOptions httpHandlerOptions)
 | 
			
		||||
            HttpHandlerOptions httpHandlerOptions,
 | 
			
		||||
            Version downstreamHttpVersion)
 | 
			
		||||
        {
 | 
			
		||||
            ReRoutes = reRoutes;
 | 
			
		||||
            AdministrationPath = administrationPath;
 | 
			
		||||
@@ -22,6 +25,7 @@ namespace Ocelot.Configuration
 | 
			
		||||
            DownstreamScheme = downstreamScheme;
 | 
			
		||||
            QoSOptions = qoSOptions;
 | 
			
		||||
            HttpHandlerOptions = httpHandlerOptions;
 | 
			
		||||
            DownstreamHttpVersion = downstreamHttpVersion;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public List<ReRoute> ReRoutes { get; }
 | 
			
		||||
@@ -32,5 +36,7 @@ namespace Ocelot.Configuration
 | 
			
		||||
        public string DownstreamScheme { get; }
 | 
			
		||||
        public QoSOptions QoSOptions { get; }
 | 
			
		||||
        public HttpHandlerOptions HttpHandlerOptions { get; }
 | 
			
		||||
 | 
			
		||||
        public Version DownstreamHttpVersion { get; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
namespace Ocelot.DownstreamRouteFinder.Finder
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
    using Configuration;
 | 
			
		||||
    using Configuration.Builder;
 | 
			
		||||
    using Configuration.Creator;
 | 
			
		||||
@@ -54,6 +55,7 @@
 | 
			
		||||
                .WithQosOptions(qosOptions)
 | 
			
		||||
                .WithDownstreamScheme(configuration.DownstreamScheme)
 | 
			
		||||
                .WithLoadBalancerOptions(configuration.LoadBalancerOptions)
 | 
			
		||||
                .WithDownstreamHttpVersion(configuration.DownstreamHttpVersion)
 | 
			
		||||
                .WithUpstreamPathTemplate(upstreamPathTemplate);
 | 
			
		||||
 | 
			
		||||
            var rateLimitOptions = configuration.ReRoutes != null
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ namespace Ocelot.AcceptanceTests
 | 
			
		||||
        public void should_load_balance_request_with_least_connection()
 | 
			
		||||
        {
 | 
			
		||||
            int portOne = 50591;
 | 
			
		||||
            int portTwo = 51482;
 | 
			
		||||
            int portTwo = 54483;
 | 
			
		||||
 | 
			
		||||
            var downstreamServiceOneUrl = $"http://localhost:{portOne}";
 | 
			
		||||
            var downstreamServiceTwoUrl = $"http://localhost:{portTwo}";
 | 
			
		||||
 
 | 
			
		||||
@@ -392,6 +392,7 @@ namespace Ocelot.AcceptanceTests
 | 
			
		||||
            _ocelotServer = new TestServer(_webHostBuilder);
 | 
			
		||||
 | 
			
		||||
            _ocelotClient = _ocelotServer.CreateClient();
 | 
			
		||||
            Thread.Sleep(1000);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void WhenIGetUrlOnTheApiGatewayWaitingForTheResponseToBeOk(string url)
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,7 @@ namespace Ocelot.Benchmarks
 | 
			
		||||
 | 
			
		||||
            _downstreamContext = new DownstreamContext(httpContext)
 | 
			
		||||
            {
 | 
			
		||||
                Configuration = new InternalConfiguration(new List<ReRoute>(), null, null, null, null, null, null, null)
 | 
			
		||||
                Configuration = new InternalConfiguration(new List<ReRoute>(), null, null, null, null, null, null, null, null)
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
        private readonly Mock<IQoSOptionsCreator> _qosCreator;
 | 
			
		||||
        private readonly Mock<IHttpHandlerOptionsCreator> _hhoCreator;
 | 
			
		||||
        private readonly Mock<ILoadBalancerOptionsCreator> _lboCreator;
 | 
			
		||||
        private readonly Mock<IVersionCreator> _vCreator;
 | 
			
		||||
        private FileConfiguration _fileConfig;
 | 
			
		||||
        private List<ReRoute> _reRoutes;
 | 
			
		||||
        private ServiceProviderConfiguration _spc;
 | 
			
		||||
@@ -30,6 +31,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
 | 
			
		||||
        public ConfigurationCreatorTests()
 | 
			
		||||
        {
 | 
			
		||||
            _vCreator = new Mock<IVersionCreator>();
 | 
			
		||||
            _lboCreator = new Mock<ILoadBalancerOptionsCreator>();
 | 
			
		||||
            _hhoCreator = new Mock<IHttpHandlerOptionsCreator>();
 | 
			
		||||
            _qosCreator = new Mock<IQoSOptionsCreator>();
 | 
			
		||||
@@ -117,7 +119,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
        private void WhenICreate()
 | 
			
		||||
        {
 | 
			
		||||
            var serviceProvider = _serviceCollection.BuildServiceProvider();
 | 
			
		||||
            _creator = new ConfigurationCreator(_spcCreator.Object, _qosCreator.Object, _hhoCreator.Object, serviceProvider, _lboCreator.Object);
 | 
			
		||||
            _creator = new ConfigurationCreator(_spcCreator.Object, _qosCreator.Object, _hhoCreator.Object, serviceProvider, _lboCreator.Object, _vCreator.Object);
 | 
			
		||||
            _result = _creator.Create(_fileConfig, _reRoutes);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
    using Moq;
 | 
			
		||||
    using Ocelot.Configuration;
 | 
			
		||||
    using Ocelot.Configuration.Builder;
 | 
			
		||||
@@ -14,15 +15,18 @@
 | 
			
		||||
    {
 | 
			
		||||
        private readonly DynamicsCreator _creator;
 | 
			
		||||
        private readonly Mock<IRateLimitOptionsCreator> _rloCreator;
 | 
			
		||||
        private readonly Mock<IVersionCreator> _versionCreator;
 | 
			
		||||
        private List<ReRoute> _result;
 | 
			
		||||
        private FileConfiguration _fileConfig;
 | 
			
		||||
        private RateLimitOptions _rlo1;
 | 
			
		||||
        private RateLimitOptions _rlo2;
 | 
			
		||||
        private Version _version;
 | 
			
		||||
 | 
			
		||||
        public DynamicsCreatorTests()
 | 
			
		||||
        {
 | 
			
		||||
            _versionCreator = new Mock<IVersionCreator>();
 | 
			
		||||
            _rloCreator = new Mock<IRateLimitOptionsCreator>();
 | 
			
		||||
            _creator = new DynamicsCreator(_rloCreator.Object);
 | 
			
		||||
            _creator = new DynamicsCreator(_rloCreator.Object, _versionCreator.Object);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
@@ -50,7 +54,8 @@
 | 
			
		||||
                        RateLimitRule = new FileRateLimitRule
 | 
			
		||||
                        {
 | 
			
		||||
                            EnableRateLimiting = false
 | 
			
		||||
                        }
 | 
			
		||||
                        },
 | 
			
		||||
                        DownstreamHttpVersion = "1.1"
 | 
			
		||||
                    },
 | 
			
		||||
                    new FileDynamicReRoute
 | 
			
		||||
                    {
 | 
			
		||||
@@ -58,16 +63,19 @@
 | 
			
		||||
                        RateLimitRule = new FileRateLimitRule
 | 
			
		||||
                        {
 | 
			
		||||
                            EnableRateLimiting = true
 | 
			
		||||
                        }
 | 
			
		||||
                        },
 | 
			
		||||
                        DownstreamHttpVersion = "2.0"
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenThe(fileConfig))
 | 
			
		||||
                .And(_ => GivenTheRloCreatorReturns())
 | 
			
		||||
                .And(_ => GivenTheVersionCreatorReturns())
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
                .Then(_ => ThenTheReRoutesAreReturned())
 | 
			
		||||
                .And(_ => ThenTheRloCreatorIsCalledCorrectly())
 | 
			
		||||
                .And(_ => ThenTheVersionCreatorIsCalledCorrectly())
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -80,18 +88,32 @@
 | 
			
		||||
                _fileConfig.GlobalConfiguration), Times.Once);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheVersionCreatorIsCalledCorrectly()
 | 
			
		||||
        {
 | 
			
		||||
            _versionCreator.Verify(x => x.Create(_fileConfig.DynamicReRoutes[0].DownstreamHttpVersion), Times.Once);
 | 
			
		||||
            _versionCreator.Verify(x => x.Create(_fileConfig.DynamicReRoutes[1].DownstreamHttpVersion), Times.Once);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheReRoutesAreReturned()
 | 
			
		||||
        {
 | 
			
		||||
            _result.Count.ShouldBe(2);
 | 
			
		||||
            _result[0].DownstreamReRoute[0].EnableEndpointEndpointRateLimiting.ShouldBeFalse();
 | 
			
		||||
            _result[0].DownstreamReRoute[0].RateLimitOptions.ShouldBe(_rlo1);
 | 
			
		||||
            _result[0].DownstreamReRoute[0].DownstreamHttpVersion.ShouldBe(_version);
 | 
			
		||||
            _result[0].DownstreamReRoute[0].ServiceName.ShouldBe(_fileConfig.DynamicReRoutes[0].ServiceName);
 | 
			
		||||
 | 
			
		||||
            _result[1].DownstreamReRoute[0].EnableEndpointEndpointRateLimiting.ShouldBeTrue();
 | 
			
		||||
            _result[1].DownstreamReRoute[0].RateLimitOptions.ShouldBe(_rlo2);
 | 
			
		||||
            _result[1].DownstreamReRoute[0].DownstreamHttpVersion.ShouldBe(_version);
 | 
			
		||||
            _result[1].DownstreamReRoute[0].ServiceName.ShouldBe(_fileConfig.DynamicReRoutes[1].ServiceName);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenTheVersionCreatorReturns()
 | 
			
		||||
        {
 | 
			
		||||
            _version = new Version("1.1");
 | 
			
		||||
            _versionCreator.Setup(x => x.Create(It.IsAny<string>())).Returns(_version);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenTheRloCreatorReturns()
 | 
			
		||||
        {
 | 
			
		||||
            _rlo1 = new RateLimitOptionsBuilder().Build();
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,8 @@ using Xunit;
 | 
			
		||||
 | 
			
		||||
namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
 | 
			
		||||
    public class FileConfigurationSetterTests
 | 
			
		||||
    {
 | 
			
		||||
        private FileConfiguration _fileConfiguration;
 | 
			
		||||
@@ -38,7 +40,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
        {
 | 
			
		||||
            var fileConfig = new FileConfiguration();
 | 
			
		||||
            var serviceProviderConfig = new ServiceProviderConfigurationBuilder().Build();
 | 
			
		||||
            var config = new InternalConfiguration(new List<ReRoute>(), string.Empty, serviceProviderConfig, "asdf", new LoadBalancerOptionsBuilder().Build(), "", new QoSOptionsBuilder().Build(), new HttpHandlerOptionsBuilder().Build());
 | 
			
		||||
            var config = new InternalConfiguration(new List<ReRoute>(), string.Empty, serviceProviderConfig, "asdf", new LoadBalancerOptionsBuilder().Build(), "", new QoSOptionsBuilder().Build(), new HttpHandlerOptionsBuilder().Build(), new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(x => GivenTheFollowingConfiguration(fileConfig))
 | 
			
		||||
                .And(x => GivenTheRepoReturns(new OkResponse()))
 | 
			
		||||
 
 | 
			
		||||
@@ -87,7 +87,7 @@
 | 
			
		||||
            _reRoutes = new List<ReRoute> { new ReRouteBuilder().Build() };
 | 
			
		||||
            _aggregates = new List<ReRoute> { new ReRouteBuilder().Build() };
 | 
			
		||||
            _dynamics = new List<ReRoute> { new ReRouteBuilder().Build() };
 | 
			
		||||
            _internalConfig = new InternalConfiguration(null, "", null, "", null, "", null, null);
 | 
			
		||||
            _internalConfig = new InternalConfiguration(null, "", null, "", null, "", null, null, null);
 | 
			
		||||
 | 
			
		||||
            _reRoutesCreator.Setup(x => x.Create(It.IsAny<FileConfiguration>())).Returns(_reRoutes);
 | 
			
		||||
            _aggregatesCreator.Setup(x => x.Create(It.IsAny<FileConfiguration>(), It.IsAny<List<ReRoute>>())).Returns(_aggregates);
 | 
			
		||||
 
 | 
			
		||||
@@ -120,6 +120,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
            public string DownstreamScheme { get; }
 | 
			
		||||
            public QoSOptions QoSOptions { get; }
 | 
			
		||||
            public HttpHandlerOptions HttpHandlerOptions { get; }
 | 
			
		||||
            public Version DownstreamHttpVersion { get; }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
    using Moq;
 | 
			
		||||
    using Ocelot.Configuration;
 | 
			
		||||
    using Ocelot.Configuration.Builder;
 | 
			
		||||
@@ -44,7 +45,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_create_downstream_route()
 | 
			
		||||
        {
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration))
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
@@ -71,7 +72,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
 | 
			
		||||
            var reRoutes = new List<ReRoute> { reRoute };
 | 
			
		||||
 | 
			
		||||
            var configuration = new InternalConfiguration(reRoutes, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(reRoutes, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration))
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
@@ -83,7 +84,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_cache_downstream_route()
 | 
			
		||||
        {
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration, "/geoffisthebest/"))
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
@@ -96,7 +97,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_not_cache_downstream_route()
 | 
			
		||||
        {
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration, "/geoffistheworst/"))
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
@@ -110,7 +111,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        public void should_create_downstream_route_with_no_path()
 | 
			
		||||
        {
 | 
			
		||||
            var upstreamUrlPath = "/auth/";
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration, upstreamUrlPath))
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
@@ -122,7 +123,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        public void should_create_downstream_route_with_only_first_segment_no_traling_slash()
 | 
			
		||||
        {
 | 
			
		||||
            var upstreamUrlPath = "/auth";
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration, upstreamUrlPath))
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
@@ -134,7 +135,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        public void should_create_downstream_route_with_segments_no_traling_slash()
 | 
			
		||||
        {
 | 
			
		||||
            var upstreamUrlPath = "/auth/test";
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration, upstreamUrlPath))
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
@@ -146,7 +147,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        public void should_create_downstream_route_and_remove_query_string()
 | 
			
		||||
        {
 | 
			
		||||
            var upstreamUrlPath = "/auth/test?test=1&best=2";
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration, upstreamUrlPath))
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
@@ -158,7 +159,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        public void should_create_downstream_route_for_sticky_sessions()
 | 
			
		||||
        {
 | 
			
		||||
            var loadBalancerOptions = new LoadBalancerOptionsBuilder().WithType(nameof(CookieStickySessions)).WithKey("boom").WithExpiryInMs(1).Build();
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", loadBalancerOptions, "http", _qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", loadBalancerOptions, "http", _qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration))
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
@@ -174,7 +175,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                .WithTimeoutValue(1)
 | 
			
		||||
                .Build();
 | 
			
		||||
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration))
 | 
			
		||||
                .And(_ => GivenTheQosCreatorReturns(qoSOptions))
 | 
			
		||||
@@ -186,7 +187,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_create_downstream_route_with_handler_options()
 | 
			
		||||
        {
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, "doesnt matter", null, "doesnt matter", _loadBalancerOptions, "http", _qoSOptions, _handlerOptions, new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheConfiguration(configuration))
 | 
			
		||||
                .When(_ => WhenICreate())
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
    using Microsoft.AspNetCore.Http;
 | 
			
		||||
    using Moq;
 | 
			
		||||
    using Ocelot.Configuration;
 | 
			
		||||
@@ -48,7 +49,7 @@
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_call_scoped_data_repository_correctly()
 | 
			
		||||
        {
 | 
			
		||||
            var config = new InternalConfiguration(null, null, new ServiceProviderConfigurationBuilder().Build(), "", new LoadBalancerOptionsBuilder().Build(), "", new QoSOptionsBuilder().Build(), new HttpHandlerOptionsBuilder().Build());
 | 
			
		||||
            var config = new InternalConfiguration(null, null, new ServiceProviderConfigurationBuilder().Build(), "", new LoadBalancerOptionsBuilder().Build(), "", new QoSOptionsBuilder().Build(), new HttpHandlerOptionsBuilder().Build(), new Version("1.1"));
 | 
			
		||||
 | 
			
		||||
            var downstreamReRoute = new DownstreamReRouteBuilder()
 | 
			
		||||
                .WithDownstreamPathTemplate("any old string")
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,8 @@ using Xunit;
 | 
			
		||||
 | 
			
		||||
namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
 | 
			
		||||
    public class DownstreamRouteFinderTests
 | 
			
		||||
    {
 | 
			
		||||
        private readonly IDownstreamRouteProvider _downstreamRouteFinder;
 | 
			
		||||
@@ -739,7 +741,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        private void GivenTheConfigurationIs(List<ReRoute> reRoutesConfig, string adminPath, ServiceProviderConfiguration serviceProviderConfig)
 | 
			
		||||
        {
 | 
			
		||||
            _reRoutesConfig = reRoutesConfig;
 | 
			
		||||
            _config = new InternalConfiguration(_reRoutesConfig, adminPath, serviceProviderConfig, "", new LoadBalancerOptionsBuilder().Build(), "", new QoSOptionsBuilder().Build(), new HttpHandlerOptionsBuilder().Build());
 | 
			
		||||
            _config = new InternalConfiguration(_reRoutesConfig, adminPath, serviceProviderConfig, "", new LoadBalancerOptionsBuilder().Build(), "", new QoSOptionsBuilder().Build(), new HttpHandlerOptionsBuilder().Build(), new Version("1.1"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenThereIsAnUpstreamUrlPath(string upstreamUrlPath)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
    using Microsoft.Extensions.DependencyInjection;
 | 
			
		||||
    using Moq;
 | 
			
		||||
    using Ocelot.Configuration;
 | 
			
		||||
@@ -140,12 +141,12 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
 | 
			
		||||
        private void GivenTheReRoutes(List<ReRoute> reRoutes)
 | 
			
		||||
        {
 | 
			
		||||
            _config = new InternalConfiguration(reRoutes, "", null, "", new LoadBalancerOptionsBuilder().Build(), "", new QoSOptionsBuilder().Build(), new HttpHandlerOptionsBuilder().Build());
 | 
			
		||||
            _config = new InternalConfiguration(reRoutes, "", null, "", new LoadBalancerOptionsBuilder().Build(), "", new QoSOptionsBuilder().Build(), new HttpHandlerOptionsBuilder().Build(), new Version("1.1"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenTheReRoutes(List<ReRoute> reRoutes, ServiceProviderConfiguration config)
 | 
			
		||||
        {
 | 
			
		||||
            _config = new InternalConfiguration(reRoutes, "", config, "", new LoadBalancerOptionsBuilder().Build(), "", new QoSOptionsBuilder().Build(), new HttpHandlerOptionsBuilder().Build());
 | 
			
		||||
            _config = new InternalConfiguration(reRoutes, "", config, "", new LoadBalancerOptionsBuilder().Build(), "", new QoSOptionsBuilder().Build(), new HttpHandlerOptionsBuilder().Build(), new Version("1.1"));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -382,7 +382,7 @@
 | 
			
		||||
 | 
			
		||||
        private void GivenTheServiceProviderConfigIs(ServiceProviderConfiguration config)
 | 
			
		||||
        {
 | 
			
		||||
            var configuration = new InternalConfiguration(null, null, config, null, null, null, null, null);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, null, config, null, null, null, null, null, null);
 | 
			
		||||
            _downstreamContext.Configuration = configuration;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -52,7 +52,7 @@ namespace Ocelot.UnitTests.Errors
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void NoDownstreamException()
 | 
			
		||||
        {
 | 
			
		||||
            var config = new InternalConfiguration(null, null, null, null, null, null, null, null);
 | 
			
		||||
            var config = new InternalConfiguration(null, null, null, null, null, null, null, null, null);
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenAnExceptionWillNotBeThrownDownstream())
 | 
			
		||||
                .And(_ => GivenTheConfigurationIs(config))
 | 
			
		||||
@@ -65,7 +65,7 @@ namespace Ocelot.UnitTests.Errors
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void DownstreamException()
 | 
			
		||||
        {
 | 
			
		||||
            var config = new InternalConfiguration(null, null, null, null, null, null, null, null);
 | 
			
		||||
            var config = new InternalConfiguration(null, null, null, null, null, null, null, null, null);
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenAnExceptionWillBeThrownDownstream())
 | 
			
		||||
                .And(_ => GivenTheConfigurationIs(config))
 | 
			
		||||
@@ -77,7 +77,7 @@ namespace Ocelot.UnitTests.Errors
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void ShouldSetRequestId()
 | 
			
		||||
        {
 | 
			
		||||
            var config = new InternalConfiguration(null, null, null, "requestidkey", null, null, null, null);
 | 
			
		||||
            var config = new InternalConfiguration(null, null, null, "requestidkey", null, null, null, null, null);
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenAnExceptionWillNotBeThrownDownstream())
 | 
			
		||||
                .And(_ => GivenTheConfigurationIs(config))
 | 
			
		||||
@@ -90,7 +90,7 @@ namespace Ocelot.UnitTests.Errors
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void ShouldSetAspDotNetRequestId()
 | 
			
		||||
        {
 | 
			
		||||
            var config = new InternalConfiguration(null, null, null, null, null, null, null, null);
 | 
			
		||||
            var config = new InternalConfiguration(null, null, null, null, null, null, null, null, null);
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenAnExceptionWillNotBeThrownDownstream())
 | 
			
		||||
                .And(_ => GivenTheConfigurationIs(config))
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
        {
 | 
			
		||||
            var configRepo = new Mock<IInternalConfigurationRepository>();
 | 
			
		||||
            configRepo.Setup(x => x.Get())
 | 
			
		||||
                .Returns(new OkResponse<IInternalConfiguration>(new InternalConfiguration(null, null, null, null, null, null, null, null)));
 | 
			
		||||
                .Returns(new OkResponse<IInternalConfiguration>(new InternalConfiguration(null, null, null, null, null, null, null, null, null)));
 | 
			
		||||
            var services = new ServiceCollection();
 | 
			
		||||
            services.AddSingleton<IInternalConfigurationRepository>(configRepo.Object);
 | 
			
		||||
            var sp = services.BuildServiceProvider();
 | 
			
		||||
@@ -35,7 +35,7 @@
 | 
			
		||||
            var client = new Mock<IDiscoveryClient>();
 | 
			
		||||
            var configRepo = new Mock<IInternalConfigurationRepository>();
 | 
			
		||||
            configRepo.Setup(x => x.Get())
 | 
			
		||||
                .Returns(new OkResponse<IInternalConfiguration>(new InternalConfiguration(null, null, serviceProviderConfig, null, null, null, null, null)));
 | 
			
		||||
                .Returns(new OkResponse<IInternalConfiguration>(new InternalConfiguration(null, null, serviceProviderConfig, null, null, null, null, null, null)));
 | 
			
		||||
            var services = new ServiceCollection();
 | 
			
		||||
            services.AddSingleton<IInternalConfigurationRepository>(configRepo.Object);
 | 
			
		||||
            services.AddSingleton<IDiscoveryClient>(client.Object);
 | 
			
		||||
 
 | 
			
		||||
@@ -139,7 +139,7 @@ namespace Ocelot.UnitTests.LoadBalancer
 | 
			
		||||
        private void GivenTheConfigurationIs(ServiceProviderConfiguration config)
 | 
			
		||||
        {
 | 
			
		||||
            _config = config;
 | 
			
		||||
            var configuration = new InternalConfiguration(null, null, config, null, null, null, null, null);
 | 
			
		||||
            var configuration = new InternalConfiguration(null, null, config, null, null, null, null, null, null);
 | 
			
		||||
            _downstreamContext.Configuration = configuration;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user