parent
226cfb1e0d
commit
739dc7d621
|
|
@ -2,7 +2,6 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using Microsoft.AspNet.Http;
|
||||
|
||||
namespace Microsoft.AspNet.Routing
|
||||
{
|
||||
|
|
@ -13,6 +12,7 @@ namespace Microsoft.AspNet.Routing
|
|||
public class VirtualPathData
|
||||
{
|
||||
private RouteValueDictionary _dataTokens;
|
||||
private string _virtualPath;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="VirtualPathData"/> class.
|
||||
|
|
@ -34,20 +34,6 @@ namespace Microsoft.AspNet.Routing
|
|||
IRouter router,
|
||||
string virtualPath,
|
||||
RouteValueDictionary dataTokens)
|
||||
: this(router, CreatePathString(virtualPath), dataTokens)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="VirtualPathData"/> class.
|
||||
/// </summary>
|
||||
/// <param name="router">The object that is used to generate the URL.</param>
|
||||
/// <param name="virtualPath">The generated URL.</param>
|
||||
/// <param name="dataTokens">The collection of custom values.</param>
|
||||
public VirtualPathData(
|
||||
IRouter router,
|
||||
PathString virtualPath,
|
||||
RouteValueDictionary dataTokens)
|
||||
{
|
||||
if (router == null)
|
||||
{
|
||||
|
|
@ -83,26 +69,31 @@ namespace Microsoft.AspNet.Routing
|
|||
/// <summary>
|
||||
/// Gets or sets the URL that was generated from the <see cref="Router"/>.
|
||||
/// </summary>
|
||||
public PathString VirtualPath { get; set; }
|
||||
|
||||
private static PathString CreatePathString(string path)
|
||||
public string VirtualPath
|
||||
{
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
get
|
||||
{
|
||||
PathString pathString;
|
||||
if (path.Length > 0 && !path.StartsWith("/", StringComparison.Ordinal))
|
||||
{
|
||||
pathString = new PathString("/" + path);
|
||||
}
|
||||
else
|
||||
{
|
||||
pathString = new PathString(path);
|
||||
}
|
||||
return _virtualPath;
|
||||
}
|
||||
set
|
||||
{
|
||||
_virtualPath = NormalizePath(value);
|
||||
}
|
||||
}
|
||||
|
||||
return pathString;
|
||||
private static string NormalizePath(string path)
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return PathString.Empty;
|
||||
if (!path.StartsWith("/", StringComparison.Ordinal))
|
||||
{
|
||||
return "/" + path;
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -188,6 +188,12 @@ namespace Microsoft.AspNet.Routing.Internal
|
|||
public override string ToString()
|
||||
{
|
||||
// We can ignore any currently buffered segments - they are are guaranteed to be 'defaults'.
|
||||
if (_uri.Length > 0 && _uri[0] != '/')
|
||||
{
|
||||
// Normalize generated paths so that they always contain a leading slash.
|
||||
_uri.Insert(0, '/');
|
||||
}
|
||||
|
||||
return _uri.ToString();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ namespace Microsoft.AspNet.Routing
|
|||
return pathData;
|
||||
}
|
||||
|
||||
var url = pathData.VirtualPath.Value;
|
||||
var url = pathData.VirtualPath;
|
||||
|
||||
if (!string.IsNullOrEmpty(url) && (_options.LowercaseUrls || _options.AppendTrailingSlash))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Microsoft.AspNet.Http;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
|
|
@ -13,8 +12,8 @@ namespace Microsoft.AspNet.Routing
|
|||
public void Constructor_CreatesEmptyDataTokensIfNull()
|
||||
{
|
||||
// Arrange
|
||||
var router = new Mock<IRouter>().Object;
|
||||
var path = new PathString("/virtual path");
|
||||
var router = Mock.Of<IRouter>();
|
||||
var path = "/virtual path";
|
||||
|
||||
// Act
|
||||
var pathData = new VirtualPathData(router, path, null);
|
||||
|
|
@ -30,8 +29,8 @@ namespace Microsoft.AspNet.Routing
|
|||
public void Constructor_CopiesDataTokens()
|
||||
{
|
||||
// Arrange
|
||||
var router = new Mock<IRouter>().Object;
|
||||
var path = new PathString("/virtual path");
|
||||
var router = Mock.Of<IRouter>();
|
||||
var path = "/virtual path";
|
||||
var dataTokens = new RouteValueDictionary();
|
||||
dataTokens["TestKey"] = "TestValue";
|
||||
|
||||
|
|
@ -51,14 +50,14 @@ namespace Microsoft.AspNet.Routing
|
|||
public void VirtualPath_ReturnsEmptyStringIfNull()
|
||||
{
|
||||
// Arrange
|
||||
var router = new Mock<IRouter>().Object;
|
||||
var router = Mock.Of<IRouter>();
|
||||
|
||||
// Act
|
||||
var pathData = new VirtualPathData(router, virtualPath: null);
|
||||
|
||||
// Assert
|
||||
Assert.Same(router, pathData.Router);
|
||||
Assert.Equal(new PathString(string.Empty), pathData.VirtualPath);
|
||||
Assert.Empty(pathData.VirtualPath);
|
||||
Assert.NotNull(pathData.DataTokens);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Encodings.Web;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNet.Http;
|
||||
using Microsoft.AspNet.Http.Internal;
|
||||
|
|
@ -56,7 +55,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString(expectedUrl), pathData.VirtualPath);
|
||||
Assert.Equal(expectedUrl, pathData.VirtualPath);
|
||||
Assert.Same(target.Object, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -84,7 +83,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString(lowercaseUrl), pathData.VirtualPath);
|
||||
Assert.Equal(lowercaseUrl, pathData.VirtualPath);
|
||||
Assert.Same(target.Object, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -94,7 +93,7 @@ namespace Microsoft.AspNet.Routing
|
|||
public void GetVirtualPath_ReturnsDataTokens(RouteValueDictionary dataTokens, string routerName)
|
||||
{
|
||||
// Arrange
|
||||
var virtualPath = new PathString("/TestVirtualPath");
|
||||
var virtualPath = "/TestVirtualPath";
|
||||
|
||||
var pathContextValues = new RouteValueDictionary { { "controller", virtualPath } };
|
||||
|
||||
|
|
@ -217,7 +216,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString(expectedUrl), pathData.VirtualPath);
|
||||
Assert.Equal(expectedUrl, pathData.VirtualPath);
|
||||
var namedRouter = Assert.IsAssignableFrom<INamedRouter>(pathData.Router);
|
||||
Assert.Equal(virtualPathContext.RouteName, namedRouter.Name);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
|
@ -251,7 +250,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/route1"), pathData.VirtualPath);
|
||||
Assert.Equal("/route1", pathData.VirtualPath);
|
||||
var namedRouter = Assert.IsAssignableFrom<INamedRouter>(pathData.Router);
|
||||
Assert.Equal("Route1", namedRouter.Name);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
|
@ -359,7 +358,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = routeCollection.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString(expectedUrl), pathData.VirtualPath);
|
||||
Assert.Equal(expectedUrl, pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -583,7 +582,7 @@ namespace Microsoft.AspNet.Routing
|
|||
}
|
||||
|
||||
var request = new Mock<HttpRequest>(MockBehavior.Strict);
|
||||
request.SetupGet(r => r.Path).Returns(new PathString(requestPath));
|
||||
request.SetupGet(r => r.Path).Returns(requestPath);
|
||||
|
||||
var optionsAccessor = new Mock<IOptions<RouteOptions>>(MockBehavior.Strict);
|
||||
optionsAccessor.SetupGet(o => o.Value).Returns(options);
|
||||
|
|
|
|||
|
|
@ -374,8 +374,6 @@ namespace Microsoft.AspNet.Routing
|
|||
Assert.Null(context.Handler);
|
||||
}
|
||||
|
||||
#region Route Matching
|
||||
|
||||
// PathString in HttpAbstractions guarantees a leading slash - so no value in testing other cases.
|
||||
[Fact]
|
||||
public async Task Match_Success_LeadingSlash()
|
||||
|
|
@ -587,7 +585,7 @@ namespace Microsoft.AspNet.Routing
|
|||
}
|
||||
|
||||
var request = new Mock<HttpRequest>(MockBehavior.Strict);
|
||||
request.SetupGet(r => r.Path).Returns(new PathString(requestPath));
|
||||
request.SetupGet(r => r.Path).Returns(requestPath);
|
||||
|
||||
var context = new Mock<HttpContext>(MockBehavior.Strict);
|
||||
context.Setup(m => m.RequestServices.GetService(typeof(ILoggerFactory)))
|
||||
|
|
@ -596,9 +594,6 @@ namespace Microsoft.AspNet.Routing
|
|||
|
||||
return new RouteContext(context.Object);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Route Binding
|
||||
|
||||
[Fact]
|
||||
public void GetVirtualPath_Success()
|
||||
|
|
@ -611,7 +606,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -630,6 +625,24 @@ namespace Microsoft.AspNet.Routing
|
|||
Assert.Null(path);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetVirtualPath_EncodesValues()
|
||||
{
|
||||
// Arrange
|
||||
var route = CreateRoute("{controller}/{action}");
|
||||
var context = CreateVirtualPathContext(
|
||||
new { name = "name with %special #characters" },
|
||||
new { controller = "Home", action = "Index" });
|
||||
|
||||
// Act
|
||||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("/Home/Index?name=name%20with%20%25special%20%23characters", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetVirtualPath_ForListOfStrings()
|
||||
{
|
||||
|
|
@ -643,7 +656,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index?color=red&color=green&color=blue"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index?color=red&color=green&color=blue", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -661,7 +674,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index?items=10&items=20&items=30"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index?items=10&items=20&items=30", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -679,7 +692,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -697,7 +710,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index?page=1&color=red&color=green&color=blue&message=textfortest"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index?page=1&color=red&color=green&color=blue&message=textfortest", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -708,7 +721,7 @@ namespace Microsoft.AspNet.Routing
|
|||
RouteValueDictionary dataTokens)
|
||||
{
|
||||
// Arrange
|
||||
var path = new PathString("/TestPath");
|
||||
var path = "/TestPath";
|
||||
|
||||
var target = new Mock<IRouter>(MockBehavior.Strict);
|
||||
target
|
||||
|
|
@ -752,7 +765,7 @@ namespace Microsoft.AspNet.Routing
|
|||
RouteValueDictionary dataTokens)
|
||||
{
|
||||
// Arrange
|
||||
var path = new PathString("/TestPath");
|
||||
var path = "/TestPath";
|
||||
|
||||
var target = new Mock<IRouter>(MockBehavior.Strict);
|
||||
target
|
||||
|
|
@ -796,7 +809,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -812,7 +825,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -853,7 +866,7 @@ namespace Microsoft.AspNet.Routing
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/hello/1234"), pathData.VirtualPath);
|
||||
Assert.Equal("/hello/1234", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -894,7 +907,7 @@ namespace Microsoft.AspNet.Routing
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/hello/1234"), pathData.VirtualPath);
|
||||
Assert.Equal("/hello/1234", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -928,7 +941,7 @@ namespace Microsoft.AspNet.Routing
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/hello/1234"), pathData.VirtualPath);
|
||||
Assert.Equal("/hello/1234", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -959,7 +972,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/slug/Home/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/slug/Home/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -990,7 +1003,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/slug/Home/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/slug/Home/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1020,7 +1033,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/slug/Shopping"), pathData.VirtualPath);
|
||||
Assert.Equal("/slug/Shopping", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1051,7 +1064,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/slug/Home/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/slug/Home/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1070,7 +1083,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/4"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/4", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1102,7 +1115,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/98"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/98", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1119,7 +1132,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1151,7 +1164,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/14"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/14", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1174,7 +1187,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/products"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/products", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1196,7 +1209,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/products.xml"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/products.xml", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1218,7 +1231,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/products"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/products", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1240,7 +1253,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/products.xml"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/products.xml", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1262,7 +1275,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/products"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/products", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1284,7 +1297,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/products?format=json"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/products?format=json", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1306,7 +1319,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/.products"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/.products", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1328,7 +1341,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index/"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index/", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1350,7 +1363,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
|
||||
Assert.Equal("/Home/Index", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1386,10 +1399,6 @@ namespace Microsoft.AspNet.Routing
|
|||
return new VirtualPathContext(null, null, null, routeName);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Route Registration
|
||||
|
||||
public static IEnumerable<object[]> DataTokens
|
||||
{
|
||||
get
|
||||
|
|
@ -1554,8 +1563,6 @@ namespace Microsoft.AspNet.Routing
|
|||
Assert.Equal("RouteName", name);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// DataTokens test data for TemplateRoute.GetVirtualPath
|
||||
public static IEnumerable<object[]> DataTokensTestData
|
||||
{
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
"Test/{val1}/{val2}",
|
||||
new RouteValueDictionary(new {val1 = "", val2 = ""}),
|
||||
new RouteValueDictionary(new {val1 = "a"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[a]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[a]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}/{val3}",
|
||||
|
|
@ -43,67 +43,67 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
"Test/{val1}/{val2}",
|
||||
new RouteValueDictionary(new {val1 = "", val2 = ""}),
|
||||
new RouteValueDictionary(new {val1 = "a", val2 = "b"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}/{val3}",
|
||||
new RouteValueDictionary(new {val1 = "", val2 = "", val3 = ""}),
|
||||
new RouteValueDictionary(new {val1 = "a", val2 = "b", val3 = "c"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]/UrlEncode[[c]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]/UrlEncode[[c]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}/{val3}",
|
||||
new RouteValueDictionary(new {val1 = "", val2 = "", val3 = ""}),
|
||||
new RouteValueDictionary(new {val1 = "a", val2 = "b"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}/{val3}",
|
||||
new RouteValueDictionary(new {val1 = "", val2 = "", val3 = ""}),
|
||||
new RouteValueDictionary(new {val1 = "a"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[a]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[a]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}",
|
||||
new RouteValueDictionary(new {val1 = "42", val2 = "", val3 = ""}),
|
||||
new RouteValueDictionary(),
|
||||
"UrlEncode[[Test]]"
|
||||
"/UrlEncode[[Test]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}/{val3}",
|
||||
new RouteValueDictionary(new {val1 = "42", val2 = (string)null, val3 = (string)null}),
|
||||
new RouteValueDictionary(),
|
||||
"UrlEncode[[Test]]"
|
||||
"/UrlEncode[[Test]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}/{val3}/{val4}",
|
||||
new RouteValueDictionary(new {val1 = "21", val2 = "", val3 = "", val4 = ""}),
|
||||
new RouteValueDictionary(new {val1 = "42", val2 = "11", val3 = "", val4 = ""}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}/{val3}",
|
||||
new RouteValueDictionary(new {val1 = "21", val2 = "", val3 = ""}),
|
||||
new RouteValueDictionary(new {val1 = "42"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[42]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[42]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}/{val3}/{val4}",
|
||||
new RouteValueDictionary(new {val1 = "21", val2 = "", val3 = "", val4 = ""}),
|
||||
new RouteValueDictionary(new {val1 = "42", val2 = "11"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}/{val3}",
|
||||
new RouteValueDictionary(new {val1 = "21", val2 = (string)null, val3 = (string)null}),
|
||||
new RouteValueDictionary(new {val1 = "42"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[42]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[42]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}/{val3}/{val4}",
|
||||
new RouteValueDictionary(new {val1 = "21", val2 = (string)null, val3 = (string)null, val4 = (string)null}),
|
||||
new RouteValueDictionary(new {val1 = "42", val2 = "11"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
|
||||
},
|
||||
};
|
||||
|
||||
|
|
@ -157,7 +157,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
null,
|
||||
new RouteValueDictionary(new { lang = "en", region = "US" }),
|
||||
new RouteValueDictionary(new { lang = "xx", region = "yy" }),
|
||||
"UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]");
|
||||
"/UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -168,7 +168,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
null,
|
||||
new RouteValueDictionary(new { lang = "en", region = "US" }),
|
||||
new RouteValueDictionary(new { lang = "xx", region = "yy" }),
|
||||
"UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]UrlEncode[[a]]");
|
||||
"/UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]UrlEncode[[a]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -179,7 +179,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
null,
|
||||
new RouteValueDictionary(new { lang = "en", region = "US" }),
|
||||
new RouteValueDictionary(new { lang = "xx", region = "yy" }),
|
||||
"UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]");
|
||||
"/UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]");
|
||||
}
|
||||
|
||||
public static TheoryData OptionalParamValues =>
|
||||
|
|
@ -193,42 +193,42 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2"}),
|
||||
new RouteValueDictionary(new {val3 = "someval3"}),
|
||||
new RouteValueDictionary(new {val3 = "someval3"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}.{val3?}",
|
||||
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2"}),
|
||||
new RouteValueDictionary(new {val3 = "someval3a"}),
|
||||
new RouteValueDictionary(new {val3 = "someval3v"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3v]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3v]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}.{val3?}",
|
||||
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2"}),
|
||||
new RouteValueDictionary(new {val3 = "someval3a"}),
|
||||
new RouteValueDictionary(),
|
||||
"UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3a]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3a]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}.{val3?}",
|
||||
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2"}),
|
||||
new RouteValueDictionary(),
|
||||
new RouteValueDictionary(new {val3 = "someval3v"}),
|
||||
"UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3v]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3v]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}/{val2}.{val3?}",
|
||||
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2"}),
|
||||
new RouteValueDictionary(),
|
||||
new RouteValueDictionary(),
|
||||
"UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}.{val2}.{val3}.{val4?}",
|
||||
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2" }),
|
||||
new RouteValueDictionary(),
|
||||
new RouteValueDictionary(new {val4 = "someval4", val3 = "someval3" }),
|
||||
"UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]UrlEncode[[.]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]UrlEncode[[.]]"
|
||||
+ "UrlEncode[[someval3]]UrlEncode[[.]]UrlEncode[[someval4]]"
|
||||
},
|
||||
{
|
||||
|
|
@ -236,7 +236,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2" }),
|
||||
new RouteValueDictionary(),
|
||||
new RouteValueDictionary(new {val3 = "someval3" }),
|
||||
"UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]UrlEncode[[.]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]UrlEncode[[.]]"
|
||||
+ "UrlEncode[[someval3]]"
|
||||
},
|
||||
{
|
||||
|
|
@ -244,14 +244,15 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { }),
|
||||
new RouteValueDictionary(),
|
||||
new RouteValueDictionary(new {val2 = "someval2" }),
|
||||
"UrlEncode[[Test]]/UrlEncode[[.]]UrlEncode[[someval2]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[.]]UrlEncode[[someval2]]"
|
||||
},
|
||||
{
|
||||
"Test/{val1}.{val2}",
|
||||
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2" }),
|
||||
new RouteValueDictionary(),
|
||||
new RouteValueDictionary(new {val3 = "someval3" }),
|
||||
"UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]?UrlEncode[[val3]]=UrlEncode[[someval3]]"
|
||||
"/UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]?" +
|
||||
"UrlEncode[[val3]]=UrlEncode[[someval3]]"
|
||||
},
|
||||
};
|
||||
|
||||
|
|
@ -306,7 +307,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
null,
|
||||
new RouteValueDictionary(new { lang = "en", region = "US" }),
|
||||
new RouteValueDictionary(new { lang = "xx", region = "yy" }),
|
||||
"UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]UrlEncode[[a]]");
|
||||
"/UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]UrlEncode[[a]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -339,7 +340,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
null,
|
||||
new RouteValueDictionary(new { lang = "en" }),
|
||||
new RouteValueDictionary(new { lang = "xx" }),
|
||||
"UrlEncode[[language]]/UrlEncode[[xx]]");
|
||||
"/UrlEncode[[language]]/UrlEncode[[xx]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -350,7 +351,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
null,
|
||||
new RouteValueDictionary(new { lang = "en" }),
|
||||
new RouteValueDictionary(new { lang = "xx" }),
|
||||
"UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]");
|
||||
"/UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -361,7 +362,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
null,
|
||||
new RouteValueDictionary(new { lang = "en" }),
|
||||
new RouteValueDictionary(new { lang = "xx" }),
|
||||
"UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]");
|
||||
"/UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -372,7 +373,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
null,
|
||||
new RouteValueDictionary(new { lang = "en" }),
|
||||
new RouteValueDictionary(new { lang = "xx" }),
|
||||
"UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[a]]");
|
||||
"/UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[a]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -383,7 +384,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { action = "Index", id = (string)null }),
|
||||
new RouteValueDictionary(new { controller = "home", action = "list", id = (string)null }),
|
||||
new RouteValueDictionary(new { controller = "products" }),
|
||||
"UrlEncode[[products]]UrlEncode[[.mvc]]");
|
||||
"/UrlEncode[[products]]UrlEncode[[.mvc]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -394,7 +395,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { lang = "xx", region = "yy" }),
|
||||
new RouteValueDictionary(new { lang = "en", region = "US" }),
|
||||
new RouteValueDictionary(new { lang = "zz" }),
|
||||
"UrlEncode[[language]]/UrlEncode[[zz]]UrlEncode[[-]]UrlEncode[[yy]]");
|
||||
"/UrlEncode[[language]]/UrlEncode[[zz]]UrlEncode[[-]]UrlEncode[[yy]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -406,7 +407,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { id = "defaultid" }),
|
||||
new RouteValueDictionary(new { controller = "home", action = "oldaction" }),
|
||||
new RouteValueDictionary(new { action = "newaction" }),
|
||||
"UrlEncode[[home]]/UrlEncode[[newaction]]");
|
||||
"/UrlEncode[[home]]/UrlEncode[[newaction]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -439,7 +440,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
null,
|
||||
new RouteValueDictionary(new { }),
|
||||
new RouteValueDictionary(new { controller = "home" }),
|
||||
"UrlEncode[[foo]]/UrlEncode[[home]]");
|
||||
"/UrlEncode[[foo]]/UrlEncode[[home]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -451,7 +452,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { id = (string)null }),
|
||||
new RouteValueDictionary(new { controller = "home", action = "oldaction", id = (string)null }),
|
||||
new RouteValueDictionary(new { action = "newaction" }),
|
||||
"UrlEncode[[home]]/UrlEncode[[newaction]]");
|
||||
"/UrlEncode[[home]]/UrlEncode[[newaction]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -462,7 +463,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { language = "en", locale = "US" }),
|
||||
new RouteValueDictionary(),
|
||||
new RouteValueDictionary(new { controller = "Orders" }),
|
||||
"UrlEncode[[Orders]]/UrlEncode[[en]]UrlEncode[[-]]UrlEncode[[US]]");
|
||||
"/UrlEncode[[Orders]]/UrlEncode[[en]]UrlEncode[[-]]UrlEncode[[US]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -473,7 +474,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { action = "Index", id = "" }),
|
||||
new RouteValueDictionary(new { controller = "Home", action = "Index", id = "" }),
|
||||
new RouteValueDictionary(new { controller = "Home", action = "TestAction", id = "1", format = (string)null }),
|
||||
"UrlEncode[[Home]]UrlEncode[[.mvc]]/UrlEncode[[TestAction]]/UrlEncode[[1]]");
|
||||
"/UrlEncode[[Home]]UrlEncode[[.mvc]]/UrlEncode[[TestAction]]/UrlEncode[[1]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -506,7 +507,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new { p2 = "d2", p3 = "d3" },
|
||||
new { p1 = "v1", },
|
||||
new { p2 = "", p3 = "" },
|
||||
"UrlEncode[[v1]]");
|
||||
"/UrlEncode[[v1]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -517,7 +518,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new { action = "Index", id = (string)null },
|
||||
new { controller = "orig", action = "init", id = "123" },
|
||||
new { action = "new", },
|
||||
"UrlEncode[[orig]]/UrlEncode[[new]]");
|
||||
"/UrlEncode[[orig]]/UrlEncode[[new]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -528,7 +529,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new { year = 1995, occasion = "Christmas", action = "Play", SafeParam = "SafeParamValue" },
|
||||
new { controller = "UrlRouting", action = "Play", category = "Photos", year = "2008", occasion = "Easter", SafeParam = "SafeParamValue" },
|
||||
new { year = (string)null, occasion = "Hola" },
|
||||
"UrlEncode[[UrlGeneration1]]/UrlEncode[[UrlRouting]]UrlEncode[[.mvc]]/UrlEncode[[Play]]/"
|
||||
"/UrlEncode[[UrlGeneration1]]/UrlEncode[[UrlRouting]]UrlEncode[[.mvc]]/UrlEncode[[Play]]/"
|
||||
+ "UrlEncode[[Photos]]/UrlEncode[[1995]]/UrlEncode[[Hola]]");
|
||||
}
|
||||
|
||||
|
|
@ -552,7 +553,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { year = 1995, occasion = "Christmas", action = "Play", SafeParam = "SafeParamValue" }),
|
||||
ambientValues,
|
||||
values,
|
||||
"UrlEncode[[UrlGeneration1]]/UrlEncode[[UrlRouting]]UrlEncode[[.mvc]]/"
|
||||
"/UrlEncode[[UrlGeneration1]]/UrlEncode[[UrlRouting]]UrlEncode[[.mvc]]/"
|
||||
+ "UrlEncode[[Play]]/UrlEncode[[Photos]]/UrlEncode[[1995]]/UrlEncode[[Hola]]");
|
||||
}
|
||||
|
||||
|
|
@ -575,7 +576,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { action = "Default" }),
|
||||
ambientValues,
|
||||
values,
|
||||
"UrlEncode[[subtest]]UrlEncode[[.mvc]]/UrlEncode[[Default]]/UrlEncode[[b]]");
|
||||
"/UrlEncode[[subtest]]UrlEncode[[.mvc]]/UrlEncode[[Default]]/UrlEncode[[b]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -593,7 +594,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { controller = "Home" }),
|
||||
new RouteValueDictionary(new { controller = "home", action = "Index", id = (string)null }),
|
||||
values,
|
||||
"%23;%3F%3A@%26%3D%2B$,.mvc/showcategory/123?so%3Frt=de%3Fsc&maxPrice=100",
|
||||
"/%23;%3F%3A@%26%3D%2B$,.mvc/showcategory/123?so%3Frt=de%3Fsc&maxPrice=100",
|
||||
UrlEncoder.Default);
|
||||
}
|
||||
|
||||
|
|
@ -608,7 +609,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { controller = "Home" }),
|
||||
new RouteValueDictionary(new { controller = "home", action = "Index", id = (string)null }),
|
||||
values,
|
||||
"UrlEncode[[products]]UrlEncode[[.mvc]]/UrlEncode[[showcategory]]/UrlEncode[[123]]" +
|
||||
"/UrlEncode[[products]]UrlEncode[[.mvc]]/UrlEncode[[showcategory]]/UrlEncode[[123]]" +
|
||||
"?UrlEncode[[so?rt]]=UrlEncode[[de?sc]]&UrlEncode[[maxPrice]]=UrlEncode[[100]]");
|
||||
}
|
||||
|
||||
|
|
@ -629,7 +630,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
maxPrice = 100,
|
||||
custom = "customValue"
|
||||
}),
|
||||
"UrlEncode[[products]]UrlEncode[[.mvc]]/UrlEncode[[showcategory]]/UrlEncode[[123]]" +
|
||||
"/UrlEncode[[products]]UrlEncode[[.mvc]]/UrlEncode[[showcategory]]/UrlEncode[[123]]" +
|
||||
"?UrlEncode[[sort]]=UrlEncode[[desc]]&UrlEncode[[maxPrice]]=UrlEncode[[100]]");
|
||||
}
|
||||
|
||||
|
|
@ -641,7 +642,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
null,
|
||||
new RouteValueDictionary(new { controller = "ho%me", action = "li st" }),
|
||||
new RouteValueDictionary(),
|
||||
"bl%25og/ho%25me/he%20llo/li%20st",
|
||||
"/bl%25og/ho%25me/he%20llo/li%20st",
|
||||
UrlEncoder.Default);
|
||||
}
|
||||
|
||||
|
|
@ -665,7 +666,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { id = "defaultid" }),
|
||||
new RouteValueDictionary(new { p1 = "v1" }),
|
||||
new RouteValueDictionary(new { p2 = "v2a/v2b" }),
|
||||
"UrlEncode[[v1]]/UrlEncode[[v2a/v2b]]");
|
||||
"/UrlEncode[[v1]]/UrlEncode[[v2a/v2b]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -676,7 +677,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { id = "defaultid" }),
|
||||
new RouteValueDictionary(new { p1 = "v1" }),
|
||||
new RouteValueDictionary(new { p2 = "" }),
|
||||
"UrlEncode[[v1]]");
|
||||
"/UrlEncode[[v1]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -687,7 +688,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
|
|||
new RouteValueDictionary(new { id = "defaultid" }),
|
||||
new RouteValueDictionary(new { p1 = "v1" }),
|
||||
new RouteValueDictionary(new { p2 = (string)null }),
|
||||
"UrlEncode[[v1]]");
|
||||
"/UrlEncode[[v1]]");
|
||||
}
|
||||
|
||||
#if ROUTE_COLLECTION
|
||||
|
|
|
|||
|
|
@ -381,7 +381,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(new PathString(expectedPath), result.VirtualPath);
|
||||
Assert.Equal(expectedPath, result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -404,7 +404,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
// Assert
|
||||
Assert.NotNull(result);
|
||||
// The Binder binds to /template
|
||||
Assert.Equal(new PathString($"/template"), result.VirtualPath);
|
||||
Assert.Equal("/template", result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -436,7 +436,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(new PathString(expectedPath), result.VirtualPath);
|
||||
Assert.Equal(expectedPath, result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -468,7 +468,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(new PathString(expectedPath), result.VirtualPath);
|
||||
Assert.Equal(expectedPath, result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -505,7 +505,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(new PathString("/template/5"), result.VirtualPath);
|
||||
Assert.Equal("/template/5", result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -555,7 +555,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
else
|
||||
{
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(new PathString(expectedPath), result.VirtualPath);
|
||||
Assert.Equal(expectedPath, result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -594,7 +594,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(new PathString("/template/5"), result.VirtualPath);
|
||||
Assert.Equal("/template/5", result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -626,7 +626,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(new PathString("/template/5"), result.VirtualPath);
|
||||
Assert.Equal("/template/5", result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -658,7 +658,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(new PathString("/first/5"), result.VirtualPath);
|
||||
Assert.Equal("/first/5", result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -761,8 +761,8 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
IEnumerable<TreeRouteLinkGenerationEntry> namedEntries)
|
||||
{
|
||||
// Arrange
|
||||
var expectedLink = new PathString(
|
||||
namedEntries.First().Template.Parameters.Any() ? "/template/5" : "/template");
|
||||
var expectedLink =
|
||||
namedEntries.First().Template.Parameters.Any() ? "/template/5" : "/template";
|
||||
|
||||
var matchingEntries = Enumerable.Empty<TreeRouteMatchingEntry>();
|
||||
|
||||
|
|
@ -804,7 +804,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(new PathString("/named"), result.VirtualPath);
|
||||
Assert.Equal("/named", result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -903,7 +903,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(new PathString("/template/5"), result.VirtualPath);
|
||||
Assert.Equal("/template/5", result.VirtualPath);
|
||||
Assert.Same(route, result.Router);
|
||||
Assert.Empty(result.DataTokens);
|
||||
}
|
||||
|
|
@ -922,7 +922,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/api/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/api/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -941,7 +941,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/api/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/api/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -976,7 +976,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/api/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/api/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -995,7 +995,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/api/Store/Index"), pathData.VirtualPath);
|
||||
Assert.Equal("/api/Store/Index", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1020,7 +1020,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/api/AwesomeCo/dosomething/Store/Index"), pathData.VirtualPath);
|
||||
Assert.Equal("/api/AwesomeCo/dosomething/Store/Index", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1039,7 +1039,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/api/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/api/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1060,7 +1060,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/api/Store/Index/5"), pathData.VirtualPath);
|
||||
Assert.Equal("/api/Store/Index/5", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1096,7 +1096,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/api/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/api/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1115,7 +1115,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/api/Store?id=5"), pathData.VirtualPath);
|
||||
Assert.Equal("/api/Store?id=5", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1136,7 +1136,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/api2/Blog"), pathData.VirtualPath);
|
||||
Assert.Equal("/api2/Blog", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1162,7 +1162,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/Help/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/Help/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1188,7 +1188,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/Help/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/Help/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1216,7 +1216,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/Help/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/Help/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1244,7 +1244,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString("/Store"), pathData.VirtualPath);
|
||||
Assert.Equal("/Store", pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1337,7 +1337,7 @@ namespace Microsoft.AspNet.Routing.Tree
|
|||
|
||||
// Assert
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal(new PathString(expected), pathData.VirtualPath);
|
||||
Assert.Equal(expected, pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue