public void Execute_Throws_ForNonLocalUrlTilde( string appRoot, string contentPath, string expectedPath) { // Arrange var httpResponse = new Mock <HttpResponse>(); httpResponse.Setup(o => o.Redirect(expectedPath, false)) .Verifiable(); var httpContext = GetHttpContext(appRoot, contentPath, expectedPath, httpResponse.Object); var actionContext = GetActionContext(httpContext); var result = new LocalRedirectResult(contentPath); var relaxedLocalRedirectValidation = false; var success = AppContext.TryGetSwitch(UrlHelper.UseRelaxedLocalRedirectValidationSwitch, out relaxedLocalRedirectValidation); // Act & Assert if (relaxedLocalRedirectValidation) { result.ExecuteResult(actionContext); httpResponse.Verify(); } else { var exception = Assert.Throws <InvalidOperationException>(() => result.ExecuteResult(actionContext)); Assert.Equal( "The supplied URL is not local. A URL with an absolute path is considered local if it does not " + "have a host/authority part. URLs using virtual paths ('~/') are also local.", exception.Message); } }
public void Execute_ReturnsExpectedValues() { // Arrange var appRoot = "/"; var contentPath = "~/Home/About"; var expectedPath = "/Home/About"; var httpResponse = new Mock <HttpResponse>(); httpResponse.Setup(o => o.Redirect(expectedPath, false)) .Verifiable(); var httpContext = GetHttpContext(appRoot, contentPath, expectedPath, httpResponse.Object); var actionContext = GetActionContext(httpContext); var result = new LocalRedirectResult(contentPath); // Act result.ExecuteResult(actionContext); // Assert httpResponse.Verify(); }