mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 21:10:49 +08:00 
			
		
		
		
	implemented simple priority in the routing
This commit is contained in:
		@@ -98,6 +98,43 @@ namespace Ocelot.AcceptanceTests
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_return_response_200_favouring_forward_slash()
 | 
			
		||||
        {
 | 
			
		||||
            var configuration = new FileConfiguration
 | 
			
		||||
            {
 | 
			
		||||
                ReRoutes = new List<FileReRoute>
 | 
			
		||||
                    {
 | 
			
		||||
                        new FileReRoute
 | 
			
		||||
                        {
 | 
			
		||||
                            DownstreamPathTemplate = "/{url}",
 | 
			
		||||
                            DownstreamScheme = "http",
 | 
			
		||||
                            DownstreamHost = "localhost",
 | 
			
		||||
                            DownstreamPort = 51880,
 | 
			
		||||
                            UpstreamPathTemplate = "/{url}",
 | 
			
		||||
                            UpstreamHttpMethod = new List<string> { "Get" },
 | 
			
		||||
                        },
 | 
			
		||||
                        new FileReRoute
 | 
			
		||||
                        {
 | 
			
		||||
                            DownstreamPathTemplate = "/",
 | 
			
		||||
                            DownstreamScheme = "http",
 | 
			
		||||
                            DownstreamHost = "localhost",
 | 
			
		||||
                            DownstreamPort = 51879,
 | 
			
		||||
                            UpstreamPathTemplate = "/",
 | 
			
		||||
                            UpstreamHttpMethod = new List<string> { "Get" },
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            this.Given(x => x.GivenThereIsAServiceRunningOn("http://localhost:51879/", "/", 200, "Hello from Laura"))
 | 
			
		||||
                .And(x => _steps.GivenThereIsAConfiguration(configuration))
 | 
			
		||||
                .And(x => _steps.GivenOcelotIsRunning())
 | 
			
		||||
                .When(x => _steps.WhenIGetUrlOnTheApiGateway("/"))
 | 
			
		||||
                .Then(x => _steps.ThenTheStatusCodeShouldBe(HttpStatusCode.OK))
 | 
			
		||||
                .And(x => _steps.ThenTheResponseBodyShouldBe("Hello from Laura"))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_return_response_200_favouring_forward_slash_route_because_it_is_first()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
    using Ocelot.DependencyInjection;
 | 
			
		||||
    using Ocelot.Errors;
 | 
			
		||||
    using Ocelot.UnitTests.TestData;
 | 
			
		||||
    using Ocelot.Values;
 | 
			
		||||
 | 
			
		||||
    public class FileConfigurationCreatorTests
 | 
			
		||||
    {
 | 
			
		||||
@@ -367,7 +368,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
                        .WithDownstreamPathTemplate("/products/{productId}")
 | 
			
		||||
                        .WithUpstreamPathTemplate("/api/products/{productId}")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern("(?i)/api/products/.*/$")
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("(?i)/api/products/.*/$", 1))
 | 
			
		||||
                        .Build()
 | 
			
		||||
                }))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
@@ -580,7 +581,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
                result.DownstreamPathTemplate.Value.ShouldBe(expected.DownstreamPathTemplate.Value);
 | 
			
		||||
                result.UpstreamHttpMethod.ShouldBe(expected.UpstreamHttpMethod);
 | 
			
		||||
                result.UpstreamPathTemplate.Value.ShouldBe(expected.UpstreamPathTemplate.Value);
 | 
			
		||||
                result.UpstreamTemplatePattern.ShouldBe(expected.UpstreamTemplatePattern);
 | 
			
		||||
                result.UpstreamTemplatePattern?.Template.ShouldBe(expected.UpstreamTemplatePattern?.Template);
 | 
			
		||||
                result.ClaimsToClaims.Count.ShouldBe(expected.ClaimsToClaims.Count);
 | 
			
		||||
                result.ClaimsToHeaders.Count.ShouldBe(expected.ClaimsToHeaders.Count);
 | 
			
		||||
                result.ClaimsToQueries.Count.ShouldBe(expected.ClaimsToQueries.Count);
 | 
			
		||||
@@ -623,7 +624,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
        {
 | 
			
		||||
            _upstreamTemplatePatternCreator
 | 
			
		||||
                .Setup(x => x.Create(It.IsAny<FileReRoute>()))
 | 
			
		||||
                .Returns(pattern);
 | 
			
		||||
                .Returns(new UpstreamPathTemplate(pattern, 1));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheRequestIdKeyCreatorIsCalledCorrectly()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,7 @@
 | 
			
		||||
using System;
 | 
			
		||||
using Ocelot.Configuration.Creator;
 | 
			
		||||
using Ocelot.Configuration.File;
 | 
			
		||||
using Ocelot.Values;
 | 
			
		||||
using Shouldly;
 | 
			
		||||
using TestStack.BDDfy;
 | 
			
		||||
using Xunit;
 | 
			
		||||
@@ -10,7 +12,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
    {
 | 
			
		||||
        private FileReRoute _fileReRoute;
 | 
			
		||||
        private UpstreamTemplatePatternCreator _creator;
 | 
			
		||||
        private string _result;
 | 
			
		||||
        private UpstreamPathTemplate _result;
 | 
			
		||||
 | 
			
		||||
        public UpstreamTemplatePatternCreatorTests()
 | 
			
		||||
        {
 | 
			
		||||
@@ -29,6 +31,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
 | 
			
		||||
                .When(x => x.WhenICreateTheTemplatePattern())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned("^(?i)/PRODUCTS/[0-9a-zA-Z].*$"))
 | 
			
		||||
                .And(x => ThenThePriorityIs(1))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -45,6 +48,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
 | 
			
		||||
                .When(x => x.WhenICreateTheTemplatePattern())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned("^(?i)/PRODUCTS(/|)$"))
 | 
			
		||||
                .And(x => ThenThePriorityIs(1))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -59,6 +63,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
 | 
			
		||||
                .When(x => x.WhenICreateTheTemplatePattern())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned("^/PRODUCTS/[0-9a-zA-Z].*$"))
 | 
			
		||||
                .And(x => ThenThePriorityIs(1))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -74,6 +79,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
 | 
			
		||||
                .When(x => x.WhenICreateTheTemplatePattern())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned("^/api/products/[0-9a-zA-Z].*$"))
 | 
			
		||||
                .And(x => ThenThePriorityIs(1))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -89,6 +95,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
 | 
			
		||||
                .When(x => x.WhenICreateTheTemplatePattern())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned("^/api/products/[0-9a-zA-Z].*/variants/[0-9a-zA-Z].*$"))
 | 
			
		||||
                .And(x => ThenThePriorityIs(1))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -104,6 +111,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
 | 
			
		||||
                .When(x => x.WhenICreateTheTemplatePattern())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned("^/api/products/[0-9a-zA-Z].*/variants/[0-9a-zA-Z].*(/|)$"))
 | 
			
		||||
                .And(x => ThenThePriorityIs(1))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -118,6 +126,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
 | 
			
		||||
                .When(x => x.WhenICreateTheTemplatePattern())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned("^/$"))
 | 
			
		||||
                .And(x => ThenThePriorityIs(1))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -132,6 +141,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
 | 
			
		||||
                .When(x => x.WhenICreateTheTemplatePattern())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned("^/.*"))
 | 
			
		||||
                .And(x => ThenThePriorityIs(0))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -147,6 +157,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
 | 
			
		||||
                .When(x => x.WhenICreateTheTemplatePattern())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned("^/[0-9a-zA-Z].*/products/variants/[0-9a-zA-Z].*(/|)$"))
 | 
			
		||||
                .And(x => ThenThePriorityIs(1))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -162,7 +173,12 @@ namespace Ocelot.UnitTests.Configuration
 | 
			
		||||
 | 
			
		||||
        private void ThenTheFollowingIsReturned(string expected)
 | 
			
		||||
        {
 | 
			
		||||
            _result.ShouldBe(expected);
 | 
			
		||||
            _result.Template.ShouldBe(expected);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenThePriorityIs(int v)
 | 
			
		||||
        {
 | 
			
		||||
            _result.Priority.ShouldBe(v);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -2,11 +2,13 @@
 | 
			
		||||
using Moq;
 | 
			
		||||
using Ocelot.Configuration;
 | 
			
		||||
using Ocelot.Configuration.Builder;
 | 
			
		||||
using Ocelot.Configuration.Creator;
 | 
			
		||||
using Ocelot.Configuration.Provider;
 | 
			
		||||
using Ocelot.DownstreamRouteFinder;
 | 
			
		||||
using Ocelot.DownstreamRouteFinder.Finder;
 | 
			
		||||
using Ocelot.DownstreamRouteFinder.UrlMatcher;
 | 
			
		||||
using Ocelot.Responses;
 | 
			
		||||
using Ocelot.Values;
 | 
			
		||||
using Shouldly;
 | 
			
		||||
using TestStack.BDDfy;
 | 
			
		||||
using Xunit;
 | 
			
		||||
@@ -32,6 +34,80 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
            _downstreamRouteFinder = new Ocelot.DownstreamRouteFinder.Finder.DownstreamRouteFinder(_mockMatcher.Object, _finder.Object);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_return_highest_priority_when_first()
 | 
			
		||||
        {
 | 
			
		||||
            var serviceProviderConfig = new ServiceProviderConfigurationBuilder().Build();
 | 
			
		||||
 | 
			
		||||
            this.Given(x => x.GivenThereIsAnUpstreamUrlPath("someUpstreamPath"))
 | 
			
		||||
                .And(x => x.GivenTheTemplateVariableAndNameFinderReturns(
 | 
			
		||||
                            new OkResponse<List<PlaceholderNameAndValue>>(new List<PlaceholderNameAndValue>())))
 | 
			
		||||
                .And(x => x.GivenTheConfigurationIs(new List<ReRoute>
 | 
			
		||||
                {
 | 
			
		||||
                    new ReRouteBuilder()
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Post" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("test", 1))
 | 
			
		||||
                        .Build(),
 | 
			
		||||
                    new ReRouteBuilder()
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Post" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("test", 0))
 | 
			
		||||
                        .Build()
 | 
			
		||||
                }, string.Empty, serviceProviderConfig))
 | 
			
		||||
                .And(x => x.GivenTheUrlMatcherReturns(new OkResponse<UrlMatch>(new UrlMatch(true))))
 | 
			
		||||
                .And(x => x.GivenTheUpstreamHttpMethodIs("Post"))
 | 
			
		||||
                .When(x => x.WhenICallTheFinder())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned(new DownstreamRoute(new List<PlaceholderNameAndValue>(),
 | 
			
		||||
                        new ReRouteBuilder()
 | 
			
		||||
                            .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                            .WithUpstreamTemplatePattern(new UpstreamPathTemplate("test", 1))
 | 
			
		||||
                            .WithUpstreamHttpMethod(new List<string> { "Post" })
 | 
			
		||||
                            .WithUpstreamTemplatePattern(new UpstreamPathTemplate("test", 1))
 | 
			
		||||
                            .Build()
 | 
			
		||||
                        )))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_return_highest_priority_when_lowest()
 | 
			
		||||
        {
 | 
			
		||||
            var serviceProviderConfig = new ServiceProviderConfigurationBuilder().Build();
 | 
			
		||||
 | 
			
		||||
            this.Given(x => x.GivenThereIsAnUpstreamUrlPath("someUpstreamPath"))
 | 
			
		||||
                .And(x => x.GivenTheTemplateVariableAndNameFinderReturns(
 | 
			
		||||
                            new OkResponse<List<PlaceholderNameAndValue>>(new List<PlaceholderNameAndValue>())))
 | 
			
		||||
                .And(x => x.GivenTheConfigurationIs(new List<ReRoute>
 | 
			
		||||
                {
 | 
			
		||||
                    new ReRouteBuilder()
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Post" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("test", 0))
 | 
			
		||||
                        .Build(),
 | 
			
		||||
                    new ReRouteBuilder()
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Post" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("test", 1))
 | 
			
		||||
                        .Build()
 | 
			
		||||
                }, string.Empty, serviceProviderConfig))
 | 
			
		||||
                .And(x => x.GivenTheUrlMatcherReturns(new OkResponse<UrlMatch>(new UrlMatch(true))))
 | 
			
		||||
                .And(x => x.GivenTheUpstreamHttpMethodIs("Post"))
 | 
			
		||||
                .When(x => x.WhenICallTheFinder())
 | 
			
		||||
                .Then(x => x.ThenTheFollowingIsReturned(new DownstreamRoute(new List<PlaceholderNameAndValue>(),
 | 
			
		||||
                        new ReRouteBuilder()
 | 
			
		||||
                            .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                            .WithUpstreamTemplatePattern(new UpstreamPathTemplate("test", 1))
 | 
			
		||||
                            .WithUpstreamHttpMethod(new List<string> { "Post" })
 | 
			
		||||
                            .Build()
 | 
			
		||||
                        )))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_return_route()
 | 
			
		||||
        {
 | 
			
		||||
@@ -47,7 +123,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("someUpstreamPath", 1))
 | 
			
		||||
                        .Build()
 | 
			
		||||
                }, string.Empty, serviceProviderConfig
 | 
			
		||||
                ))
 | 
			
		||||
