Пример #1
0
        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;
                }
            }
                );
        }
Пример #3
0
        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);
            }
                );
        }
Пример #4
0
        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());
            }
                );
        }
Пример #5
0
        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);
            }
                );
        }
Пример #6
0
        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);
            }
                );
        }
Пример #7
0
        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);
            }
                );
        }
Пример #8
0
        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);
            }
                );
        }
Пример #9
0
        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);
            }
                );
        }
Пример #10
0
        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);
            }
                );
        }
Пример #11
0
        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);
            }
                );
        }