public void ThrowingOnActionIncludesErrorDetail(bool isLocal, IncludeErrorDetailPolicy includeErrorDetail, bool?customErrors, bool expectErrorDetail) { string controllerName = "Exception"; string requestUrl = String.Format("{0}/{1}/{2}", "http://www.foo.com", controllerName, "ArgumentNull"); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUrl); request.Properties["MS_IsLocal"] = new Lazy <bool>(() => isLocal); if (customErrors != null) { request.Properties["MS_IncludeErrorDetail"] = new Lazy <bool>(() => !(bool)customErrors); } ScenarioHelper.RunTest( controllerName, "/{action}", request, (response) => { if (expectErrorDetail) { AssertResponseIncludesErrorDetail(response); } else { AssertResponseDoesNotIncludeErrorDetail(response); } }, (config) => { config.IncludeErrorDetailPolicy = includeErrorDetail; } ); }
public void ThrowingOnActionIncludesErrorDetail(string hostName, IncludeErrorDetailPolicy?includeErrorDetail, bool shouldIncludeErrorDetail) { string controllerName = "Exception"; string requestUrl = String.Format("{0}/{1}/{2}", "http://" + hostName, controllerName, "ArgumentNull"); ScenarioHelper.RunTest( controllerName, "/{action}", new HttpRequestMessage(HttpMethod.Post, requestUrl), (response) => { if (shouldIncludeErrorDetail) { AssertResponseIncludesErrorDetail(response); } else { AssertResponseDoesNotIncludeErrorDetail(response); } }, (config) => { if (includeErrorDetail.HasValue) { config.IncludeErrorDetailPolicy = includeErrorDetail.Value; } } ); }
public void ThrowingHttpResponseException_FromAction_GetsReturnedToClient(string actionName) { string controllerName = "Exception"; string requestUrl = String.Format("{0}/{1}/{2}", ScenarioHelper.BaseAddress, controllerName, actionName); ScenarioHelper.RunTest( controllerName, "/{action}", new HttpRequestMessage(HttpMethod.Post, requestUrl), (response) => { Assert.Equal(HttpStatusCode.ServiceUnavailable, response.StatusCode); } ); }
public void ThrowingArgumentException_FromFilter_GetsReturnedToClient(string actionName) { string controllerName = "Exception"; string requestUrl = String.Format("{0}/{1}/{2}", ScenarioHelper.BaseAddress, controllerName, actionName); ScenarioHelper.RunTest( controllerName, "/{action}", new HttpRequestMessage(HttpMethod.Post, requestUrl), (response) => { Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode); ExceptionSurrogate exception = response.Content.ReadAsAsync <ExceptionSurrogate>().Result; Assert.Equal(typeof(ArgumentException).FullName, exception.ExceptionType.ToString()); } ); }
public void ThrowingArgumentNullException_FromAction_GetsReturnedToClientParsedAsJson(string actionName) { string controllerName = "Exception"; string requestUrl = String.Format("{0}/{1}/{2}", ScenarioHelper.BaseAddress, controllerName, actionName); ScenarioHelper.RunTest( controllerName, "/{action}", new HttpRequestMessage(HttpMethod.Post, requestUrl), (response) => { Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode); dynamic json = JToken.Parse(response.Content.ReadAsStringAsync().Result); string result = json.ExceptionType; Assert.Equal(typeof(ArgumentNullException).FullName, result); } ); }
public void Service_ReturnsInternalServerError_WhenMultipleControllersAreFound() { string controllerName = "Duplicate"; string requestUrl = String.Format("{0}/{1}", ScenarioHelper.BaseAddress, controllerName); ScenarioHelper.RunTest( controllerName, "", new HttpRequestMessage(HttpMethod.Post, requestUrl), (response) => { Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode); Assert.Contains( String.Format(SRResources.DefaultControllerFactory_ControllerNameAmbiguous_WithRouteTemplate, controllerName, "{controller}", String.Empty), response.Content.ReadAsAsync <string>().Result); } ); }
public void Service_ReturnsInternalServerError_WhenMultipleActionsAreFound() { string controllerName = "Exception"; string requestUrl = String.Format("{0}/{1}", ScenarioHelper.BaseAddress, controllerName); ScenarioHelper.RunTest( controllerName, "", new HttpRequestMessage(HttpMethod.Post, requestUrl), (response) => { Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode); Assert.Contains( String.Format(SRResources.ApiControllerActionSelector_AmbiguousMatch, String.Empty), response.Content.ReadAsAsync <string>().Result); } ); }
public void Service_ReturnsNotFound_WhenControllerNameDoesNotExist() { string controllerName = "randomControllerThatCannotBeFound"; string requestUrl = String.Format("{0}/{1}", ScenarioHelper.BaseAddress, controllerName); ScenarioHelper.RunTest( controllerName, "", new HttpRequestMessage(HttpMethod.Post, requestUrl), (response) => { Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.Equal( String.Format(SRResources.DefaultControllerFactory_ControllerNameNotFound, controllerName), response.Content.ReadAsAsync <string>().Result); } ); }
public void Service_ReturnsNotFound_WhenActionNameDoesNotExist() { string controllerName = "Exception"; string actionName = "actionNotFound"; string requestUrl = String.Format("{0}/{1}/{2}", ScenarioHelper.BaseAddress, controllerName, actionName); ScenarioHelper.RunTest( controllerName, "/{action}", new HttpRequestMessage(HttpMethod.Post, requestUrl), (response) => { Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.Equal( String.Format(SRResources.ApiControllerActionSelector_ActionNameNotFound, controllerName, actionName), response.Content.ReadAsAsync <string>().Result); } ); }
public void ThrowingHttpResponseException_FromFilter_GetsReturnedToClient(string actionName, HttpStatusCode responseExceptionStatusCode) { string controllerName = "Exception"; string requestUrl = String.Format("{0}/{1}/{2}", ScenarioHelper.BaseAddress, controllerName, actionName); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUrl); request.Headers.Add(ExceptionController.ResponseExceptionHeaderKey, responseExceptionStatusCode.ToString()); ScenarioHelper.RunTest( controllerName, "/{action}", request, (response) => { Assert.Equal(responseExceptionStatusCode, response.StatusCode); Assert.Equal("HttpResponseExceptionMessage", response.Content.ReadAsAsync <string>().Result); } ); }
public void Service_ReturnsMethodNotAllowed_WhenActionsDoesNotSupportTheRequestHttpMethod() { string controllerName = "Exception"; string actionName = "GetString"; HttpMethod requestMethod = HttpMethod.Post; string requestUrl = String.Format("{0}/{1}/{2}", ScenarioHelper.BaseAddress, controllerName, actionName); ScenarioHelper.RunTest( controllerName, "/{action}", new HttpRequestMessage(requestMethod, requestUrl), (response) => { Assert.Equal(HttpStatusCode.MethodNotAllowed, response.StatusCode); Assert.Equal( String.Format(SRResources.ApiControllerActionSelector_HttpMethodNotSupported, requestMethod.Method), response.Content.ReadAsAsync <string>().Result); } ); }