@@ -60,6 +136,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                            new ReRouteBuilder()
 | 
			
		||||
                                .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                                .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                                .WithUpstreamTemplatePattern(new UpstreamPathTemplate("someUpstreamPath", 1))
 | 
			
		||||
                                .Build()
 | 
			
		||||
                )))
 | 
			
		||||
                .And(x => x.ThenTheUrlMatcherIsCalledCorrectly())
 | 
			
		||||
@@ -82,7 +159,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("someUpstreamPath", 1))
 | 
			
		||||
                        .Build()
 | 
			
		||||
                }, string.Empty, serviceProviderConfig
 | 
			
		||||
                ))
 | 
			
		||||
@@ -95,6 +172,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                            new ReRouteBuilder()
 | 
			
		||||
                                .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                                .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                                .WithUpstreamTemplatePattern(new UpstreamPathTemplate("someUpstreamPath", 1))
 | 
			
		||||
                                .Build()
 | 
			
		||||
                )))
 | 
			
		||||
                .And(x => x.ThenTheUrlMatcherIsCalledCorrectly("matchInUrlMatcher"))
 | 
			
		||||
@@ -117,7 +195,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("someUpstreamPath", 1))
 | 
			
		||||
                        .Build()
 | 
			
		||||
                }, string.Empty, serviceProviderConfig
 | 
			
		||||
                    ))
 | 
			
		||||
