Fix/1157 fix UpstreamHost validation (#1169)

* #1157: fix reRoute UpstreamHost validation

* change port number
This commit is contained in:
jlukawska 2020-04-13 19:43:25 +02:00 committed by GitHub
parent 53d7f560a8
commit 99a15d8668
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 128 additions and 2 deletions

View File

@ -135,7 +135,7 @@
{
var matchingReRoutes = reRoutes
.Where(r => r.UpstreamPathTemplate == reRoute.UpstreamPathTemplate
&& (r.UpstreamHost == reRoute.UpstreamHost || reRoute.UpstreamHost == null))
&& r.UpstreamHost == reRoute.UpstreamHost)
.ToList();
if (matchingReRoutes.Count == 1)

View File

@ -342,7 +342,7 @@ namespace Ocelot.IntegrationTests
public void should_get_file_configuration_edit_and_post_updated_version_redirecting_reroute()
{
var fooPort = 47689;
var barPort = 47690;
var barPort = 27654;
var initialConfiguration = new FileConfiguration
{

View File

@ -1119,6 +1119,132 @@
.BDDfy();
}
[Fact]
public void configuration_is_not_valid_with_duplicate_reroutes_with_duplicated_upstreamhosts()
{
this.Given(x => x.GivenAConfiguration(new FileConfiguration
{
ReRoutes = new List<FileReRoute>
{
new FileReRoute
{
DownstreamPathTemplate = "/api/products/",
UpstreamPathTemplate = "/asdf/",
DownstreamHostAndPorts = new List<FileHostAndPort>
{
new FileHostAndPort
{
Host = "bbc.co.uk",
}
},
UpstreamHttpMethod = new List<string>(),
UpstreamHost = "upstreamhost"
},
new FileReRoute
{
DownstreamPathTemplate = "/www/test/",
UpstreamPathTemplate = "/asdf/",
DownstreamHostAndPorts = new List<FileHostAndPort>
{
new FileHostAndPort
{
Host = "bbc.co.uk",
}
},
UpstreamHttpMethod = new List<string>(),
UpstreamHost = "upstreamhost"
}
}
}))
.When(x => x.WhenIValidateTheConfiguration())
.Then(x => x.ThenTheResultIsNotValid())
.And(x => x.ThenTheErrorMessageAtPositionIs(0, "reRoute /asdf/ has duplicate"))
.BDDfy();
}
[Fact]
public void configuration_is_valid_with_duplicate_reroutes_but_different_upstreamhosts()
{
this.Given(x => x.GivenAConfiguration(new FileConfiguration
{
ReRoutes = new List<FileReRoute>
{
new FileReRoute
{
DownstreamPathTemplate = "/api/products/",
UpstreamPathTemplate = "/asdf/",
DownstreamHostAndPorts = new List<FileHostAndPort>
{
new FileHostAndPort
{
Host = "bbc.co.uk",
}
},
UpstreamHttpMethod = new List<string>(),
UpstreamHost = "upstreamhost111"
},
new FileReRoute
{
DownstreamPathTemplate = "/www/test/",
UpstreamPathTemplate = "/asdf/",
DownstreamHostAndPorts = new List<FileHostAndPort>
{
new FileHostAndPort
{
Host = "bbc.co.uk",
}
},
UpstreamHttpMethod = new List<string>(),
UpstreamHost = "upstreamhost222"
}
}
}))
.When(x => x.WhenIValidateTheConfiguration())
.Then(x => x.ThenTheResultIsValid())
.BDDfy();
}
[Fact]
public void configuration_is_valid_with_duplicate_reroutes_but_one_upstreamhost_is_not_set()
{
this.Given(x => x.GivenAConfiguration(new FileConfiguration
{
ReRoutes = new List<FileReRoute>
{
new FileReRoute
{
DownstreamPathTemplate = "/api/products/",
UpstreamPathTemplate = "/asdf/",
DownstreamHostAndPorts = new List<FileHostAndPort>
{
new FileHostAndPort
{
Host = "bbc.co.uk",
}
},
UpstreamHttpMethod = new List<string>(),
UpstreamHost = "upstreamhost"
},
new FileReRoute
{
DownstreamPathTemplate = "/www/test/",
UpstreamPathTemplate = "/asdf/",
DownstreamHostAndPorts = new List<FileHostAndPort>
{
new FileHostAndPort
{
Host = "bbc.co.uk",
}
},
UpstreamHttpMethod = new List<string>()
}
}
}))
.When(x => x.WhenIValidateTheConfiguration())
.Then(x => x.ThenTheResultIsValid())
.BDDfy();
}
[Fact]
public void configuration_is_invalid_with_invalid_rate_limit_configuration()
{