public void EvaluateSucceedsWhenNotEnabled() { var mockActionDescriptor = new Mock <HttpActionDescriptor>(); var httpConfiguration = new HttpConfiguration(); var routeData = new HttpRouteData(new HttpRoute()); var request = new HttpRequestMessage(); var controllerDescriptor = new HttpControllerDescriptor { Configuration = httpConfiguration, ControllerName = "generic" }; var controllerContext = new HttpControllerContext(httpConfiguration, routeData, request) { ControllerDescriptor = controllerDescriptor }; var actionContext = new HttpActionContext(controllerContext, mockActionDescriptor.Object); var config = new RequireSslAuthorizationPolicyConfiguration { Enabled = false }; var policy = new RequireSslAuthorizationPolicy(config); mockActionDescriptor.SetupGet(descriptor => descriptor.ActionName).Returns("someAction"); request.RequestUri = new Uri("http://www.someServer.com"); request.SetConfiguration(httpConfiguration); request.SetRouteData(routeData); policy.Evaluate(actionContext).Should().BeNull("because the policy should always be satisfied if not enabled"); }
public void EvaluateFailsForUnsecuredRequest() { var mockActionDescriptor = new Mock <HttpActionDescriptor>(); var httpConfiguration = new HttpConfiguration(); var routeData = new HttpRouteData(new HttpRoute()); var request = new HttpRequestMessage(); var controllerDescriptor = new HttpControllerDescriptor { Configuration = httpConfiguration, ControllerName = "generic" }; var controllerContext = new HttpControllerContext(httpConfiguration, routeData, request) { ControllerDescriptor = controllerDescriptor }; var actionContext = new HttpActionContext(controllerContext, mockActionDescriptor.Object); var config = new RequireSslAuthorizationPolicyConfiguration { Enabled = true, AllowLoopbackException = true }; var policy = new RequireSslAuthorizationPolicy(config); mockActionDescriptor.SetupGet(descriptor => descriptor.ActionName).Returns("someAction"); request.RequestUri = new Uri("http://api.someserver.com/some-endpoint"); request.SetConfiguration(httpConfiguration); request.SetRouteData(routeData); policy.Evaluate(actionContext).Should().Be(HttpStatusCode.Forbidden, "because the policy should fail for a request that is not local or over SSL."); }
public void EvaluateSucceedsForSecureLocalRequestWhenTheExceptionIsDisallowed() { var mockActionDescriptor = new Mock <HttpActionDescriptor>(); var httpConfiguration = new HttpConfiguration(); var routeData = new HttpRouteData(new HttpRoute()); var request = new HttpRequestMessage(); var controllerDescriptor = new HttpControllerDescriptor { Configuration = httpConfiguration, ControllerName = "generic" }; var controllerContext = new HttpControllerContext(httpConfiguration, routeData, request) { ControllerDescriptor = controllerDescriptor }; var actionContext = new HttpActionContext(controllerContext, mockActionDescriptor.Object); var config = new RequireSslAuthorizationPolicyConfiguration { Enabled = true, AllowLoopbackException = false }; var policy = new RequireSslAuthorizationPolicy(config); mockActionDescriptor.SetupGet(descriptor => descriptor.ActionName).Returns("someAction"); request.RequestUri = new Uri("https://localhost/some-endpoint"); request.SetConfiguration(httpConfiguration); request.SetRouteData(routeData); policy.Evaluate(actionContext).Should().BeNull("because the policy should be satisfied for a secure local request when the exception is disallowed"); }
public void EnabledPropertyIsConfigured() { var config = new RequireSslAuthorizationPolicyConfiguration { Enabled = true }; var policy = new RequireSslAuthorizationPolicy(config); policy.Enabled.Should().Be(config.Enabled, "because the Enabled property should be driven by configuration"); }
public void PolicyReflectsTheExpectedPolicy() { var policy = new RequireSslAuthorizationPolicy(new RequireSslAuthorizationPolicyConfiguration()); policy.Policy.Should().Be(AuthorizationPolicy.RequireSsl, "because the policy should match the class name"); }