Update DfaMatcherBuilder to use the correct behavior (#25616)

This commit is contained in:
Javier Calvarro Nelson 2020-09-10 19:18:32 +02:00 committed by GitHub
parent 2228c98b88
commit 0637599517
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 7 deletions

View File

@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Routing.Matching
}
else
{
UseCorrectCatchAllBehavior = false; // default to bugged behavior
UseCorrectCatchAllBehavior = true; // default to correct behavior
}
var (nodeBuilderPolicies, endpointComparerPolicies, endpointSelectorPolicies) = ExtractPolicies(policies.OrderBy(p => p.Order));

View File

@ -543,7 +543,7 @@ namespace Microsoft.AspNetCore.Routing.Matching
public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_DefaultBehavior()
{
var builder = CreateDfaMatcherBuilder();
BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_LegacyBehavior_Core(builder);
BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_CorrectBehavior_Core(builder);
}
[Fact]
@ -636,7 +636,11 @@ namespace Microsoft.AspNetCore.Routing.Matching
// Arrange
var builder = CreateDfaMatcherBuilder();
builder.UseCorrectCatchAllBehavior = true;
BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_CorrectBehavior_Core(builder);
}
private void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_CorrectBehavior_Core(DfaMatcherBuilder builder)
{
var endpoint1 = CreateEndpoint("{a}/{b}", order: 0);
builder.AddEndpoint(endpoint1);
@ -688,10 +692,14 @@ namespace Microsoft.AspNetCore.Routing.Matching
[Fact]
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior()
{
// Arrange
var builder = CreateDfaMatcherBuilder();
builder.UseCorrectCatchAllBehavior = true;
BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior_Core(builder);
}
private void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior_Core(DfaMatcherBuilder builder)
{
// Arrange
var endpoint1 = CreateEndpoint("a/{*b}", order: 0);
builder.AddEndpoint(endpoint1);
@ -744,7 +752,7 @@ namespace Microsoft.AspNetCore.Routing.Matching
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_DefaultBehavior()
{
var builder = CreateDfaMatcherBuilder();
BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_Legacy30Behavior_Core(builder);
BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_CorrectBehavior_Core(builder);
}
// Regression test for https://github.com/dotnet/aspnetcore/issues/18677
@ -803,7 +811,7 @@ namespace Microsoft.AspNetCore.Routing.Matching
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_DefaultBehavior()
{
var builder = CreateDfaMatcherBuilder();
BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_Legacy30Behavior_Core(builder);
BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior_Core(builder);
}
// Regression test for https://github.com/dotnet/aspnetcore/issues/18677

View File

@ -60,8 +60,8 @@ namespace Microsoft.AspNetCore.Routing.Matching
//
[Theory]
[InlineData("/middleware", 1)]
[InlineData("/middleware/test", 0)]
[InlineData("/middleware/test1/test2", -1)]
[InlineData("/middleware/test", 1)]
[InlineData("/middleware/test1/test2", 1)]
[InlineData("/bill/boga", 0)]
public async Task Match_Regression_1867_DefaultBehavior(string path, int endpointIndex)
{