diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/CompiledPageActionDescriptorBuilder.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/CompiledPageActionDescriptorBuilder.cs index c529c7bb4f..8fec2fd4a8 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/CompiledPageActionDescriptorBuilder.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/CompiledPageActionDescriptorBuilder.cs @@ -18,12 +18,16 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal /// Creates a from the specified . /// /// The . + /// Global filters to apply to the page. /// The . - public static CompiledPageActionDescriptor Build(PageApplicationModel applicationModel) + public static CompiledPageActionDescriptor Build( + PageApplicationModel applicationModel, + FilterCollection globalFilters) { var boundProperties = CreateBoundProperties(applicationModel); - var filters = applicationModel.Filters - .Select(f => new FilterDescriptor(f, FilterScope.Action)) + var filters = Enumerable.Concat( + globalFilters.Select(f => new FilterDescriptor(f, FilterScope.Global)), + applicationModel.Filters.Select(f => new FilterDescriptor(f, FilterScope.Action))) .ToArray(); var handlerMethods = CreateHandlerMethods(applicationModel); diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/DefaultPageApplicationModelProvider.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/DefaultPageApplicationModelProvider.cs index f253913c93..5e09d1519a 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/DefaultPageApplicationModelProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/DefaultPageApplicationModelProvider.cs @@ -16,16 +16,6 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public class DefaultPageApplicationModelProvider : IPageApplicationModelProvider { private const string ModelPropertyName = "Model"; - private readonly FilterCollection _globalFilters; - - /// - /// Initializes a new instance of . - /// - /// - public DefaultPageApplicationModelProvider(IOptions mvcOptions) - { - _globalFilters = mvcOptions.Value.Filters; - } /// public int Order => -1000; @@ -146,11 +136,6 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal internal void PopulateFilters(PageApplicationModel pageModel) { - for (var i = 0; i < _globalFilters.Count; i++) - { - pageModel.Filters.Add(_globalFilters[i]); - } - for (var i = 0; i < pageModel.HandlerTypeAttributes.Count; i++) { if (pageModel.HandlerTypeAttributes[i] is IFilterMetadata filter) diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/DefaultPageLoader.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/DefaultPageLoader.cs index 28ccd85e37..e31ed6d32b 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/DefaultPageLoader.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/DefaultPageLoader.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; using Microsoft.AspNetCore.Mvc.ApplicationModels; +using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.Razor.Compilation; using Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure; using Microsoft.Extensions.Options; @@ -17,11 +18,13 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal private readonly IPageApplicationModelProvider[] _applicationModelProviders; private readonly IViewCompilerProvider _viewCompilerProvider; private readonly IPageApplicationModelConvention[] _conventions; + private readonly FilterCollection _globalFilters; public DefaultPageLoader( IEnumerable applicationModelProviders, IViewCompilerProvider viewCompilerProvider, - IOptions pageOptions) + IOptions pageOptions, + IOptions mvcOptions) { _applicationModelProviders = applicationModelProviders .OrderBy(p => p.Order) @@ -30,6 +33,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal _conventions = pageOptions.Value.Conventions .OfType() .ToArray(); + _globalFilters = mvcOptions.Value.Filters; } private IViewCompiler Compiler => _viewCompilerProvider.GetCompiler(); @@ -61,7 +65,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal _conventions[i].Apply(context.PageApplicationModel); } - return CompiledPageActionDescriptorBuilder.Build(context.PageApplicationModel); + return CompiledPageActionDescriptorBuilder.Build(context.PageApplicationModel, _globalFilters); } } } \ No newline at end of file diff --git a/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/AuthorizationPageApplicationModelProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/AuthorizationPageApplicationModelProviderTest.cs index 7da47e9589..feb20c2b98 100644 --- a/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/AuthorizationPageApplicationModelProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/AuthorizationPageApplicationModelProviderTest.cs @@ -151,7 +151,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal private static PageApplicationModelProviderContext GetApplicationProviderContext(TypeInfo typeInfo) { - var defaultProvider = new DefaultPageApplicationModelProvider(new TestOptionsManager()); + var defaultProvider = new DefaultPageApplicationModelProvider(); var context = new PageApplicationModelProviderContext(new PageActionDescriptor(), typeInfo); defaultProvider.OnProvidersExecuting(context); return context; diff --git a/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/CompiledPageActionDescriptorBuilderTest.cs b/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/CompiledPageActionDescriptorBuilderTest.cs index ca13fb3f37..e6b45a8c84 100644 --- a/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/CompiledPageActionDescriptorBuilderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/CompiledPageActionDescriptorBuilderTest.cs @@ -31,9 +31,10 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal }; var handlerTypeInfo = typeof(object).GetTypeInfo(); var pageApplicationModel = new PageApplicationModel(actionDescriptor, handlerTypeInfo, new object[0]); + var globalFilters = new FilterCollection(); // Act - var actual = CompiledPageActionDescriptorBuilder.Build(pageApplicationModel); + var actual = CompiledPageActionDescriptorBuilder.Build(pageApplicationModel, globalFilters); // Assert Assert.Same(actionDescriptor.ActionConstraints, actual.ActionConstraints); @@ -78,9 +79,10 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal }, } }; + var globalFilters = new FilterCollection(); // Act - var actual = CompiledPageActionDescriptorBuilder.Build(pageApplicationModel); + var actual = CompiledPageActionDescriptorBuilder.Build(pageApplicationModel, globalFilters); // Assert Assert.Same(pageApplicationModel.PageType, actual.PageTypeInfo); @@ -92,6 +94,52 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal Assert.Equal(pageApplicationModel.HandlerProperties.Select(p => p.PropertyName), actual.BoundProperties.Select(p => p.Name)); } + [Fact] + public void CreateDescriptor_AddsGlobalFiltersWithTheRightScope() + { + // Arrange + var actionDescriptor = new PageActionDescriptor + { + ActionConstraints = new List(), + AttributeRouteInfo = new AttributeRouteInfo(), + FilterDescriptors = new List(), + RelativePath = "/Foo", + RouteValues = new Dictionary(), + ViewEnginePath = "/Pages/Foo", + }; + var handlerTypeInfo = typeof(TestModel).GetTypeInfo(); + var pageApplicationModel = new PageApplicationModel(actionDescriptor, handlerTypeInfo, new object[0]) + { + PageType = typeof(TestPage).GetTypeInfo(), + ModelType = typeof(TestModel).GetTypeInfo(), + Filters = + { + Mock.Of(), + }, + }; + var globalFilters = new FilterCollection + { + Mock.Of(), + }; + + // Act + var compiledPageActionDescriptor = CompiledPageActionDescriptorBuilder.Build(pageApplicationModel, globalFilters); + + // Assert + Assert.Collection( + compiledPageActionDescriptor.FilterDescriptors, + filterDescriptor => + { + Assert.Same(globalFilters[0], filterDescriptor.Filter); + Assert.Equal(FilterScope.Global, filterDescriptor.Scope); + }, + filterDescriptor => + { + Assert.Same(pageApplicationModel.Filters[0], filterDescriptor.Filter); + Assert.Equal(FilterScope.Action, filterDescriptor.Scope); + }); + } + private class TestPage { public TestModel Model { get; } = new TestModel(); diff --git a/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/DefaultPageApplicationModelProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/DefaultPageApplicationModelProviderTest.cs index ca4e47583b..fca35d2c75 100644 --- a/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/DefaultPageApplicationModelProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/DefaultPageApplicationModelProviderTest.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_ThrowsIfPageDoesNotDeriveFromValidBaseType() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(InvalidPageWithWrongBaseClass).GetTypeInfo(); var descriptor = new PageActionDescriptor(); var context = new PageApplicationModelProviderContext(descriptor, typeInfo); @@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_ThrowsIfModelPropertyDoesNotExistOnPage() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithoutModelProperty).GetTypeInfo(); var descriptor = new PageActionDescriptor(); var context = new PageApplicationModelProviderContext(descriptor, typeInfo); @@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_ThrowsIfModelPropertyIsNotPublic() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithNonVisibleModel).GetTypeInfo(); var descriptor = new PageActionDescriptor(); var context = new PageApplicationModelProviderContext(descriptor, typeInfo); @@ -110,7 +110,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_ThrowsIfModelPropertyIsStatic() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithStaticModel).GetTypeInfo(); var descriptor = new PageActionDescriptor(); var context = new PageApplicationModelProviderContext(descriptor, typeInfo); @@ -135,7 +135,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_DiscoversPropertiesFromPage_IfModelTypeDoesNotHaveAttribute() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithModelWithoutPageModelAttribute).GetTypeInfo(); var descriptor = new PageActionDescriptor(); var context = new PageApplicationModelProviderContext(descriptor, typeInfo); @@ -189,7 +189,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_DiscoversPropertiesFromPageModel_IfModelHasAttribute() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithModelWithPageModelAttribute).GetTypeInfo(); var modelType = typeof(ModelWithPageModelAttribute); var descriptor = new PageActionDescriptor(); @@ -233,7 +233,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_DiscoversHandlersFromPage() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithModelWithoutHandlers).GetTypeInfo(); var descriptor = new PageActionDescriptor(); var context = new PageApplicationModelProviderContext(descriptor, typeInfo); @@ -275,7 +275,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_DiscoversPropertiesFromModel() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithModel).GetTypeInfo(); var modelType = typeof(TestPageModel); var descriptor = new PageActionDescriptor(); @@ -309,7 +309,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_DiscoversHandlersFromModel() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithModel).GetTypeInfo(); var modelType = typeof(TestPageModel); var descriptor = new PageActionDescriptor(); @@ -337,7 +337,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_EmptyPage() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(EmptyPage).GetTypeInfo(); var context = new PageApplicationModelProviderContext(new PageActionDescriptor(), typeInfo); @@ -358,7 +358,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_EmptyPageModel() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(EmptyPageWithPageModel).GetTypeInfo(); var context = new PageApplicationModelProviderContext(new PageActionDescriptor(), typeInfo); @@ -426,7 +426,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void CreateDescriptor_FindsHandlerMethod_OnModel() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithHandlerThatGetsIgnored).GetTypeInfo(); var modelType = typeof(ModelWithHandler); var context = new PageApplicationModelProviderContext(new PageActionDescriptor(), typeInfo); @@ -473,7 +473,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void OnProvidersExecuting_FindsHandlerMethodOnPage_WhenModelIsNotAnnotatedWithPageModelAttribute() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithHandler).GetTypeInfo(); var context = new PageApplicationModelProviderContext(new PageActionDescriptor(), typeInfo); @@ -524,7 +524,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void PopulateHandlerMethods_DiscoversHandlersFromBaseType() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(InheritsMethods).GetTypeInfo(); var baseType = typeof(TestSetPageModel); var pageModel = new PageApplicationModel(new PageActionDescriptor(), typeInfo, new object[0]); @@ -575,7 +575,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void PopulateHandlerMethods_IgnoresNonPublicMethods() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(ProtectedModel).GetTypeInfo(); var baseType = typeof(TestSetPageModel); var pageModel = new PageApplicationModel(new PageActionDescriptor(), typeInfo, new object[0]); @@ -603,7 +603,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void PopulateHandlerMethods_IgnoreGenericTypeParameters() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(GenericClassModel).GetTypeInfo(); var pageModel = new PageApplicationModel(new PageActionDescriptor(), typeInfo, new object[0]); @@ -626,7 +626,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void PopulateHandlerMethods_IgnoresStaticMethods() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageModelWithStaticHandler).GetTypeInfo(); var expected = typeInfo.GetMethod(nameof(PageModelWithStaticHandler.OnGet), BindingFlags.Public | BindingFlags.Instance); var pageModel = new PageApplicationModel(new PageActionDescriptor(), typeInfo, new object[0]); @@ -656,7 +656,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void PopulateHandlerMethods_IgnoresAbstractMethods() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageModelWithAbstractMethod).GetTypeInfo(); var expected = typeInfo.GetMethod(nameof(PageModelWithAbstractMethod.OnGet), BindingFlags.Public | BindingFlags.Instance); var pageModel = new PageApplicationModel(new PageActionDescriptor(), typeInfo, new object[0]); @@ -684,7 +684,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void PopulateHandlerMethods_IgnoresMethodWithNonHandlerAttribute() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithNonHandlerMethod).GetTypeInfo(); var expected = typeInfo.GetMethod(nameof(PageWithNonHandlerMethod.OnGet), BindingFlags.Public | BindingFlags.Instance); var pageModel = new PageApplicationModel(new PageActionDescriptor(), typeInfo, new object[0]); @@ -715,7 +715,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void CreateHandlerModel_ParsesMethod() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageModelWithHandlerNames).GetTypeInfo(); var pageModel = new PageApplicationModel(new PageActionDescriptor(), typeInfo, new object[0]); @@ -749,7 +749,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void CreateHandlerMethods_AddsParameterDescriptors() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(PageWithHandlerParameters).GetTypeInfo(); var expected = typeInfo.GetMethod(nameof(PageWithHandlerParameters.OnPost)); var pageModel = new PageApplicationModel(new PageActionDescriptor(), typeInfo, new object[0]); @@ -793,7 +793,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void PopulateHandlerProperties_UsesPropertyHelpers_ToFindProperties() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(HidesAProperty).GetTypeInfo(); var pageModel = new PageApplicationModel(new PageActionDescriptor(), typeInfo, new object[0]); @@ -826,7 +826,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public void PopulateHandlerProperties_SupportsGet_OnProperty() { // Arrange - var provider = new TestPageApplicationModelProvider(); + var provider = new DefaultPageApplicationModelProvider(); var typeInfo = typeof(ModelSupportsGetOnProperty).GetTypeInfo(); var pageModel = new PageApplicationModel(new PageActionDescriptor(), typeInfo, new object[0]); @@ -898,14 +898,6 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal Assert.Equal(expectedHandler, handler); } - private class TestPageApplicationModelProvider : DefaultPageApplicationModelProvider - { - public TestPageApplicationModelProvider(IOptions mvcOptions = null) - : base(mvcOptions : new TestOptionsManager()) - { - } - } - private class PageWithModelWithoutHandlers : Page { public ModelWithoutHandler Model { get; } diff --git a/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/DefaultPageLoaderTest.cs b/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/DefaultPageLoaderTest.cs index 2530d1e003..d9a2639e6b 100644 --- a/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/DefaultPageLoaderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/DefaultPageLoaderTest.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Reflection; +using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ApplicationModels; using Microsoft.AspNetCore.Mvc.Razor.Compilation; using Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure; @@ -20,7 +21,8 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal var compilerProvider = GetCompilerProvider(); - var options = new TestOptionsManager(); + var razorPagesOptions = new TestOptionsManager(); + var mvcOptions = new TestOptionsManager(); var provider1 = new Mock(); var provider2 = new Mock(); @@ -71,7 +73,8 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal var loader = new DefaultPageLoader( providers, compilerProvider, - options); + razorPagesOptions, + mvcOptions); // Act var result = loader.Load(new PageActionDescriptor()); @@ -87,7 +90,8 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal // Arrange var descriptor = new PageActionDescriptor(); var compilerProvider = GetCompilerProvider(); - var options = new TestOptionsManager(); + var razorPagesOptions = new TestOptionsManager(); + var mvcOptions = new TestOptionsManager(); var provider1 = new Mock(); provider1.SetupGet(p => p.Order).Returns(10); @@ -132,7 +136,8 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal var loader = new DefaultPageLoader( providers, compilerProvider, - options); + razorPagesOptions, + mvcOptions); // Act var result = loader.Load(new PageActionDescriptor()); @@ -159,19 +164,21 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal }); var providers = new[] { provider.Object }; - var options = new TestOptionsManager(); + var razorPagesOptions = new TestOptionsManager(); + var mvcOptions = new TestOptionsManager(); var convention = new Mock(); convention.Setup(c => c.Apply(It.IsAny())) .Callback((PageApplicationModel m) => { Assert.Same(model, m); }); - options.Value.Conventions.Add(convention.Object); + razorPagesOptions.Value.Conventions.Add(convention.Object); var loader = new DefaultPageLoader( providers, compilerProvider, - options); + razorPagesOptions, + mvcOptions); // Act var result = loader.Load(new PageActionDescriptor());