From 9c23ffb2159a3f3ce30511e9e7cbca6603c835bc Mon Sep 17 00:00:00 2001 From: Kiran Challa Date: Mon, 9 Jul 2018 12:05:04 -0700 Subject: [PATCH] Added tests for verifying the effects of change made to empty string hashcode from netcoreapp2.0 to 2.1 --- .../Tree/TreeRouterTest.cs | 89 ++++++++++++++++++- 1 file changed, 88 insertions(+), 1 deletion(-) diff --git a/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouterTest.cs b/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouterTest.cs index 8538c10e06..66d15c5314 100644 --- a/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouterTest.cs +++ b/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouterTest.cs @@ -1399,7 +1399,6 @@ namespace Microsoft.AspNetCore.Routing.Tree Assert.Empty(pathData.DataTokens); } - [Fact] public void TreeRouter_GenerateLink_Match_WithParameters() { @@ -1965,6 +1964,94 @@ namespace Microsoft.AspNetCore.Routing.Tree Assert.DoesNotContain(nestedValues, kvp => kvp.Key == "category1"); } + [Fact] + public void TreeRouter_GenerateLink_MatchesNullRequiredValue_WithNullRequestValueString() + { + // Arrange + var builder = CreateBuilder(); + var entry = MapOutboundEntry( + builder, + "Help/Store", + requiredValues: new { area = (string)null, action = "Edit", controller = "Store" }); + var route = builder.Build(); + var context = CreateVirtualPathContext(new { area = (string)null, action = "Edit", controller = "Store" }); + + // Act + var pathData = route.GetVirtualPath(context); + + // Assert + Assert.NotNull(pathData); + Assert.Equal("/Help/Store", pathData.VirtualPath); + Assert.Same(route, pathData.Router); + Assert.Empty(pathData.DataTokens); + } + + [Fact] + public void TreeRouter_GenerateLink_MatchesNullRequiredValue_WithEmptyRequestValueString() + { + // Arrange + var builder = CreateBuilder(); + var entry = MapOutboundEntry( + builder, + "Help/Store", + requiredValues: new { area = (string)null, action = "Edit", controller = "Store" }); + var route = builder.Build(); + var context = CreateVirtualPathContext(new { area = "", action = "Edit", controller = "Store" }); + + // Act + var pathData = route.GetVirtualPath(context); + + // Assert + Assert.NotNull(pathData); + Assert.Equal("/Help/Store", pathData.VirtualPath); + Assert.Same(route, pathData.Router); + Assert.Empty(pathData.DataTokens); + } + + [Fact] + public void TreeRouter_GenerateLink_MatchesEmptyStringRequiredValue_WithNullRequestValueString() + { + // Arrange + var builder = CreateBuilder(); + var entry = MapOutboundEntry( + builder, + "Help/Store", + requiredValues: new { foo = "", action = "Edit", controller = "Store" }); + var route = builder.Build(); + var context = CreateVirtualPathContext(new { foo = (string)null, action = "Edit", controller = "Store" }); + + // Act + var pathData = route.GetVirtualPath(context); + + // Assert + Assert.NotNull(pathData); + Assert.Equal("/Help/Store", pathData.VirtualPath); + Assert.Same(route, pathData.Router); + Assert.Empty(pathData.DataTokens); + } + + [Fact] + public void TreeRouter_GenerateLink_MatchesEmptyStringRequiredValue_WithEmptyRequestValueString() + { + // Arrange + var builder = CreateBuilder(); + var entry = MapOutboundEntry( + builder, + "Help/Store", + requiredValues: new { foo = "", action = "Edit", controller = "Store" }); + var route = builder.Build(); + var context = CreateVirtualPathContext(new { foo = "", action = "Edit", controller = "Store" }); + + // Act + var pathData = route.GetVirtualPath(context); + + // Assert + Assert.NotNull(pathData); + Assert.Equal("/Help/Store", pathData.VirtualPath); + Assert.Same(route, pathData.Router); + Assert.Empty(pathData.DataTokens); + } + private static RouteContext CreateRouteContext(string requestPath) { var request = new Mock(MockBehavior.Strict);