@@ -129,6 +207,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        new ReRouteBuilder()
 | 
			
		||||
                            .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                            .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                            .WithUpstreamTemplatePattern(new UpstreamPathTemplate("someUpstreamPath", 1))
 | 
			
		||||
                            .Build()
 | 
			
		||||
                        )))
 | 
			
		||||
                .And(x => x.ThenTheUrlMatcherIsNotCalled())
 | 
			
		||||
@@ -151,13 +230,13 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern("")
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("", 1))
 | 
			
		||||
                        .Build(),
 | 
			
		||||
                    new ReRouteBuilder()
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPathForAPost")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Post" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern("")
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("", 1))
 | 
			
		||||
                        .Build()
 | 
			
		||||
                }, string.Empty, serviceProviderConfig
 | 
			
		||||
                    ))
 | 
			
		||||
@@ -169,6 +248,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        new ReRouteBuilder()
 | 
			
		||||
                            .WithDownstreamPathTemplate("someDownstreamPathForAPost")
 | 
			
		||||
                            .WithUpstreamHttpMethod(new List<string> { "Post" })
 | 
			
		||||
                            .WithUpstreamTemplatePattern(new UpstreamPathTemplate("", 1))
 | 
			
		||||
                            .Build()
 | 
			
		||||
                        )))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
