mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-04-20 08:22:50 +08:00
Fix/1157 fix UpstreamHost validation (#1169)
* #1157: fix reRoute UpstreamHost validation * change port number
This commit is contained in:
parent
53d7f560a8
commit
99a15d8668
@ -135,7 +135,7 @@
|
|||||||
{
|
{
|
||||||
var matchingReRoutes = reRoutes
|
var matchingReRoutes = reRoutes
|
||||||
.Where(r => r.UpstreamPathTemplate == reRoute.UpstreamPathTemplate
|
.Where(r => r.UpstreamPathTemplate == reRoute.UpstreamPathTemplate
|
||||||
&& (r.UpstreamHost == reRoute.UpstreamHost || reRoute.UpstreamHost == null))
|
&& r.UpstreamHost == reRoute.UpstreamHost)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
if (matchingReRoutes.Count == 1)
|
if (matchingReRoutes.Count == 1)
|
||||||
|
@ -342,7 +342,7 @@ namespace Ocelot.IntegrationTests
|
|||||||
public void should_get_file_configuration_edit_and_post_updated_version_redirecting_reroute()
|
public void should_get_file_configuration_edit_and_post_updated_version_redirecting_reroute()
|
||||||
{
|
{
|
||||||
var fooPort = 47689;
|
var fooPort = 47689;
|
||||||
var barPort = 47690;
|
var barPort = 27654;
|
||||||
|
|
||||||
var initialConfiguration = new FileConfiguration
|
var initialConfiguration = new FileConfiguration
|
||||||
{
|
{
|
||||||
|
@ -1119,6 +1119,132 @@
|
|||||||
.BDDfy();
|
.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]
|
[Fact]
|
||||||
public void configuration_is_invalid_with_invalid_rate_limit_configuration()
|
public void configuration_is_invalid_with_invalid_rate_limit_configuration()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user