React to breaking changes in RouteBuilder
This commit is contained in:
parent
a2393f21be
commit
1126d47b3e
|
|
@ -79,10 +79,9 @@ namespace Microsoft.AspNet.Builder
|
|||
// We use the MvcMarkerService to make sure if all the services were added.
|
||||
MvcServicesHelper.ThrowIfMvcNotRegistered(app.ApplicationServices);
|
||||
|
||||
var routes = new RouteBuilder
|
||||
var routes = new RouteBuilder(app)
|
||||
{
|
||||
DefaultHandler = new MvcRouteHandler(),
|
||||
ServiceProvider = app.ApplicationServices
|
||||
};
|
||||
|
||||
configureRoutes(routes);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.AspNet.Routing;
|
||||
using Microsoft.AspNet.Routing.Constraints;
|
||||
|
|
@ -17,11 +18,7 @@ namespace Microsoft.AspNet.Builder
|
|||
public void MapAreaRoute_Simple()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RouteBuilder()
|
||||
{
|
||||
DefaultHandler = Mock.Of<IRouter>(),
|
||||
ServiceProvider = CreateServices(),
|
||||
};
|
||||
var builder = CreateRouteBuilder();
|
||||
|
||||
// Act
|
||||
builder.MapAreaRoute(name: null, areaName: "admin", template: "site/Admin/");
|
||||
|
|
@ -52,11 +49,7 @@ namespace Microsoft.AspNet.Builder
|
|||
public void MapAreaRoute_Defaults()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RouteBuilder()
|
||||
{
|
||||
DefaultHandler = Mock.Of<IRouter>(),
|
||||
ServiceProvider = CreateServices(),
|
||||
};
|
||||
var builder = CreateRouteBuilder();
|
||||
|
||||
// Act
|
||||
builder.MapAreaRoute(
|
||||
|
|
@ -96,11 +89,7 @@ namespace Microsoft.AspNet.Builder
|
|||
public void MapAreaRoute_DefaultsAndConstraints()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RouteBuilder()
|
||||
{
|
||||
DefaultHandler = Mock.Of<IRouter>(),
|
||||
ServiceProvider = CreateServices(),
|
||||
};
|
||||
var builder = CreateRouteBuilder();
|
||||
|
||||
// Act
|
||||
builder.MapAreaRoute(
|
||||
|
|
@ -146,11 +135,7 @@ namespace Microsoft.AspNet.Builder
|
|||
public void MapAreaRoute_DefaultsConstraintsAndDataTokens()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RouteBuilder()
|
||||
{
|
||||
DefaultHandler = Mock.Of<IRouter>(),
|
||||
ServiceProvider = CreateServices(),
|
||||
};
|
||||
var builder = CreateRouteBuilder();
|
||||
|
||||
// Act
|
||||
builder.MapAreaRoute(
|
||||
|
|
@ -203,11 +188,7 @@ namespace Microsoft.AspNet.Builder
|
|||
public void MapAreaRoute_ReplacesValuesForArea()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RouteBuilder()
|
||||
{
|
||||
DefaultHandler = Mock.Of<IRouter>(),
|
||||
ServiceProvider = CreateServices(),
|
||||
};
|
||||
var builder = CreateRouteBuilder();
|
||||
|
||||
// Act
|
||||
builder.MapAreaRoute(
|
||||
|
|
@ -252,5 +233,21 @@ namespace Microsoft.AspNet.Builder
|
|||
services.AddRouting();
|
||||
return services.BuildServiceProvider();
|
||||
}
|
||||
|
||||
private IRouteBuilder CreateRouteBuilder()
|
||||
{
|
||||
var builder = new Mock<IRouteBuilder>();
|
||||
builder
|
||||
.SetupGet(b => b.ServiceProvider)
|
||||
.Returns(CreateServices());
|
||||
builder
|
||||
.SetupGet(b => b.Routes)
|
||||
.Returns(new List<IRouter>());
|
||||
builder
|
||||
.SetupGet(b => b.DefaultHandler)
|
||||
.Returns(Mock.Of<IRouter>());
|
||||
|
||||
return builder.Object;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ using Microsoft.AspNet.Http.Internal;
|
|||
using Microsoft.AspNet.Mvc.Abstractions;
|
||||
using Microsoft.AspNet.Mvc.Infrastructure;
|
||||
using Microsoft.AspNet.Routing;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Logging.Testing;
|
||||
using Microsoft.Extensions.OptionsModel;
|
||||
|
|
@ -31,7 +32,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
string expectedPath)
|
||||
{
|
||||
// Arrange
|
||||
var httpContext = CreateHttpContext(GetServices(), appRoot);
|
||||
var httpContext = CreateHttpContext(CreateServices(), appRoot);
|
||||
var actionContext = CreateActionContext(httpContext);
|
||||
var urlHelper = CreateUrlHelper(actionContext);
|
||||
|
||||
|
|
@ -56,7 +57,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
string expectedPath)
|
||||
{
|
||||
// Arrange
|
||||
var httpContext = CreateHttpContext(GetServices(), appRoot);
|
||||
var httpContext = CreateHttpContext(CreateServices(), appRoot);
|
||||
var actionContext = CreateActionContext(httpContext);
|
||||
var urlHelper = CreateUrlHelper(actionContext);
|
||||
|
||||
|
|
@ -266,7 +267,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithDictionary()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -286,7 +287,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithEmptyHostName()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -309,7 +310,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithEmptyProtocol()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -332,7 +333,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithNullProtocol()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -355,7 +356,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithNullProtocolAndNullHostName()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -378,7 +379,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithObjectProperties()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -392,7 +393,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithProtocol()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -413,7 +414,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrl_WithUnicodeHost_DoesNotPunyEncodeTheHost()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -435,7 +436,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithRouteNameAndDefaults()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var routeCollection = GetRouter(services, "MyRouteName", "any/url");
|
||||
var urlHelper = CreateUrlHelper("/app", routeCollection);
|
||||
|
||||
|
|
@ -450,7 +451,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithRouteNameAndDictionary()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -471,7 +472,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithRouteNameAndObjectProperties()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -491,7 +492,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithUrlRouteContext_ReturnsExpectedResult()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
var routeContext = new UrlRouteContext()
|
||||
|
|
@ -519,7 +520,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void RouteUrlWithAllParameters_ReturnsExpectedResult()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -543,7 +544,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void UrlAction_RouteValuesAsDictionary_CaseSensitive()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// We're using a dictionary with a case-sensitive comparer and loading it with data
|
||||
|
|
@ -571,7 +572,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void UrlAction_WithUnicodeHost_DoesNotPunyEncodeTheHost()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -590,7 +591,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void UrlRouteUrl_RouteValuesAsDictionary_CaseSensitive()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// We're using a dictionary with a case-sensitive comparer and loading it with data
|
||||
|
|
@ -619,7 +620,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void UrlActionWithUrlActionContext_ReturnsExpectedResult()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
var actionContext = new UrlActionContext()
|
||||
|
|
@ -643,7 +644,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void UrlActionWithAllParameters_ReturnsExpectedResult()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -664,7 +665,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void LinkWithAllParameters_ReturnsExpectedResult()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -684,7 +685,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void LinkWithNullRouteName_ReturnsExpectedResult()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app");
|
||||
|
||||
// Act
|
||||
|
|
@ -704,7 +705,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void LinkWithDefaultsAndNullRouteValues_ReturnsExpectedResult()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var routeCollection = GetRouter(services, "MyRouteName", "any/url");
|
||||
var urlHelper = CreateUrlHelper("/app", routeCollection);
|
||||
|
||||
|
|
@ -719,7 +720,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void LinkWithCustomHostAndProtocol_ReturnsExpectedResult()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var routeCollection = GetRouter(services, "MyRouteName", "any/url");
|
||||
var urlHelper = CreateUrlHelper("myhost", "https", routeCollection);
|
||||
|
||||
|
|
@ -741,12 +742,8 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void Action_RouteValueInvalidation_DoesNotAffectActionAndController()
|
||||
{
|
||||
// Arrange
|
||||
var services = GetServices();
|
||||
var routeBuilder = new RouteBuilder()
|
||||
{
|
||||
DefaultHandler = new PassThroughRouter(),
|
||||
ServiceProvider = services,
|
||||
};
|
||||
var services = CreateServices();
|
||||
var routeBuilder = CreateRouteBuilder(services);
|
||||
|
||||
routeBuilder.MapRoute(
|
||||
"default",
|
||||
|
|
@ -786,12 +783,8 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void Action_RouteValueInvalidation_AffectsOtherRouteValues()
|
||||
{
|
||||
// Arrage
|
||||
var services = GetServices();
|
||||
var routeBuilder = new RouteBuilder()
|
||||
{
|
||||
DefaultHandler = new PassThroughRouter(),
|
||||
ServiceProvider = services,
|
||||
};
|
||||
var services = CreateServices();
|
||||
var routeBuilder = CreateRouteBuilder(services);
|
||||
|
||||
routeBuilder.MapRoute(
|
||||
"default",
|
||||
|
|
@ -834,12 +827,8 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
public void Action_RouteValueInvalidation_DoesNotAffectActionAndController_ActionPassedInRouteValues()
|
||||
{
|
||||
// Arrage
|
||||
var services = GetServices();
|
||||
var routeBuilder = new RouteBuilder()
|
||||
{
|
||||
DefaultHandler = new PassThroughRouter(),
|
||||
ServiceProvider = services,
|
||||
};
|
||||
var services = CreateServices();
|
||||
var routeBuilder = CreateRouteBuilder(services);
|
||||
|
||||
routeBuilder.MapRoute(
|
||||
"default",
|
||||
|
|
@ -902,7 +891,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
|
||||
private static UrlHelper CreateUrlHelper()
|
||||
{
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var context = CreateHttpContext(services, string.Empty);
|
||||
var actionContext = CreateActionContext(context);
|
||||
|
||||
|
|
@ -916,7 +905,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
|
||||
private static UrlHelper CreateUrlHelper(string host)
|
||||
{
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var context = CreateHttpContext(services, string.Empty);
|
||||
context.Request.Host = new HostString(host);
|
||||
|
||||
|
|
@ -927,7 +916,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
|
||||
private static UrlHelper CreateUrlHelper(string host, string protocol, IRouter router)
|
||||
{
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var context = CreateHttpContext(services, string.Empty);
|
||||
context.Request.Host = new HostString(host);
|
||||
context.Request.Scheme = protocol;
|
||||
|
|
@ -939,7 +928,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
|
||||
private static UrlHelper CreateUrlHelper(string appBase, IRouter router)
|
||||
{
|
||||
var services = GetServices();
|
||||
var services = CreateServices();
|
||||
var context = CreateHttpContext(services, appBase);
|
||||
var actionContext = CreateActionContext(context, router);
|
||||
|
||||
|
|
@ -957,27 +946,25 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
return GetRouter(services, "mockRoute", "/mockTemplate");
|
||||
}
|
||||
|
||||
private static IServiceProvider GetServices()
|
||||
private static IServiceProvider CreateServices()
|
||||
{
|
||||
var services = new Mock<IServiceProvider>();
|
||||
var services = new ServiceCollection();
|
||||
services.AddLogging();
|
||||
services.AddRouting();
|
||||
return services.BuildServiceProvider();
|
||||
}
|
||||
|
||||
var optionsAccessor = new Mock<IOptions<RouteOptions>>();
|
||||
optionsAccessor
|
||||
.SetupGet(o => o.Value)
|
||||
.Returns(new RouteOptions());
|
||||
services
|
||||
.Setup(s => s.GetService(typeof(IOptions<RouteOptions>)))
|
||||
.Returns(optionsAccessor.Object);
|
||||
private static IRouteBuilder CreateRouteBuilder(IServiceProvider services)
|
||||
{
|
||||
var app = new Mock<IApplicationBuilder>();
|
||||
app
|
||||
.SetupGet(a => a.ApplicationServices)
|
||||
.Returns(services);
|
||||
|
||||
services
|
||||
.Setup(s => s.GetService(typeof(IInlineConstraintResolver)))
|
||||
.Returns(new DefaultInlineConstraintResolver(optionsAccessor.Object));
|
||||
|
||||
services
|
||||
.Setup(s => s.GetService(typeof(ILoggerFactory)))
|
||||
.Returns(NullLoggerFactory.Instance);
|
||||
|
||||
return services.Object;
|
||||
return new RouteBuilder(app.Object)
|
||||
{
|
||||
DefaultHandler = new PassThroughRouter(),
|
||||
};
|
||||
}
|
||||
|
||||
private static IRouter GetRouter(
|
||||
|
|
@ -985,8 +972,7 @@ namespace Microsoft.AspNet.Mvc.Routing
|
|||
string mockRouteName,
|
||||
string mockTemplateValue)
|
||||
{
|
||||
var routeBuilder = new RouteBuilder();
|
||||
routeBuilder.ServiceProvider = services;
|
||||
var routeBuilder = CreateRouteBuilder(services);
|
||||
|
||||
var target = new Mock<IRouter>(MockBehavior.Strict);
|
||||
target
|
||||
|
|
|
|||
|
|
@ -516,10 +516,12 @@ namespace Microsoft.AspNet.Mvc
|
|||
|
||||
private static RouteBuilder GetRouteBuilder(IServiceProvider serviceProvider)
|
||||
{
|
||||
var builder = new RouteBuilder
|
||||
{
|
||||
ServiceProvider = serviceProvider,
|
||||
};
|
||||
var app = new Mock<IApplicationBuilder>();
|
||||
app
|
||||
.SetupGet(a => a.ApplicationServices)
|
||||
.Returns(serviceProvider);
|
||||
|
||||
var builder = new RouteBuilder(app.Object);
|
||||
|
||||
var handler = new Mock<IRouter>(MockBehavior.Strict);
|
||||
handler
|
||||
|
|
|
|||
Loading…
Reference in New Issue