From 9db4273f18e93d442bdd40ea5a7b798ccff72bcf Mon Sep 17 00:00:00 2001 From: Marco Antonio Araujo Date: Fri, 22 Jun 2018 16:35:21 +0100 Subject: [PATCH] Fix catch all route on UpstreamTemplatePatternCreator regex to match everything (#407) (#411) --- .../Creator/UpstreamTemplatePatternCreator.cs | 4 ++-- .../UpstreamTemplatePatternCreatorTests.cs | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Ocelot/Configuration/Creator/UpstreamTemplatePatternCreator.cs b/src/Ocelot/Configuration/Creator/UpstreamTemplatePatternCreator.cs index dbf6a2d1..27328213 100644 --- a/src/Ocelot/Configuration/Creator/UpstreamTemplatePatternCreator.cs +++ b/src/Ocelot/Configuration/Creator/UpstreamTemplatePatternCreator.cs @@ -6,7 +6,7 @@ namespace Ocelot.Configuration.Creator { public class UpstreamTemplatePatternCreator : IUpstreamTemplatePatternCreator { - private const string RegExMatchEverything = "[0-9a-zA-Z].*"; + private const string RegExMatchOneOrMoreOfEverything = ".+"; private const string RegExMatchEndString = "$"; private const string RegExIgnoreCase = "(?i)"; private const string RegExForwardSlashOnly = "^/$"; @@ -37,7 +37,7 @@ namespace Ocelot.Configuration.Creator foreach (var placeholder in placeholders) { - upstreamTemplate = upstreamTemplate.Replace(placeholder, RegExMatchEverything); + upstreamTemplate = upstreamTemplate.Replace(placeholder, RegExMatchOneOrMoreOfEverything); } if (upstreamTemplate == "/") diff --git a/test/Ocelot.UnitTests/Configuration/UpstreamTemplatePatternCreatorTests.cs b/test/Ocelot.UnitTests/Configuration/UpstreamTemplatePatternCreatorTests.cs index c70bd440..36986932 100644 --- a/test/Ocelot.UnitTests/Configuration/UpstreamTemplatePatternCreatorTests.cs +++ b/test/Ocelot.UnitTests/Configuration/UpstreamTemplatePatternCreatorTests.cs @@ -1,4 +1,3 @@ -using System; using Ocelot.Configuration.Creator; using Ocelot.Configuration.File; using Ocelot.Values; @@ -30,7 +29,7 @@ namespace Ocelot.UnitTests.Configuration this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute)) .When(x => x.WhenICreateTheTemplatePattern()) - .Then(x => x.ThenTheFollowingIsReturned("^(?i)/orders/[0-9a-zA-Z].*$")) + .Then(x => x.ThenTheFollowingIsReturned("^(?i)/orders/.+$")) .And(x => ThenThePriorityIs(0)) .BDDfy(); } @@ -62,7 +61,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].*$")) + .Then(x => x.ThenTheFollowingIsReturned("^(?i)/PRODUCTS/.+$")) .And(x => ThenThePriorityIs(1)) .BDDfy(); } @@ -93,7 +92,7 @@ namespace Ocelot.UnitTests.Configuration }; this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute)) .When(x => x.WhenICreateTheTemplatePattern()) - .Then(x => x.ThenTheFollowingIsReturned("^/PRODUCTS/[0-9a-zA-Z].*$")) + .Then(x => x.ThenTheFollowingIsReturned("^/PRODUCTS/.+$")) .And(x => ThenThePriorityIs(1)) .BDDfy(); } @@ -109,7 +108,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].*$")) + .Then(x => x.ThenTheFollowingIsReturned("^/api/products/.+$")) .And(x => ThenThePriorityIs(1)) .BDDfy(); } @@ -125,7 +124,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].*$")) + .Then(x => x.ThenTheFollowingIsReturned("^/api/products/.+/variants/.+$")) .And(x => ThenThePriorityIs(1)) .BDDfy(); } @@ -141,7 +140,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].*(/|)$")) + .Then(x => x.ThenTheFollowingIsReturned("^/api/products/.+/variants/.+(/|)$")) .And(x => ThenThePriorityIs(1)) .BDDfy(); } @@ -187,7 +186,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].*(/|)$")) + .Then(x => x.ThenTheFollowingIsReturned("^/.+/products/variants/.+(/|)$")) .And(x => ThenThePriorityIs(1)) .BDDfy(); }