Remove RuleResult, added to context.
This commit is contained in:
parent
f3b4658c2c
commit
28133b6808
|
|
@ -7,12 +7,12 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.CodeRules
|
||||||
{
|
{
|
||||||
public class DelegateRule : Rule
|
public class DelegateRule : Rule
|
||||||
{
|
{
|
||||||
private readonly Func<RewriteContext, RuleResult> _onApplyRule;
|
private readonly Action<RewriteContext> _onApplyRule;
|
||||||
|
|
||||||
public DelegateRule(Func<RewriteContext, RuleResult> onApplyRule)
|
public DelegateRule(Action<RewriteContext> onApplyRule)
|
||||||
{
|
{
|
||||||
_onApplyRule = onApplyRule;
|
_onApplyRule = onApplyRule;
|
||||||
}
|
}
|
||||||
public override RuleResult ApplyRule(RewriteContext context) => _onApplyRule(context);
|
public override void ApplyRule(RewriteContext context) => _onApplyRule(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.CodeRules
|
||||||
public int? SSLPort { get; set; }
|
public int? SSLPort { get; set; }
|
||||||
public int StatusCode { get; set; }
|
public int StatusCode { get; set; }
|
||||||
|
|
||||||
public override RuleResult ApplyRule(RewriteContext context)
|
public override void ApplyRule(RewriteContext context)
|
||||||
{
|
{
|
||||||
if (!context.HttpContext.Request.IsHttps)
|
if (!context.HttpContext.Request.IsHttps)
|
||||||
{
|
{
|
||||||
|
|
@ -31,9 +31,8 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.CodeRules
|
||||||
|
|
||||||
var newUrl = new StringBuilder().Append("https://").Append(host).Append(req.PathBase).Append(req.Path).Append(req.QueryString);
|
var newUrl = new StringBuilder().Append("https://").Append(host).Append(req.PathBase).Append(req.Path).Append(req.QueryString);
|
||||||
context.HttpContext.Response.Redirect(newUrl.ToString());
|
context.HttpContext.Response.Redirect(newUrl.ToString());
|
||||||
return RuleResult.ResponseComplete;
|
context.Result = RuleTermination.ResponseComplete;
|
||||||
}
|
}
|
||||||
return RuleResult.Continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite
|
||||||
EscapeBackReferences = escapeBackReferences;
|
EscapeBackReferences = escapeBackReferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
||||||
{
|
{
|
||||||
var pattern = Url.Evaluate(context, ruleMatch, condMatch);
|
var pattern = Url.Evaluate(context, ruleMatch, condMatch);
|
||||||
if (EscapeBackReferences)
|
if (EscapeBackReferences)
|
||||||
|
|
@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite
|
||||||
context.HttpContext.Response.Headers[HeaderNames.Location] = pattern + context.HttpContext.Request.QueryString;
|
context.HttpContext.Response.Headers[HeaderNames.Location] = pattern + context.HttpContext.Request.QueryString;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return RuleResult.ResponseComplete;
|
context.Result = RuleTermination.ResponseComplete;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,13 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite
|
||||||
public class ModRewriteRewriteAction : UrlAction
|
public class ModRewriteRewriteAction : UrlAction
|
||||||
{
|
{
|
||||||
private readonly string ForwardSlash = "/";
|
private readonly string ForwardSlash = "/";
|
||||||
public RuleResult Result { get; }
|
public RuleTermination Result { get; }
|
||||||
public bool QueryStringAppend { get; }
|
public bool QueryStringAppend { get; }
|
||||||
public bool QueryStringDelete { get; }
|
public bool QueryStringDelete { get; }
|
||||||
public bool EscapeBackReferences { get; }
|
public bool EscapeBackReferences { get; }
|
||||||
|
|
||||||
public ModRewriteRewriteAction(
|
public ModRewriteRewriteAction(
|
||||||
RuleResult result,
|
RuleTermination result,
|
||||||
Pattern pattern,
|
Pattern pattern,
|
||||||
bool queryStringAppend,
|
bool queryStringAppend,
|
||||||
bool queryStringDelete,
|
bool queryStringDelete,
|
||||||
|
|
@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite
|
||||||
EscapeBackReferences = escapeBackReferences;
|
EscapeBackReferences = escapeBackReferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
||||||
{
|
{
|
||||||
var pattern = Url.Evaluate(context, ruleMatch, condMatch);
|
var pattern = Url.Evaluate(context, ruleMatch, condMatch);
|
||||||
|
|
||||||
|
|
@ -107,7 +107,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Result;
|
context.Result = Result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -215,8 +215,8 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.ModRewrite
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var last = flags.HasFlag(FlagType.End) || flags.HasFlag(FlagType.Last);
|
var last = flags.HasFlag(FlagType.End) || flags.HasFlag(FlagType.Last);
|
||||||
var redirect = last ? RuleResult.StopRules : RuleResult.Continue;
|
var termination = last ? RuleTermination.StopRules : RuleTermination.Continue;
|
||||||
_action = new ModRewriteRewriteAction(redirect, pattern, queryStringAppend, queryStringDelete, escapeBackReference);
|
_action = new ModRewriteRewriteAction(termination, pattern, queryStringAppend, queryStringDelete, escapeBackReference);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal
|
||||||
PreActions = preActions;
|
PreActions = preActions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override RuleResult ApplyRule(RewriteContext context)
|
public override void ApplyRule(RewriteContext context)
|
||||||
{
|
{
|
||||||
// 1. Figure out which section of the string to match for the initial rule.
|
// 1. Figure out which section of the string to match for the initial rule.
|
||||||
var initMatchRes = InitialMatch.Evaluate(context.HttpContext.Request.Path, context);
|
var initMatchRes = InitialMatch.Evaluate(context.HttpContext.Request.Path, context);
|
||||||
|
|
@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal
|
||||||
if (!initMatchRes.Success)
|
if (!initMatchRes.Success)
|
||||||
{
|
{
|
||||||
context.Logger?.ModRewriteDidNotMatchRule();
|
context.Logger?.ModRewriteDidNotMatchRule();
|
||||||
return RuleResult.Continue;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MatchResults condMatchRes = null;
|
MatchResults condMatchRes = null;
|
||||||
|
|
@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal
|
||||||
if (!condMatchRes.Success)
|
if (!condMatchRes.Success)
|
||||||
{
|
{
|
||||||
context.Logger?.ModRewriteDidNotMatchRule();
|
context.Logger?.ModRewriteDidNotMatchRule();
|
||||||
return RuleResult.Continue;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal
|
||||||
preAction.ApplyAction(context.HttpContext, initMatchRes, condMatchRes);
|
preAction.ApplyAction(context.HttpContext, initMatchRes, condMatchRes);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Action.ApplyAction(context, initMatchRes, condMatchRes);
|
Action.ApplyAction(context, initMatchRes, condMatchRes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,6 @@ namespace Microsoft.AspNetCore.Rewrite.Internal
|
||||||
public abstract class UrlAction
|
public abstract class UrlAction
|
||||||
{
|
{
|
||||||
protected Pattern Url { get; set; }
|
protected Pattern Url { get; set; }
|
||||||
public abstract RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch);
|
public abstract void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,10 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions
|
||||||
{
|
{
|
||||||
public class ForbiddenAction : UrlAction
|
public class ForbiddenAction : UrlAction
|
||||||
{
|
{
|
||||||
public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
||||||
{
|
{
|
||||||
context.HttpContext.Response.StatusCode = StatusCodes.Status403Forbidden;
|
context.HttpContext.Response.StatusCode = StatusCodes.Status403Forbidden;
|
||||||
return RuleResult.ResponseComplete;
|
context.Result = RuleTermination.ResponseComplete;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,10 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions
|
||||||
{
|
{
|
||||||
public class GoneAction : UrlAction
|
public class GoneAction : UrlAction
|
||||||
{
|
{
|
||||||
public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
||||||
{
|
{
|
||||||
context.HttpContext.Response.StatusCode = StatusCodes.Status410Gone;
|
context.HttpContext.Response.StatusCode = StatusCodes.Status410Gone;
|
||||||
return RuleResult.ResponseComplete;
|
context.Result = RuleTermination.ResponseComplete;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions
|
||||||
AppendQueryString = appendQueryString;
|
AppendQueryString = appendQueryString;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
||||||
{
|
{
|
||||||
var pattern = Url.Evaluate(context, ruleMatch, condMatch);
|
var pattern = Url.Evaluate(context, ruleMatch, condMatch);
|
||||||
context.HttpContext.Response.StatusCode = StatusCode;
|
context.HttpContext.Response.StatusCode = StatusCode;
|
||||||
|
|
@ -46,7 +46,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions
|
||||||
{
|
{
|
||||||
context.HttpContext.Response.Headers[HeaderNames.Location] = pattern;
|
context.HttpContext.Response.Headers[HeaderNames.Location] = pattern;
|
||||||
}
|
}
|
||||||
return RuleResult.ResponseComplete;
|
context.Result = RuleTermination.ResponseComplete;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions
|
||||||
ClearQuery = clearQuery;
|
ClearQuery = clearQuery;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
||||||
{
|
{
|
||||||
var pattern = Url.Evaluate(context, ruleMatch, condMatch);
|
var pattern = Url.Evaluate(context, ruleMatch, condMatch);
|
||||||
|
|
||||||
|
|
@ -73,7 +73,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new RuleResult { Result = Result };
|
context.Result = Result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,16 +5,16 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlActions
|
||||||
{
|
{
|
||||||
public class VoidAction : UrlAction
|
public class VoidAction : UrlAction
|
||||||
{
|
{
|
||||||
private readonly RuleResult _results;
|
public RuleTermination Result { get; }
|
||||||
|
|
||||||
public VoidAction(RuleResult results)
|
public VoidAction(RuleTermination result)
|
||||||
{
|
{
|
||||||
_results = results;
|
Result = result;
|
||||||
}
|
}
|
||||||
// Explicitly say that nothing happens
|
// Explicitly say that nothing happens
|
||||||
public override RuleResult ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
public override void ApplyAction(RewriteContext context, MatchResults ruleMatch, MatchResults condMatch)
|
||||||
{
|
{
|
||||||
return _results;
|
context.Result = Result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal.UrlRewrite
|
||||||
switch (actionType)
|
switch (actionType)
|
||||||
{
|
{
|
||||||
case ActionType.None:
|
case ActionType.None:
|
||||||
_action = new VoidAction(stopProcessing ? RuleResult.StopRules : RuleResult.Continue);
|
_action = new VoidAction(stopProcessing ? RuleTermination.StopRules : RuleTermination.Continue);
|
||||||
break;
|
break;
|
||||||
case ActionType.Rewrite:
|
case ActionType.Rewrite:
|
||||||
_action = new RewriteAction(stopProcessing ? RuleTermination.StopRules : RuleTermination.Continue,
|
_action = new RewriteAction(stopProcessing ? RuleTermination.StopRules : RuleTermination.Continue,
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal
|
||||||
Action = action;
|
Action = action;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override RuleResult ApplyRule(RewriteContext context)
|
public override void ApplyRule(RewriteContext context)
|
||||||
{
|
{
|
||||||
// Due to the path string always having a leading slash,
|
// Due to the path string always having a leading slash,
|
||||||
// remove it from the path before regex comparison
|
// remove it from the path before regex comparison
|
||||||
|
|
@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Rewrite.Internal
|
||||||
if (!initMatchResults.Success)
|
if (!initMatchResults.Success)
|
||||||
{
|
{
|
||||||
context.Logger?.UrlRewriteDidNotMatchRule(Name);
|
context.Logger?.UrlRewriteDidNotMatchRule(Name);
|
||||||
return RuleResult.Continue;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MatchResults condMatchRes = null;
|
MatchResults condMatchRes = null;
|
||||||
|
|
@ -53,13 +53,13 @@ namespace Microsoft.AspNetCore.Rewrite.Internal
|
||||||
if (!condMatchRes.Success)
|
if (!condMatchRes.Success)
|
||||||
{
|
{
|
||||||
context.Logger?.UrlRewriteDidNotMatchRule(Name);
|
context.Logger?.UrlRewriteDidNotMatchRule(Name);
|
||||||
return RuleResult.Continue;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
context.Logger?.UrlRewriteMatchedRule(Name);
|
context.Logger?.UrlRewriteMatchedRule(Name);
|
||||||
// at this point we know the rule passed, evaluate the replacement.
|
// at this point we know the rule passed, evaluate the replacement.
|
||||||
return Action.ApplyAction(context, initMatchResults, condMatchRes);
|
Action.ApplyAction(context, initMatchResults, condMatchRes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -17,6 +17,7 @@ namespace Microsoft.AspNetCore.Rewrite
|
||||||
public HttpContext HttpContext { get; set; }
|
public HttpContext HttpContext { get; set; }
|
||||||
public IFileProvider StaticFileProvider { get; set; }
|
public IFileProvider StaticFileProvider { get; set; }
|
||||||
public ILogger Logger { get; set; }
|
public ILogger Logger { get; set; }
|
||||||
|
public RuleTermination Result { get; set; }
|
||||||
// PERF: share the same string builder per request
|
// PERF: share the same string builder per request
|
||||||
internal StringBuilder Builder { get; set; } = new StringBuilder(64);
|
internal StringBuilder Builder { get; set; } = new StringBuilder(64);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,30 +65,31 @@ namespace Microsoft.AspNetCore.Rewrite
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException(nameof(context));
|
throw new ArgumentNullException(nameof(context));
|
||||||
}
|
}
|
||||||
var urlContext = new RewriteContext {
|
var rewriteContext = new RewriteContext {
|
||||||
HttpContext = context,
|
HttpContext = context,
|
||||||
StaticFileProvider = _fileProvider,
|
StaticFileProvider = _fileProvider,
|
||||||
Logger = _logger
|
Logger = _logger,
|
||||||
|
Result = RuleTermination.Continue
|
||||||
};
|
};
|
||||||
|
|
||||||
foreach (var rule in _options.Rules)
|
foreach (var rule in _options.Rules)
|
||||||
{
|
{
|
||||||
var result = rule.ApplyRule(urlContext);
|
rule.ApplyRule(rewriteContext);
|
||||||
switch (result.Result)
|
switch (rewriteContext.Result)
|
||||||
{
|
{
|
||||||
case RuleTermination.Continue:
|
case RuleTermination.Continue:
|
||||||
_logger.RewriteMiddlewareRequestContinueResults();
|
_logger.RewriteMiddlewareRequestContinueResults();
|
||||||
break;
|
break;
|
||||||
case RuleTermination.ResponseComplete:
|
case RuleTermination.ResponseComplete:
|
||||||
_logger.RewriteMiddlewareRequestResponseComplete(
|
_logger.RewriteMiddlewareRequestResponseComplete(
|
||||||
urlContext.HttpContext.Response.Headers[HeaderNames.Location],
|
context.Response.Headers[HeaderNames.Location],
|
||||||
urlContext.HttpContext.Response.StatusCode);
|
context.Response.StatusCode);
|
||||||
return CompletedTask;
|
return CompletedTask;
|
||||||
case RuleTermination.StopRules:
|
case RuleTermination.StopRules:
|
||||||
_logger.RewriteMiddlewareRequestStopRules();
|
_logger.RewriteMiddlewareRequestStopRules();
|
||||||
return _next(context);
|
return _next(context);
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException($"Invalid rule termination {result}");
|
throw new ArgumentOutOfRangeException($"Invalid rule termination {rewriteContext.Result}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return _next(context);
|
return _next(context);
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ namespace Microsoft.AspNetCore.Rewrite
|
||||||
/// <param name="options">The Rewrite options.</param>
|
/// <param name="options">The Rewrite options.</param>
|
||||||
/// <param name="applyRule">A Func that checks and applies the rule.</param>
|
/// <param name="applyRule">A Func that checks and applies the rule.</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static RewriteOptions Add(this RewriteOptions options, Func<RewriteContext, RuleResult> applyRule)
|
public static RewriteOptions Add(this RewriteOptions options, Action<RewriteContext> applyRule)
|
||||||
{
|
{
|
||||||
options.Rules.Add(new DelegateRule(applyRule));
|
options.Rules.Add(new DelegateRule(applyRule));
|
||||||
return options;
|
return options;
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,10 @@
|
||||||
namespace Microsoft.AspNetCore.Rewrite
|
namespace Microsoft.AspNetCore.Rewrite
|
||||||
{
|
{
|
||||||
// make this public and doc comements
|
// make this public and doc comements
|
||||||
|
// caller must set the context.Results field appropriately in rule.
|
||||||
public abstract class Rule
|
public abstract class Rule
|
||||||
{
|
{
|
||||||
public abstract RuleResult ApplyRule(RewriteContext context);
|
public abstract void ApplyRule(RewriteContext context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Rewrite
|
|
||||||
{
|
|
||||||
public class RuleResult
|
|
||||||
{
|
|
||||||
public static RuleResult Continue = new RuleResult { Result = RuleTermination.Continue };
|
|
||||||
public static RuleResult ResponseComplete = new RuleResult { Result = RuleTermination.ResponseComplete };
|
|
||||||
public static RuleResult StopRules = new RuleResult { Result = RuleTermination.StopRules };
|
|
||||||
|
|
||||||
public RuleTermination Result { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Rewrite.Internal;
|
|
||||||
using Microsoft.AspNetCore.Rewrite.Internal.UrlActions;
|
using Microsoft.AspNetCore.Rewrite.Internal.UrlActions;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -18,10 +17,10 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlActions
|
||||||
var action = new ForbiddenAction();
|
var action = new ForbiddenAction();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var results = action.ApplyAction(context, null, null);
|
action.ApplyAction(context, null, null);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Equal(results.Result, RuleTermination.ResponseComplete);
|
Assert.Equal(context.Result, RuleTermination.ResponseComplete);
|
||||||
Assert.Equal(context.HttpContext.Response.StatusCode, StatusCodes.Status403Forbidden);
|
Assert.Equal(context.HttpContext.Response.StatusCode, StatusCodes.Status403Forbidden);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Rewrite.Internal;
|
|
||||||
using Microsoft.AspNetCore.Rewrite.Internal.UrlActions;
|
using Microsoft.AspNetCore.Rewrite.Internal.UrlActions;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -18,10 +17,10 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlActions
|
||||||
var action = new GoneAction();
|
var action = new GoneAction();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var results = action.ApplyAction(context, null, null);
|
action.ApplyAction(context, null, null);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Equal(results.Result, RuleTermination.ResponseComplete);
|
Assert.Equal(context.Result, RuleTermination.ResponseComplete);
|
||||||
Assert.Equal(context.HttpContext.Response.StatusCode, StatusCodes.Status410Gone);
|
Assert.Equal(context.HttpContext.Response.StatusCode, StatusCodes.Status410Gone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,10 +24,11 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
</rules>
|
</rules>
|
||||||
</rewrite>");
|
</rewrite>");
|
||||||
var rules = new UrlRewriteFileParser().Parse(xml);
|
var rules = new UrlRewriteFileParser().Parse(xml);
|
||||||
|
|
||||||
Assert.Equal(rules.Count, 1);
|
Assert.Equal(rules.Count, 1);
|
||||||
var ruleResults = rules.FirstOrDefault().ApplyRule(new RewriteContext {HttpContext = new DefaultHttpContext()});
|
var context = new RewriteContext { HttpContext = new DefaultHttpContext() };
|
||||||
Assert.Equal(ruleResults.Result, RuleTermination.StopRules);
|
rules.FirstOrDefault().ApplyRule(context);
|
||||||
|
Assert.Equal(context.Result, RuleTermination.StopRules);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -44,8 +45,9 @@ namespace Microsoft.AspNetCore.Rewrite.Tests.UrlRewrite
|
||||||
var rules = new UrlRewriteFileParser().Parse(xml);
|
var rules = new UrlRewriteFileParser().Parse(xml);
|
||||||
|
|
||||||
Assert.Equal(rules.Count, 1);
|
Assert.Equal(rules.Count, 1);
|
||||||
var ruleResults = rules.FirstOrDefault().ApplyRule(new RewriteContext { HttpContext = new DefaultHttpContext() });
|
var context = new RewriteContext { HttpContext = new DefaultHttpContext() };
|
||||||
Assert.Equal(ruleResults.Result, RuleTermination.Continue);
|
rules.FirstOrDefault().ApplyRule(context);
|
||||||
|
Assert.Equal(context.Result, RuleTermination.Continue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue