diff --git a/src/Microsoft.AspNet.Mvc.Core/ActionContext.cs b/src/Microsoft.AspNet.Mvc.Core/ActionContext.cs index 2ec25734c3..aa845cf8e7 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ActionContext.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ActionContext.cs @@ -11,26 +11,28 @@ namespace Microsoft.AspNet.Mvc public class ActionContext { public ActionContext([NotNull] ActionContext actionContext) - : this(actionContext.HttpContext, actionContext.Router, actionContext.RouteValues, actionContext.ActionDescriptor) + : this(actionContext.HttpContext, actionContext.RouteData, actionContext.ActionDescriptor) { ModelState = actionContext.ModelState; Controller = actionContext.Controller; } - public ActionContext(HttpContext httpContext, IRouter router, IDictionary routeValues, ActionDescriptor actionDescriptor) + public ActionContext([NotNull] RouteContext routeContext, [NotNull] ActionDescriptor actionDescriptor) + : this(routeContext.HttpContext, routeContext.RouteData, actionDescriptor) + { + } + + public ActionContext([NotNull] HttpContext httpContext, [NotNull] RouteData routeData, [NotNull] ActionDescriptor actionDescriptor) { HttpContext = httpContext; - Router = router; - RouteValues = routeValues; + RouteData = routeData; ActionDescriptor = actionDescriptor; ModelState = new ModelStateDictionary(); } public HttpContext HttpContext { get; private set; } - public IRouter Router { get; private set; } - - public IDictionary RouteValues { get; private set; } + public RouteData RouteData { get; private set; } public ModelStateDictionary ModelState { get; private set; } diff --git a/src/Microsoft.AspNet.Mvc.Core/ActionResults/ViewResult.cs b/src/Microsoft.AspNet.Mvc.Core/ActionResults/ViewResult.cs index 3ffd50a93b..9e3f5f86b5 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ActionResults/ViewResult.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ActionResults/ViewResult.cs @@ -30,7 +30,7 @@ namespace Microsoft.AspNet.Mvc public override async Task ExecuteResultAsync([NotNull] ActionContext context) { var viewName = ViewName ?? context.ActionDescriptor.Name; - var view = FindView(context.RouteValues, viewName); + var view = FindView(context.RouteData.Values, viewName); using (view as IDisposable) { diff --git a/src/Microsoft.AspNet.Mvc.Core/DefaultActionSelector.cs b/src/Microsoft.AspNet.Mvc.Core/DefaultActionSelector.cs index 84c16a8695..5e34ef8c54 100644 --- a/src/Microsoft.AspNet.Mvc.Core/DefaultActionSelector.cs +++ b/src/Microsoft.AspNet.Mvc.Core/DefaultActionSelector.cs @@ -25,13 +25,8 @@ namespace Microsoft.AspNet.Mvc _bindingProvider = bindingProvider; } - public async Task SelectAsync(RequestContext context) + public async Task SelectAsync([NotNull] RouteContext context) { - if (context == null) - { - throw new ArgumentNullException("context"); - } - var allDescriptors = GetActions(); var matching = allDescriptors.Where(ad => Match(ad, context)).ToList(); @@ -63,7 +58,7 @@ namespace Microsoft.AspNet.Mvc } } - public bool Match(ActionDescriptor descriptor, RequestContext context) + public bool Match(ActionDescriptor descriptor, RouteContext context) { if (descriptor == null) { @@ -75,7 +70,7 @@ namespace Microsoft.AspNet.Mvc (descriptor.DynamicConstraints == null || descriptor.DynamicConstraints.All(c => c.Accept(context))); } - protected virtual async Task SelectBestCandidate(RequestContext context, List candidates) + protected virtual async Task SelectBestCandidate(RouteContext context, List candidates) { var applicableCandiates = new List(); foreach (var action in candidates) @@ -86,12 +81,7 @@ namespace Microsoft.AspNet.Mvc Action = action, }; - // Issues #60 & #65 filed to deal with the ugliness of passing null here. - var actionContext = new ActionContext( - httpContext: context.HttpContext, - router: null, - routeValues: context.RouteValues, - actionDescriptor: action); + var actionContext = new ActionContext(context, action); var actionBindingContext = await _bindingProvider.GetActionBindingContextAsync(actionContext); foreach (var parameter in action.Parameters.Where(p => p.ParameterBindingInfo != null)) diff --git a/src/Microsoft.AspNet.Mvc.Core/HttpMethodConstraint.cs b/src/Microsoft.AspNet.Mvc.Core/HttpMethodConstraint.cs index f02441c8e4..9f93d93065 100644 --- a/src/Microsoft.AspNet.Mvc.Core/HttpMethodConstraint.cs +++ b/src/Microsoft.AspNet.Mvc.Core/HttpMethodConstraint.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.AspNet.Routing; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -43,7 +44,7 @@ namespace Microsoft.AspNet.Mvc } } - public bool Accept(RequestContext context) + public bool Accept([NotNull] RouteContext context) { if (context == null) { diff --git a/src/Microsoft.AspNet.Mvc.Core/IActionConstraint.cs b/src/Microsoft.AspNet.Mvc.Core/IActionConstraint.cs index ff89005037..f68cdcb7f3 100644 --- a/src/Microsoft.AspNet.Mvc.Core/IActionConstraint.cs +++ b/src/Microsoft.AspNet.Mvc.Core/IActionConstraint.cs @@ -1,10 +1,12 @@ // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.AspNet.Routing; + namespace Microsoft.AspNet.Mvc { public interface IActionConstraint { - bool Accept(RequestContext context); + bool Accept([NotNull] RouteContext context); } } diff --git a/src/Microsoft.AspNet.Mvc.Core/IActionSelector.cs b/src/Microsoft.AspNet.Mvc.Core/IActionSelector.cs index 44e712df32..85c44a14d4 100644 --- a/src/Microsoft.AspNet.Mvc.Core/IActionSelector.cs +++ b/src/Microsoft.AspNet.Mvc.Core/IActionSelector.cs @@ -1,7 +1,6 @@ // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNet.Routing; @@ -10,9 +9,9 @@ namespace Microsoft.AspNet.Mvc { public interface IActionSelector { - Task SelectAsync(RequestContext context); + Task SelectAsync(RouteContext context); - bool Match(ActionDescriptor descriptor, RequestContext context); + bool Match(ActionDescriptor descriptor, RouteContext context); bool HasValidAction(VirtualPathContext context); diff --git a/src/Microsoft.AspNet.Mvc.Core/MvcRouteHandler.cs b/src/Microsoft.AspNet.Mvc.Core/MvcRouteHandler.cs index c80193b9e8..9c16df7ee4 100644 --- a/src/Microsoft.AspNet.Mvc.Core/MvcRouteHandler.cs +++ b/src/Microsoft.AspNet.Mvc.Core/MvcRouteHandler.cs @@ -31,17 +31,14 @@ namespace Microsoft.AspNet.Mvc // TODO: Throw an error here that's descriptive enough so that // users understand they should call the per request scoped middleware // or set HttpContext.Services manually - - var requestContext = new RequestContext(context.HttpContext, context.Values); - var actionSelector = services.GetService(); - var actionDescriptor = await actionSelector.SelectAsync(requestContext); + var actionDescriptor = await actionSelector.SelectAsync(context); if (actionDescriptor == null) { return; } - var actionContext = new ActionContext(context.HttpContext, context.Router, context.Values, actionDescriptor); + var actionContext = new ActionContext(context.HttpContext, context.RouteData, actionDescriptor); var contextAccessor = services.GetService>(); using (contextAccessor.SetContextSource(() => actionContext, PreventExchange)) diff --git a/src/Microsoft.AspNet.Mvc.Core/ParameterBinding/DefaultActionBindingContextProvider.cs b/src/Microsoft.AspNet.Mvc.Core/ParameterBinding/DefaultActionBindingContextProvider.cs index 8095650ad2..6f49647b57 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ParameterBinding/DefaultActionBindingContextProvider.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ParameterBinding/DefaultActionBindingContextProvider.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNet.Mvc.ModelBinding; +using Microsoft.AspNet.Routing; namespace Microsoft.AspNet.Mvc { @@ -31,8 +32,9 @@ namespace Microsoft.AspNet.Mvc public Task GetActionBindingContextAsync(ActionContext actionContext) { - var requestContext = new RequestContext(actionContext.HttpContext, actionContext.RouteValues); - var valueProviders = _valueProviderFactories.Select(factory => factory.GetValueProvider(requestContext)) + var routeContext = new RouteContext(actionContext.HttpContext); + routeContext.RouteData = actionContext.RouteData; + var valueProviders = _valueProviderFactories.Select(factory => factory.GetValueProvider(routeContext)) .Where(vp => vp != null); var context = new ActionBindingContext( actionContext, diff --git a/src/Microsoft.AspNet.Mvc.Core/Rendering/Html/HtmlHelper.cs b/src/Microsoft.AspNet.Mvc.Core/Rendering/Html/HtmlHelper.cs index 6e298553d4..e161675277 100644 --- a/src/Microsoft.AspNet.Mvc.Core/Rendering/Html/HtmlHelper.cs +++ b/src/Microsoft.AspNet.Mvc.Core/Rendering/Html/HtmlHelper.cs @@ -381,7 +381,7 @@ namespace Microsoft.AspNet.Mvc.Rendering var newViewData = new ViewDataDictionary(baseViewData, model); - var viewEngineResult = _viewEngine.FindPartialView(ViewContext.RouteValues, partialViewName); + var viewEngineResult = _viewEngine.FindPartialView(ViewContext.RouteData.Values, partialViewName); if (!viewEngineResult.Success) { var locations = string.Empty; diff --git a/src/Microsoft.AspNet.Mvc.Core/Rendering/Html/TemplateRenderer.cs b/src/Microsoft.AspNet.Mvc.Core/Rendering/Html/TemplateRenderer.cs index aebfd036bb..97d48775f1 100644 --- a/src/Microsoft.AspNet.Mvc.Core/Rendering/Html/TemplateRenderer.cs +++ b/src/Microsoft.AspNet.Mvc.Core/Rendering/Html/TemplateRenderer.cs @@ -89,7 +89,7 @@ namespace Microsoft.AspNet.Mvc.Rendering var fullViewName = modeViewPath + "/" + viewName; // Forcing synchronous behavior so users don't have to await templates. - var viewEngineResult = _viewEngine.FindPartialView(_viewContext.RouteValues, fullViewName); + var viewEngineResult = _viewEngine.FindPartialView(_viewContext.RouteData.Values, fullViewName); if (viewEngineResult.Success) { using (var writer = new StringWriter(CultureInfo.InvariantCulture)) diff --git a/src/Microsoft.AspNet.Mvc.Core/RouteDataActionConstraint.cs b/src/Microsoft.AspNet.Mvc.Core/RouteDataActionConstraint.cs index 89446e125e..e1733f5c6b 100644 --- a/src/Microsoft.AspNet.Mvc.Core/RouteDataActionConstraint.cs +++ b/src/Microsoft.AspNet.Mvc.Core/RouteDataActionConstraint.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using Microsoft.AspNet.Mvc.Core; +using Microsoft.AspNet.Routing; namespace Microsoft.AspNet.Mvc { @@ -117,14 +118,14 @@ namespace Microsoft.AspNet.Mvc } } - public bool Accept([NotNull] RequestContext context) + public bool Accept([NotNull] RouteContext context) { - var routeValues = context.RouteValues; + var routeValues = context.RouteData.Values; if (routeValues == null) { throw new ArgumentException(Resources.FormatPropertyOfTypeCannotBeNull( - "RouteValues", - typeof(RequestContext)), + "Values", + typeof(RouteData)), "context"); } diff --git a/src/Microsoft.AspNet.Mvc.Core/UrlHelper.cs b/src/Microsoft.AspNet.Mvc.Core/UrlHelper.cs index 857ec21355..ee962f02f8 100644 --- a/src/Microsoft.AspNet.Mvc.Core/UrlHelper.cs +++ b/src/Microsoft.AspNet.Mvc.Core/UrlHelper.cs @@ -21,8 +21,8 @@ namespace Microsoft.AspNet.Mvc public UrlHelper(IContextAccessor contextAccessor, IActionSelector actionSelector) { _httpContext = contextAccessor.Value.HttpContext; - _router = contextAccessor.Value.Router; - _ambientValues = contextAccessor.Value.RouteValues; + _router = contextAccessor.Value.RouteData.Routers.Peek(); + _ambientValues = contextAccessor.Value.RouteData.Values; _actionSelector = actionSelector; } diff --git a/src/Microsoft.AspNet.Mvc.Core/ViewComponents/ViewViewComponentResult.cs b/src/Microsoft.AspNet.Mvc.Core/ViewComponents/ViewViewComponentResult.cs index cd296b58f2..9b7ff73081 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ViewComponents/ViewViewComponentResult.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ViewComponents/ViewViewComponentResult.cs @@ -60,7 +60,7 @@ namespace Microsoft.AspNet.Mvc _viewName); } - var view = FindView(context.ViewContext.RouteValues, qualifiedViewName); + var view = FindView(context.ViewContext.RouteData.Values, qualifiedViewName); var childViewContext = new ViewContext( context.ViewContext, diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/Microsoft.AspNet.Mvc.ModelBinding.kproj b/src/Microsoft.AspNet.Mvc.ModelBinding/Microsoft.AspNet.Mvc.ModelBinding.kproj index b92e26fd10..81ab7bf31b 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/Microsoft.AspNet.Mvc.ModelBinding.kproj +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/Microsoft.AspNet.Mvc.ModelBinding.kproj @@ -69,7 +69,6 @@ - @@ -119,4 +118,4 @@ - + \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/RequestContext.cs b/src/Microsoft.AspNet.Mvc.ModelBinding/RequestContext.cs deleted file mode 100644 index 2afaf8237b..0000000000 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/RequestContext.cs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. -// 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 Microsoft.AspNet.Http; - -namespace Microsoft.AspNet.Mvc -{ - public class RequestContext - { - public RequestContext([NotNull]HttpContext context, - [NotNull]IDictionary routeValues) - { - HttpContext = context; - RouteValues = routeValues; - } - - public virtual IDictionary RouteValues { get; set; } - - public virtual HttpContext HttpContext { get; set; } - } -} diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/FormValueProviderFactory.cs b/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/FormValueProviderFactory.cs index be59ee427c..845f1a6d51 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/FormValueProviderFactory.cs +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/FormValueProviderFactory.cs @@ -4,6 +4,7 @@ using System; using System.Globalization; using Microsoft.AspNet.Http; +using Microsoft.AspNet.Routing; namespace Microsoft.AspNet.Mvc.ModelBinding { @@ -11,9 +12,9 @@ namespace Microsoft.AspNet.Mvc.ModelBinding { private const string FormEncodedContentType = "application/x-www-form-urlencoded"; - public IValueProvider GetValueProvider(RequestContext requestContext) + public IValueProvider GetValueProvider([NotNull] RouteContext routeContext) { - var request = requestContext.HttpContext.Request; + var request = routeContext.HttpContext.Request; if (IsSupportedContentType(request)) { diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/IValueProviderFactory.cs b/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/IValueProviderFactory.cs index ac6dfb1a05..8be06cf87e 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/IValueProviderFactory.cs +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/IValueProviderFactory.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System.Threading.Tasks; +using Microsoft.AspNet.Routing; namespace Microsoft.AspNet.Mvc.ModelBinding { @@ -10,8 +10,8 @@ namespace Microsoft.AspNet.Mvc.ModelBinding /// /// Get a value provider with values from the given . /// - /// RequestContext that value provider will populate from + /// RouteContext that value provider will populate from /// a value provider instance or null - IValueProvider GetValueProvider(RequestContext requestContext); + IValueProvider GetValueProvider([NotNull] RouteContext routeContext); } } diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/QueryStringValueProviderFactory.cs b/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/QueryStringValueProviderFactory.cs index 6362fc58b1..fe9e88b4f7 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/QueryStringValueProviderFactory.cs +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/QueryStringValueProviderFactory.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.AspNet.Routing; using System.Globalization; namespace Microsoft.AspNet.Mvc.ModelBinding @@ -9,15 +10,15 @@ namespace Microsoft.AspNet.Mvc.ModelBinding { private static readonly object _cacheKey = new object(); - public IValueProvider GetValueProvider([NotNull] RequestContext requestContext) + public IValueProvider GetValueProvider([NotNull] RouteContext routeContext) { // Process the query collection once-per request. - var storage = requestContext.HttpContext.Items; + var storage = routeContext.HttpContext.Items; object value; IValueProvider provider; if (!storage.TryGetValue(_cacheKey, out value)) { - var queryCollection = requestContext.HttpContext.Request.Query; + var queryCollection = routeContext.HttpContext.Request.Query; provider = new ReadableStringCollectionValueProvider(queryCollection, CultureInfo.InvariantCulture); storage[_cacheKey] = provider; } diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/RouteValueValueProviderFactory.cs b/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/RouteValueValueProviderFactory.cs index 8c0ec2893c..bb0ce995cf 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/RouteValueValueProviderFactory.cs +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/ValueProviders/RouteValueValueProviderFactory.cs @@ -1,13 +1,15 @@ // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.AspNet.Routing; + namespace Microsoft.AspNet.Mvc.ModelBinding { public class RouteValueValueProviderFactory : IValueProviderFactory { - public IValueProvider GetValueProvider(RequestContext requestContext) + public IValueProvider GetValueProvider([NotNull] RouteContext routeContext) { - return new DictionaryBasedValueProvider(requestContext.RouteValues); + return new DictionaryBasedValueProvider(routeContext.RouteData.Values); } } } diff --git a/src/Microsoft.AspNet.Mvc.ModelBinding/project.json b/src/Microsoft.AspNet.Mvc.ModelBinding/project.json index 099328996c..6c44f6c483 100644 --- a/src/Microsoft.AspNet.Mvc.ModelBinding/project.json +++ b/src/Microsoft.AspNet.Mvc.ModelBinding/project.json @@ -6,6 +6,7 @@ "dependencies": { "Microsoft.AspNet.Http": "0.1-alpha-*", "Microsoft.AspNet.Mvc.Common": "", + "Microsoft.AspNet.Routing": "0.1-alpha-*", "Microsoft.DataAnnotations": "0.1-alpha-*", "Microsoft.Framework.DependencyInjection": "0.1-alpha-*", "Newtonsoft.Json": "5.0.8" diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ActionAttributeTests.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ActionAttributeTests.cs index bff111a3f5..41de226cae 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ActionAttributeTests.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ActionAttributeTests.cs @@ -12,6 +12,7 @@ using Microsoft.AspNet.Http; using Microsoft.Framework.DependencyInjection.NestedProviders; using Moq; using Xunit; +using Microsoft.AspNet.Routing; namespace Microsoft.AspNet.Mvc.Core.Test { @@ -31,16 +32,15 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task HttpMethodAttribute_ActionWithMultipleHttpMethodAttributeViaAcceptVerbs_ORsMultipleHttpMethods(string verb) { // Arrange - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - { "controller", "HttpMethodAttributeTests_RestOnly" }, - { "action", "Patch" } - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "HttpMethodAttributeTests_RestOnly" }, + { "action", "Patch" } + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal("Patch", result.Name); @@ -55,16 +55,15 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task HttpMethodAttribute_ActionWithMultipleHttpMethodAttributes_ORsMultipleHttpMethods(string verb) { // Arrange - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - { "controller", "HttpMethodAttributeTests_RestOnly" }, - { "action", "Put" } - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary() + { + { "controller", "HttpMethodAttributeTests_RestOnly" }, + { "action", "Put" } + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal("Put", result.Name); @@ -77,15 +76,14 @@ namespace Microsoft.AspNet.Mvc.Core.Test { // Arrange // Note no action name is passed, hence should return a null action descriptor. - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - { "controller", "HttpMethodAttributeTests_RestOnly" }, - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary() + { + { "controller", "HttpMethodAttributeTests_RestOnly" }, + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal(null, result); @@ -98,15 +96,14 @@ namespace Microsoft.AspNet.Mvc.Core.Test { // Arrange // Note no action name is passed, hence should return a null action descriptor. - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - { "controller", "HttpMethodAttributeTests_DefaultMethodValidation" }, - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "HttpMethodAttributeTests_DefaultMethodValidation" }, + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal("Index", result.Name); @@ -141,16 +138,15 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task ActionNameAttribute_ActionGetsExposedViaActionName_UnreachableByConvention(string verb) { // Arrange - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - { "controller", "ActionName" }, - { "action", "RPCMethodWithHttpGet" } - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "ActionName" }, + { "action", "RPCMethodWithHttpGet" } + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal(null, result); @@ -175,27 +171,26 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task ActionNameAttribute_DifferentActionName_UsesActionNameFromActionNameAttribute(string verb, string actionName) { // Arrange - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - { "controller", "ActionName" }, - { "action", actionName } - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "ActionName" }, + { "action", actionName } + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal(actionName, result.Name); } - private async Task InvokeActionSelector(RequestContext context) + private async Task InvokeActionSelector(RouteContext context) { return await InvokeActionSelector(context, _actionDiscoveryConventions); } - private async Task InvokeActionSelector(RequestContext context, DefaultActionDiscoveryConventions actionDiscoveryConventions) + private async Task InvokeActionSelector(RouteContext context, DefaultActionDiscoveryConventions actionDiscoveryConventions) { var actionDescriptorProvider = GetActionDescriptorProvider(actionDiscoveryConventions); var descriptorProvider = diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/ObjectContentResultTests.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/ObjectContentResultTests.cs index e5fb96dcbf..037eef1a0f 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/ObjectContentResultTests.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/ObjectContentResultTests.cs @@ -85,8 +85,7 @@ namespace Microsoft.AspNet.Mvc.Core.Test.ActionResults httpContext.Setup(o => o.Response).Returns(response); } - return new ActionContext(httpContext.Object, Mock.Of(), new Dictionary(), - new ActionDescriptor()); + return new ActionContext(httpContext.Object, new RouteData(), new ActionDescriptor()); } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectResultTest.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectResultTest.cs index 7a7f62b967..6891a21f80 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectResultTest.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectResultTest.cs @@ -69,9 +69,14 @@ namespace Microsoft.AspNet.Mvc.Core.Test private static ActionContext GetActionContext(HttpContext httpContext) { + var routeData = new RouteData() + { + Values = new Dictionary(StringComparer.OrdinalIgnoreCase), + }; + routeData.Routers.Push(new Mock().Object); + return new ActionContext(httpContext, - Mock.Of(), - new Dictionary(), + routeData, new ActionDescriptor()); } diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectToActionResultTest.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectToActionResultTest.cs index 77ce2c26d9..d287ebd74d 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectToActionResultTest.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectToActionResultTest.cs @@ -24,8 +24,7 @@ namespace Microsoft.AspNet.Mvc.Core.Test.ActionResults httpContext.Setup(o => o.Response).Returns(httpResponse.Object); var actionContext = new ActionContext(httpContext.Object, - Mock.Of(), - new Dictionary(), + new RouteData(), new ActionDescriptor()); IUrlHelper urlHelper = GetMockUrlHelper(expectedUrl); RedirectToActionResult result = new RedirectToActionResult(urlHelper, "SampleAction", null, null); @@ -47,8 +46,7 @@ namespace Microsoft.AspNet.Mvc.Core.Test.ActionResults var httpContext = new Mock(); httpContext.Setup(o => o.Response).Returns(new Mock().Object); var actionContext = new ActionContext(httpContext.Object, - Mock.Of(), - new Dictionary(), + new RouteData(), new ActionDescriptor()); IUrlHelper urlHelper = GetMockUrlHelper(returnValue: null); diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectToRouteResultTest.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectToRouteResultTest.cs index 3f4f1dddf6..35bfdaf7b3 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectToRouteResultTest.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/RedirectToRouteResultTest.cs @@ -25,8 +25,7 @@ namespace Microsoft.AspNet.Mvc.Core httpContext.Setup(o => o.Response).Returns(httpResponse.Object); var actionContext = new ActionContext(httpContext.Object, - Mock.Of(), - new Dictionary(), + new RouteData(), new ActionDescriptor()); IUrlHelper urlHelper = GetMockUrlHelper(expectedUrl); RedirectToRouteResult result = new RedirectToRouteResult(urlHelper, @@ -50,8 +49,7 @@ namespace Microsoft.AspNet.Mvc.Core var httpContext = new Mock(); httpContext.Setup(o => o.Response).Returns(new Mock().Object); var actionContext = new ActionContext(httpContext.Object, - Mock.Of(), - new Dictionary(), + new RouteData(), new ActionDescriptor()); IUrlHelper urlHelper = GetMockUrlHelper(returnValue: null); diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ActionSelectionConventionTests.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ActionSelectionConventionTests.cs index beef999098..c276d16125 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ActionSelectionConventionTests.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ActionSelectionConventionTests.cs @@ -8,6 +8,7 @@ using System.Collections.Generic; using System.Reflection; using System.Threading.Tasks; using Microsoft.AspNet.Http; +using Microsoft.AspNet.Routing; using Microsoft.Framework.DependencyInjection.NestedProviders; using Moq; using Xunit; @@ -27,15 +28,14 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task ActionSelection_IndexSelectedByDefaultInAbsenceOfVerbOnlyMethod(string verb) { // Arrange - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - { "controller", "RpcOnly" } - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "RpcOnly" } + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal("Index", result.Name); @@ -47,15 +47,14 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task ActionSelection_PrefersVerbOnlyMethodOverIndex(string verb) { // Arrange - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - { "controller", "MixedRpcAndRest" } - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "MixedRpcAndRest" } + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal(verb, result.Name, StringComparer.OrdinalIgnoreCase); @@ -68,15 +67,14 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task ActionSelection_IndexNotSelectedByDefaultExceptGetAndPostVerbs(string verb) { // Arrange - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - { "controller", "RpcOnly" } - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "RpcOnly" } + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal(null, result); @@ -88,15 +86,14 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task ActionSelection_NoConventionBasedRoutingForHeadAndOptions(string verb) { // Arrange - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - {"controller", "MixedRpcAndRest"}, - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "MixedRpcAndRest" }, + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal(null, result); @@ -108,16 +105,15 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task ActionSelection_ActionNameBasedRoutingForHeadAndOptions(string verb) { // Arrange - var requestContext = new RequestContext( - GetHttpContext(verb), - new Dictionary - { - { "controller", "MixedRpcAndRest" }, - { "action", verb }, - }); + var routeContext = new RouteContext(GetHttpContext(verb)); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "MixedRpcAndRest" }, + { "action", verb }, + }; // Act - var result = await InvokeActionSelector(requestContext); + var result = await InvokeActionSelector(routeContext); // Assert Assert.Equal(verb, result.Name, StringComparer.OrdinalIgnoreCase); @@ -127,15 +123,14 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task ActionSelection_ChangeDefaultConventionPicksCustomMethodForPost_DefaultMethodIsSelectedForGet() { // Arrange - var requestContext = new RequestContext( - GetHttpContext("GET"), - new Dictionary - { - { "controller", "RpcOnly" } - }); + var routeContext = new RouteContext(GetHttpContext("GET")); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "RpcOnly" } + }; // Act - var result = await InvokeActionSelector(requestContext, new CustomActionConvention()); + var result = await InvokeActionSelector(routeContext, new CustomActionConvention()); // Assert Assert.Equal("INDEX", result.Name, StringComparer.OrdinalIgnoreCase); @@ -145,26 +140,25 @@ namespace Microsoft.AspNet.Mvc.Core.Test public async Task ActionSelection_ChangeDefaultConventionPicksCustomMethodForPost_CutomMethodIsSelected() { // Arrange - var requestContext = new RequestContext( - GetHttpContext("POST"), - new Dictionary - { - { "controller", "RpcOnly" } - }); + var routeContext = new RouteContext(GetHttpContext("POST")); + routeContext.RouteData.Values = new Dictionary + { + { "controller", "RpcOnly" } + }; // Act - var result = await InvokeActionSelector(requestContext, new CustomActionConvention()); + var result = await InvokeActionSelector(routeContext, new CustomActionConvention()); // Assert Assert.Equal("PostSomething", result.Name); } - private async Task InvokeActionSelector(RequestContext context) + private async Task InvokeActionSelector(RouteContext context) { return await InvokeActionSelector(context, _actionDiscoveryConventions); } - private async Task InvokeActionSelector(RequestContext context, DefaultActionDiscoveryConventions actionDiscoveryConventions) + private async Task InvokeActionSelector(RouteContext context, DefaultActionDiscoveryConventions actionDiscoveryConventions) { var actionDescriptorProvider = GetActionDescriptorProvider(actionDiscoveryConventions); var descriptorProvider = diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/DefaultActionSelectorTest.cs b/test/Microsoft.AspNet.Mvc.Core.Test/DefaultActionSelectorTest.cs index 24336a72bb..752d07cc4d 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/DefaultActionSelectorTest.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/DefaultActionSelectorTest.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // 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 System.Threading.Tasks; @@ -217,7 +218,7 @@ namespace Microsoft.AspNet.Mvc.Core.Test var actions = new ActionDescriptor[] { actionWithConstraints, actionWithoutConstraints }; var selector = CreateSelector(actions); - var context = new RequestContext(CreateHttpContext("POST"), new Dictionary()); + var context = CreateRouteContext("POST"); // Act var action = await selector.SelectAsync(context); @@ -285,16 +286,27 @@ namespace Microsoft.AspNet.Mvc.Core.Test new RouteValueDictionary(routeValues)); } - private static HttpContext CreateHttpContext(string httpMethod) + private static RouteContext CreateRouteContext(string httpMethod) { - var context = new Mock(MockBehavior.Strict); + var routeData = new RouteData() + { + Values = new Dictionary(StringComparer.OrdinalIgnoreCase), + }; + + routeData.Routers.Push(new Mock(MockBehavior.Strict).Object); + + var httpContext = new Mock(MockBehavior.Strict); var request = new Mock(MockBehavior.Strict); - context.SetupGet(c => c.Request).Returns(request.Object); + httpContext.SetupGet(c => c.Request).Returns(request.Object); request.SetupGet(r => r.Method).Returns(httpMethod); + request.SetupGet(r => r.Path).Returns(new PathString()); - return context.Object; + return new RouteContext(httpContext.Object) + { + RouteData = routeData, + }; } private static ActionDescriptor CreateAction(string area, string controller, string action) diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/Filters/AuthorizeAttributeTestsBase.cs b/test/Microsoft.AspNet.Mvc.Core.Test/Filters/AuthorizeAttributeTestsBase.cs index ed2710bf66..6b74a9ea32 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/Filters/AuthorizeAttributeTestsBase.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/Filters/AuthorizeAttributeTestsBase.cs @@ -8,6 +8,7 @@ using Microsoft.AspNet.Http; using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection.Fallback; using Moq; +using Microsoft.AspNet.Routing; namespace Microsoft.AspNet.Mvc.Core.Test { @@ -40,8 +41,7 @@ namespace Microsoft.AspNet.Mvc.Core.Test // AuthorizationContext var actionContext = new ActionContext( httpContext: httpContext.Object, - router: null, - routeValues: null, + routeData: new RouteData(), actionDescriptor: null ); diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/JsonResultTest.cs b/test/Microsoft.AspNet.Mvc.Core.Test/JsonResultTest.cs index de3cfe2545..0a5f754008 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/JsonResultTest.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/JsonResultTest.cs @@ -31,9 +31,8 @@ namespace Microsoft.AspNet.Mvc var context = new Mock(); context.SetupGet(c => c.Response) .Returns(response.Object); - var actionContext = new ActionContext(context.Object, - Mock.Of(), - new Dictionary(), + var actionContext = new ActionContext(context.Object, + new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); @@ -57,8 +56,7 @@ namespace Microsoft.AspNet.Mvc context.SetupGet(c => c.Response) .Returns(response.Object); var actionContext = new ActionContext(context.Object, - Mock.Of(), - new Dictionary(), + new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }) { diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ReflectedActionInvokerTest.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ReflectedActionInvokerTest.cs index ec3f81742e..9f77e9569e 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ReflectedActionInvokerTest.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ReflectedActionInvokerTest.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNet.Http; +using Microsoft.AspNet.Routing; using Microsoft.AspNet.Testing; using Microsoft.Framework.DependencyInjection; using Moq; @@ -1291,8 +1292,7 @@ namespace Microsoft.AspNet.Mvc var actionContext = new ActionContext( httpContext: httpContext.Object, - router: null, - routeValues: null, + routeData: new RouteData(), actionDescriptor: actionDescriptor); var controllerFactory = new Mock(MockBehavior.Strict); diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/Rendering/ViewContextTests.cs b/test/Microsoft.AspNet.Mvc.Core.Test/Rendering/ViewContextTests.cs index 1f5436bc8d..af31fdd291 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/Rendering/ViewContextTests.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/Rendering/ViewContextTests.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNet.Mvc.Rendering public void SettingViewData_AlsoUpdatesViewBag() { // Arrange (eventually passing null to these consturctors will throw) - var context = new ViewContext(new ActionContext(null, null, null, null), view: null, viewData: null, writer: null); + var context = new ViewContext(new ActionContext(null, null, null), view: null, viewData: null, writer: null); var originalViewData = context.ViewData = new ViewDataDictionary(metadataProvider: null); var replacementViewData = new ViewDataDictionary(metadataProvider: null); diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/UrlHelperTest.cs b/test/Microsoft.AspNet.Mvc.Core.Test/UrlHelperTest.cs index ce81cf3d5b..489b14e7ad 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/UrlHelperTest.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/UrlHelperTest.cs @@ -466,9 +466,12 @@ namespace Microsoft.AspNet.Mvc.Core.Test private static IContextAccessor CreateActionContext(HttpContext context, IRouter router) { + var routeData = new RouteData(); + routeData.Values = new Dictionary(StringComparer.OrdinalIgnoreCase); + routeData.Routers.Push(router); + var actionContext = new ActionContext(context, - router, - new Dictionary(), + routeData, new ActionDescriptor()); var contextAccessor = new Mock>(); contextAccessor.SetupGet(c => c.Value) diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ViewResultTest.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ViewResultTest.cs index 9e744129f8..09c4991692 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ViewResultTest.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ViewResultTest.cs @@ -32,8 +32,7 @@ namespace Microsoft.AspNet.Mvc.Core.Test .Returns(response.Object); var routeDictionary = new Dictionary(); var actionContext = new ActionContext(context.Object, - Mock.Of(), - routeDictionary, + new RouteData() { Values = routeDictionary }, new ActionDescriptor()); var view = new Mock(); view.Setup(v => v.RenderAsync(It.IsAny())) @@ -73,8 +72,7 @@ namespace Microsoft.AspNet.Mvc.Core.Test .Returns(response.Object); var routeDictionary = new Dictionary(); var actionContext = new ActionContext(context.Object, - Mock.Of(), - routeDictionary, + new RouteData() { Values = routeDictionary }, new ActionDescriptor()); var view = new Mock(); view.Setup(v => v.RenderAsync(It.IsAny())) diff --git a/test/Microsoft.AspNet.Mvc.ModelBinding.Test/ValueProviders/FormValueProviderFactoryTests.cs b/test/Microsoft.AspNet.Mvc.ModelBinding.Test/ValueProviders/FormValueProviderFactoryTests.cs index 0f3ab9a7de..06803cab03 100644 --- a/test/Microsoft.AspNet.Mvc.ModelBinding.Test/ValueProviders/FormValueProviderFactoryTests.cs +++ b/test/Microsoft.AspNet.Mvc.ModelBinding.Test/ValueProviders/FormValueProviderFactoryTests.cs @@ -6,8 +6,10 @@ using System.Collections.Generic; using System.Globalization; using System.Threading.Tasks; using Microsoft.AspNet.Http; +using Microsoft.AspNet.Routing; using Moq; using Xunit; +using System; namespace Microsoft.AspNet.Mvc.ModelBinding.Test { @@ -44,7 +46,7 @@ namespace Microsoft.AspNet.Mvc.ModelBinding.Test Assert.Equal(CultureInfo.CurrentCulture, valueProvider.Culture); } - private static RequestContext CreateRequestContext(string contentType) + private static RouteContext CreateRequestContext(string contentType) { var collection = Mock.Of(); var request = new Mock(); @@ -56,9 +58,10 @@ namespace Microsoft.AspNet.Mvc.ModelBinding.Test var context = new Mock(); context.SetupGet(c => c.Request).Returns(request.Object); - - var requestContext = new RequestContext(context.Object, new Dictionary()); - return requestContext; + + var routeContext = new RouteContext(context.Object); + routeContext.RouteData.Values = new Dictionary(StringComparer.OrdinalIgnoreCase); + return routeContext; } } } diff --git a/test/Microsoft.AspNet.Mvc.ModelBinding.Test/ValueProviders/QueryStringValueProviderFactoryTest.cs b/test/Microsoft.AspNet.Mvc.ModelBinding.Test/ValueProviders/QueryStringValueProviderFactoryTest.cs index a93c78df71..9ed37bd366 100644 --- a/test/Microsoft.AspNet.Mvc.ModelBinding.Test/ValueProviders/QueryStringValueProviderFactoryTest.cs +++ b/test/Microsoft.AspNet.Mvc.ModelBinding.Test/ValueProviders/QueryStringValueProviderFactoryTest.cs @@ -8,6 +8,8 @@ using Microsoft.AspNet.Http; using Moq; #endif using Xunit; +using Microsoft.AspNet.Routing; +using System; namespace Microsoft.AspNet.Mvc.ModelBinding.Test { @@ -25,10 +27,11 @@ namespace Microsoft.AspNet.Mvc.ModelBinding.Test var context = new Mock(); context.SetupGet(c => c.Items).Returns(new Dictionary()); context.SetupGet(c => c.Request).Returns(request.Object); - var requestContext = new RequestContext(context.Object, new Dictionary()); + var routeContext = new RouteContext(context.Object); + routeContext.RouteData.Values = new Dictionary(StringComparer.OrdinalIgnoreCase); // Act - var result = _factory.GetValueProvider(requestContext); + var result = _factory.GetValueProvider(routeContext); // Assert var valueProvider = Assert.IsType(result); diff --git a/test/Microsoft.AspNet.Mvc.ModelBinding.Test/project.json b/test/Microsoft.AspNet.Mvc.ModelBinding.Test/project.json index f45672db90..ec8109bcf0 100644 --- a/test/Microsoft.AspNet.Mvc.ModelBinding.Test/project.json +++ b/test/Microsoft.AspNet.Mvc.ModelBinding.Test/project.json @@ -7,6 +7,7 @@ "Microsoft.AspNet.Http": "0.1-alpha-*", "Microsoft.AspNet.Mvc.ModelBinding" : "", "Microsoft.AspNet.PipelineCore": "0.1-alpha-*", + "Microsoft.AspNet.Routing": "0.1-alpha-*", "Microsoft.AspNet.Testing": "0.1-alpha-*", "Microsoft.DataAnnotations" : "0.1-alpha-*", "Microsoft.Framework.DependencyInjection": "0.1-alpha-*", diff --git a/test/Microsoft.AspNet.Mvc.Razor.Test/RazorViewTest.cs b/test/Microsoft.AspNet.Mvc.Razor.Test/RazorViewTest.cs index 2ea11ee061..33b827430e 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Test/RazorViewTest.cs +++ b/test/Microsoft.AspNet.Mvc.Razor.Test/RazorViewTest.cs @@ -303,7 +303,7 @@ Layout end var httpContext = new Mock(); httpContext.SetupGet(c => c.RequestServices).Returns(serviceProvider.Object); - var actionContext = new ActionContext(httpContext.Object, null, null, null); + var actionContext = new ActionContext(httpContext.Object, null, null); return new ViewContext( actionContext, layoutView,