public void ApplyRule_WithoutCanonicalUrl_301PermanentRedirectToCanonicalUrl( bool appendTrailingSlash, bool lowercaseUrls, string url, string canonicalUrl) { var rule = new RedirectToCanonicalUrlRule(appendTrailingSlash, lowercaseUrls); var context = new RewriteContext() { HttpContext = new DefaultHttpContext() }; context.HttpContext.SetEndpoint(new Endpoint(x => Task.CompletedTask, new EndpointMetadataCollection(), "Name")); var request = context.HttpContext.Request; var response = context.HttpContext.Response; request.Method = HttpMethods.Get; SetUrl(url, request); rule.ApplyRule(context); Assert.Equal(RuleResult.EndResponse, context.Result); Assert.Equal(StatusCodes.Status301MovedPermanently, response.StatusCode); Assert.Equal(canonicalUrl, response.Headers[HeaderNames.Location].ToString()); }
public void ApplyRule_HttpMethodNotGet_DoNothing(string httpMethod) { var rule = new RedirectToCanonicalUrlRule(true, true); var context = new RewriteContext() { HttpContext = new DefaultHttpContext() }; context.HttpContext.Request.Method = httpMethod; rule.ApplyRule(context); Assert.Equal(RuleResult.ContinueRules, context.Result); Assert.Equal(StatusCodes.Status200OK, context.HttpContext.Response.StatusCode); }
public void ApplyRule_WithCanonicalUrl_DoNothing( bool appendTrailingSlash, bool lowercaseUrls, string url) { var rule = new RedirectToCanonicalUrlRule(appendTrailingSlash, lowercaseUrls); var context = new RewriteContext() { HttpContext = new DefaultHttpContext() }; context.HttpContext.SetEndpoint(new Endpoint(x => Task.CompletedTask, new EndpointMetadataCollection(), "Name")); var request = context.HttpContext.Request; request.Method = HttpMethods.Get; SetUrl(url, request); rule.ApplyRule(context); Assert.Equal(RuleResult.ContinueRules, context.Result); Assert.Equal(StatusCodes.Status200OK, context.HttpContext.Response.StatusCode); }