@@ -186,7 +266,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        .WithDownstreamPathTemplate("somPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("somePath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern("somePath")
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("somePath", 1))
 | 
			
		||||
                        .Build(),   
 | 
			
		||||
                     }, string.Empty, serviceProviderConfig
 | 
			
		||||
                 ))
 | 
			
		||||
@@ -215,7 +295,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Get", "Post" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern("")
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("", 1))
 | 
			
		||||
                        .Build()
 | 
			
		||||
                }, string.Empty, serviceProviderConfig
 | 
			
		||||
                    ))
 | 
			
		||||
@@ -227,6 +307,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        new ReRouteBuilder()
 | 
			
		||||
                            .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                            .WithUpstreamHttpMethod(new List<string> { "Post" })
 | 
			
		||||
                            .WithUpstreamTemplatePattern(new UpstreamPathTemplate("", 1))
 | 
			
		||||
                            .Build()
 | 
			
		||||
                        )))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
@@ -248,7 +329,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string>())
 | 
			
		||||
                        .WithUpstreamTemplatePattern("")
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("", 1))
 | 
			
		||||
                        .Build()
 | 
			
		||||
                }, string.Empty, serviceProviderConfig
 | 
			
		||||
                    ))
 | 
			
		||||
@@ -260,6 +341,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        new ReRouteBuilder()
 | 
			
		||||
                            .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                            .WithUpstreamHttpMethod(new List<string> { "Post" })
 | 
			
		||||
                            .WithUpstreamTemplatePattern(new UpstreamPathTemplate("", 1))
 | 
			
		||||
                            .Build()
 | 
			
		||||
                        )))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
@@ -281,7 +363,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
                        .WithDownstreamPathTemplate("someDownstreamPath")
 | 
			
		||||
                        .WithUpstreamPathTemplate("someUpstreamPath")
 | 
			
		||||
                        .WithUpstreamHttpMethod(new List<string> { "Get", "Patch", "Delete" })
 | 
			
		||||
                        .WithUpstreamTemplatePattern("")
 | 
			
		||||
                        .WithUpstreamTemplatePattern(new UpstreamPathTemplate("", 1))
 | 
			
		||||
                        .Build()
 | 
			
		||||
                }, string.Empty, serviceProviderConfig
 | 
			
		||||
                    ))
 | 
			
		||||
@@ -356,14 +438,12 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder
 | 
			
		||||
        private void ThenTheFollowingIsReturned(DownstreamRoute expected)
 | 
			
		||||
        {
 | 
			
		||||
            _result.Data.ReRoute.DownstreamPathTemplate.Value.ShouldBe(expected.ReRoute.DownstreamPathTemplate.Value);
 | 
			
		||||
            _result.Data.ReRoute.UpstreamTemplatePattern.Priority.ShouldBe(expected.ReRoute.UpstreamTemplatePattern.Priority);
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < _result.Data.TemplatePlaceholderNameAndValues.Count; i++)
 | 
			
		||||
            {
 | 
			
		||||
                _result.Data.TemplatePlaceholderNameAndValues[i].Name.ShouldBe(
 | 
			
		||||
                    expected.TemplatePlaceholderNameAndValues[i].Name);
 | 
			
		||||
 | 
			
		||||
                _result.Data.TemplatePlaceholderNameAndValues[i].Value.ShouldBe(
 | 
			
		||||
                    expected.TemplatePlaceholderNameAndValues[i].Value);
 | 
			
		||||
                _result.Data.TemplatePlaceholderNameAndValues[i].Name.ShouldBe(expected.TemplatePlaceholderNameAndValues[i].Name);
 | 
			
		||||
                _result.Data.TemplatePlaceholderNameAndValues[i].Value.ShouldBe(expected.TemplatePlaceholderNameAndValues[i].Value);
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            _result.IsError.ShouldBeFalse();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user