public void FilterImplementingMultipleType_WhereOneTypeIsOverridden_AppearsOnlyInTheOtherList() { // Arrange IFilter expectedInstance = new ActionAndExceptionFilter(); FilterInfo actionAndExceptionFilter = new FilterInfo( expectedInstance, FilterScope.Global ); FilterInfo overrideExceptionFilter = new FilterInfo( CreateOverride(typeof(IExceptionFilter)), FilterScope.Action ); IEnumerable <FilterInfo> filters = new FilterInfo[] { actionAndExceptionFilter, overrideExceptionFilter }; FilterGrouping product = CreateProductUnderTest(filters); // Act IActionFilter[] actionFilters = product.ActionFilters; IExceptionFilter[] exceptionFilters = product.ExceptionFilters; // Assert Assert.NotNull(actionFilters); IActionFilter actionFilter = Assert.Single(actionFilters); Assert.Same(expectedInstance, actionFilter); Assert.NotNull(exceptionFilters); Assert.Empty(exceptionFilters); }
public void ActionFilters_ReturnsAllActionFilters_WhenOverrideScopeIsGlobal() { // Arrange IActionFilter expectedGlobalFilter = CreateDummyActionFilter(); FilterInfo globalFilter = new FilterInfo(expectedGlobalFilter, FilterScope.Global); IActionFilter expectedControllerFilter = CreateDummyActionFilter(); FilterInfo controllerFilter = new FilterInfo( expectedControllerFilter, FilterScope.Controller ); IActionFilter expectedActionFilter = CreateDummyActionFilter(); FilterInfo actionFilter = new FilterInfo(expectedActionFilter, FilterScope.Action); FilterInfo overrideFilter = new FilterInfo( CreateOverride(typeof(IActionFilter)), FilterScope.Global ); IEnumerable <FilterInfo> filters = new FilterInfo[] { globalFilter, controllerFilter, actionFilter, overrideFilter }; FilterGrouping product = CreateProductUnderTest(filters); // Act IActionFilter[] actionFilters = product.ActionFilters; // Assert Assert.NotNull(actionFilters); Assert.Equal(3, actionFilters.Length); Assert.Same(expectedGlobalFilter, actionFilters[0]); Assert.Same(expectedControllerFilter, actionFilters[1]); Assert.Same(expectedActionFilter, actionFilters[2]); }
public void ExceptionFilters_ReturnsActionScopeExceptionFilters_WhenOverrideScopeIsAction() { // Arrange IExceptionFilter expectedGlobalFilter = CreateDummyExceptionFilter(); FilterInfo globalFilter = new FilterInfo(expectedGlobalFilter, FilterScope.Global); IExceptionFilter expectedControllerFilter = CreateDummyExceptionFilter(); FilterInfo controllerFilter = new FilterInfo( expectedControllerFilter, FilterScope.Controller ); IExceptionFilter expectedActionFilter = CreateDummyExceptionFilter(); FilterInfo actionFilter = new FilterInfo(expectedActionFilter, FilterScope.Action); FilterInfo overrideFilter = new FilterInfo( CreateOverride(typeof(IExceptionFilter)), FilterScope.Action ); IEnumerable <FilterInfo> filters = new FilterInfo[] { globalFilter, controllerFilter, actionFilter, overrideFilter }; FilterGrouping product = CreateProductUnderTest(filters); // Act IExceptionFilter[] exceptionFilters = product.ExceptionFilters; // Assert Assert.NotNull(exceptionFilters); IExceptionFilter exceptionFilter = Assert.Single(exceptionFilters); Assert.Same(expectedActionFilter, exceptionFilter); }
public void ActionFilters_ReturnsEmptyArray_WhenFiltersIsEmpty() { // Arrange IEnumerable <FilterInfo> filters = CreateEmptyFilters(); FilterGrouping product = CreateProductUnderTest(filters); // Act IActionFilter[] actionFilters = product.ActionFilters; // Assert Assert.NotNull(actionFilters); Assert.Empty(actionFilters); }
internal FilterGrouping GetFilterGrouping() { // Performance-sensitive // Filter grouping is expensive so cache whenever possible // For compatibility, the virtual method must be called Collection <FilterInfo> currentFilterPipeline = GetFilterPipeline(); if (_filterGrouping == null || _filterPipelineForGrouping != currentFilterPipeline) { _filterGrouping = new FilterGrouping(currentFilterPipeline); _filterPipelineForGrouping = currentFilterPipeline; } return(_filterGrouping); }