PR feedback to StatusCode filter.

This commit is contained in:
Praburaj 2015-02-18 11:07:28 -08:00
parent f3393db4f4
commit 1f98918f1f
2 changed files with 17 additions and 19 deletions

View File

@ -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 Microsoft.AspNet.Diagnostics;
namespace Microsoft.AspNet.Mvc
@ -8,10 +9,16 @@ namespace Microsoft.AspNet.Mvc
/// <summary>
/// Filter to prevent StatusCodePages middleware to handle responses.
/// </summary>
public class SkipStatusCodePagesAttribute : ResultFilterAttribute
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class SkipStatusCodePagesAttribute : Attribute, IResourceFilter
{
/// <inheritdoc />
public override void OnResultExecuted(ResultExecutedContext context)
public void OnResourceExecuted([NotNull]ResourceExecutedContext context)
{
}
/// <inheritdoc />
public void OnResourceExecuting([NotNull]ResourceExecutingContext context)
{
var statusCodeFeature = context.HttpContext.GetFeature<IStatusCodePagesFeature>();
if (statusCodeFeature != null)
@ -19,8 +26,6 @@ namespace Microsoft.AspNet.Mvc
// Turn off the StatusCodePages feature.
statusCodeFeature.Enabled = false;
}
base.OnResultExecuted(context);
}
}
}

View File

@ -15,12 +15,12 @@ namespace Microsoft.AspNet.Mvc.Core.Test
{
// Arrange
var skipStatusCodeAttribute = new SkipStatusCodePagesAttribute();
var resultExecutingContext = CreateResultExecutingContext(new IFilter[] { skipStatusCodeAttribute });
var resourceExecutingContext = CreateResourceExecutingContext(new IFilter[] { skipStatusCodeAttribute });
var statusCodePagesFeature = new TestStatusCodeFeature();
resultExecutingContext.HttpContext.SetFeature<IStatusCodePagesFeature>(statusCodePagesFeature);
resourceExecutingContext.HttpContext.SetFeature<IStatusCodePagesFeature>(statusCodePagesFeature);
// Act
skipStatusCodeAttribute.OnResultExecuted(CreateResultExecutedContext(resultExecutingContext));
skipStatusCodeAttribute.OnResourceExecuting(resourceExecutingContext);
// Assert
Assert.False(statusCodePagesFeature.Enabled);
@ -31,24 +31,17 @@ namespace Microsoft.AspNet.Mvc.Core.Test
{
// Arrange
var skipStatusCodeAttribute = new SkipStatusCodePagesAttribute();
var resultExecutingContext = CreateResultExecutingContext(new IFilter[] { skipStatusCodeAttribute });
var resourceExecutingContext = CreateResourceExecutingContext(new IFilter[] { skipStatusCodeAttribute });
// Act
skipStatusCodeAttribute.OnResultExecuted(CreateResultExecutedContext(resultExecutingContext));
skipStatusCodeAttribute.OnResourceExecuting(resourceExecutingContext);
}
private static ResultExecutedContext CreateResultExecutedContext(ResultExecutingContext context)
private static ResourceExecutingContext CreateResourceExecutingContext(IFilter[] filters)
{
return new ResultExecutedContext(context, context.Filters, context.Result, context.Controller);
}
private static ResultExecutingContext CreateResultExecutingContext(IFilter[] filters)
{
return new ResultExecutingContext(
return new ResourceExecutingContext(
CreateActionContext(),
filters,
new ObjectResult("Some Value"),
controller: new object());
filters);
}
private static ActionContext CreateActionContext()