示例#1
0
        public void LogMyError(HttpResponseException ex)
        {
            //var errorDoc = new ServerError(Guid.NewGuid(), httpCode, error);
            //ErrorLog.Insert(errorDoc);//.Save(errorDoc);

            Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(new Elmah.Error(ex));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="HttpResponseExceptionTestBuilder" /> class.
 /// </summary>
 /// <param name="controller">Controller on which the action will be tested.</param>
 /// <param name="actionName">Name of the tested action.</param>
 /// <param name="caughtException">Actual received HttpResponseException.</param>
 public HttpResponseExceptionTestBuilder(
     ApiController controller,
     string actionName,
     HttpResponseException caughtException)
     : base(controller, actionName, caughtException)
 {
     this.httpResponseException = caughtException;
 }
示例#3
0
        public void GetVersionFromIfMatch_ThrowsOnMultipleETags()
        {
            this.request.Headers.IfMatch.Add(EntityTagHeaderValue.Parse("\"abcdef\""));
            this.request.Headers.IfMatch.Add(EntityTagHeaderValue.Parse("\"fedcba\""));

            // Act
            HttpResponseException ex = Assert.Throws <HttpResponseException>(() => this.request.GetVersionFromIfMatch());
            HttpError             error;

            ex.Response.TryGetContentValue <HttpError>(out error);

            // Assert
            Assert.Equal("The HTTP If-Match header is invalid: '\"abcdef\", \"fedcba\"'. Updating an existing resource requires a single, strong ETag, or a wildcard ETag.", error.Message);
        }
示例#4
0
        public void ValidateRequest_Throws_IfRequestMediaTypeIsWrong()
        {
            DefaultHttpBatchHandler batchHandler = new DefaultHttpBatchHandler(new HttpServer());
            HttpRequestMessage      request      = new HttpRequestMessage();

            request.Content = new StringContent(String.Empty);
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("text/json");

            HttpResponseException errorResponse = Assert.Throws <HttpResponseException>(
                () => batchHandler.ValidateRequest(request));

            Assert.Equal(HttpStatusCode.BadRequest, errorResponse.Response.StatusCode);
            Assert.Equal("The batch request of media type 'text/json' is not supported.",
                         errorResponse.Response.Content.ReadAsAsync <HttpError>().Result.Message);
        }
示例#5
0
        public void ValidateRequest_Throws_IfRequestContentTypeIsNull()
        {
            DefaultHttpBatchHandler batchHandler = new DefaultHttpBatchHandler(new HttpServer());
            HttpRequestMessage      request      = new HttpRequestMessage();

            request.Content = new StringContent(String.Empty);
            request.Content.Headers.ContentType = null;

            HttpResponseException errorResponse = Assert.Throws <HttpResponseException>(
                () => batchHandler.ValidateRequest(request));

            Assert.Equal(HttpStatusCode.BadRequest, errorResponse.Response.StatusCode);
            Assert.Equal("The batch request must have a \"Content-Type\" header.",
                         errorResponse.Response.Content.ReadAsAsync <HttpError>().Result.Message);
        }
        public async Task ValidateRequest_Throws_IfRequestContentIsNull()
        {
            DefaultHttpBatchHandler batchHandler = new DefaultHttpBatchHandler(new HttpServer());
            HttpRequestMessage      request      = new HttpRequestMessage();

            HttpResponseException errorResponse = Assert.Throws <HttpResponseException>(
                () => batchHandler.ValidateRequest(request)
                );

            Assert.Equal(HttpStatusCode.BadRequest, errorResponse.Response.StatusCode);
            Assert.Equal(
                "The 'Content' property on the batch request cannot be null.",
                (await errorResponse.Response.Content.ReadAsAsync <HttpError>()).Message
                );
        }
        public void ValidateRequest_Throws_IfRequestContentTypeDoesNotHaveBoundary()
        {
            DefaultODataBatchHandler batchHandler = new DefaultODataBatchHandler(new HttpServer());
            HttpRequestMessage       request      = new HttpRequestMessage();

            request.Content = new StringContent(String.Empty);
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("multipart/mixed");

            HttpResponseException errorResponse = Assert.Throws <HttpResponseException>(
                () => batchHandler.ValidateRequest(request));

            Assert.Equal(HttpStatusCode.BadRequest, errorResponse.Response.StatusCode);
            Assert.Equal("The batch request must have a boundary specification in the \"Content-Type\" header.",
                         errorResponse.Response.Content.ReadAsAsync <HttpError>().Result.Message);
        }
        public async Task InvokeActionAsync_ForActionResult_HandlesHttpResponseException()
        {
            // Arrange
            _actionDescriptorMock.Setup(d => d.ReturnType).Returns(typeof(IHttpActionResult));
            HttpResponseException expectedException = new HttpResponseException(HttpStatusCode.Ambiguous);

            _actionDescriptorMock.Setup(d => d.ExecuteAsync(It.IsAny <HttpControllerContext>(),
                                                            It.IsAny <IDictionary <string, object> >(), It.IsAny <CancellationToken>())).Throws(expectedException);

            // Act
            HttpResponseMessage response = await _actionInvoker.InvokeActionAsync(_actionContext, CancellationToken.None);

            // Assert
            Assert.Equal(HttpStatusCode.Ambiguous, response.StatusCode);
        }
示例#9
0
        public void InvokeActionAsync_ForActionResult_HandlesHttpResponseException()
        {
            // Arrange
            _actionDescriptorMock.Setup(d => d.ReturnType).Returns(typeof(IHttpActionResult));
            HttpResponseException expectedException = new HttpResponseException(HttpStatusCode.Ambiguous);

            _actionDescriptorMock.Setup(d => d.ExecuteAsync(It.IsAny <HttpControllerContext>(),
                                                            It.IsAny <IDictionary <string, object> >(), It.IsAny <CancellationToken>())).Throws(expectedException);

            // Act
            Task <HttpResponseMessage> task = _actionInvoker.InvokeActionAsync(_actionContext,
                                                                               CancellationToken.None);

            // Assert
            task.WaitUntilCompleted();
            Assert.Equal <TaskStatus>(TaskStatus.RanToCompletion, task.Status);
            Assert.Equal(HttpStatusCode.Ambiguous, task.Result.StatusCode);
        }
示例#10
0
        public void SendAsync_Handles_HttpResponseExceptionsThrownInCustomRoutes()
        {
            // Arrange
            HttpResponseException exception = new HttpResponseException(new HttpResponseMessage(HttpStatusCode.HttpVersionNotSupported));

            exception.Response.ReasonPhrase = "whatever";
            var config = new HttpConfiguration();

            config.Routes.Add("throwing route", new ThrowingRoute(exception));
            HttpServer server  = new HttpServer(config);
            var        invoker = new HttpMessageInvoker(server);

            // Act
            var response = invoker.SendAsync(new HttpRequestMessage(), CancellationToken.None).Result;

            // Assert
            Assert.Equal(exception.Response.StatusCode, response.StatusCode);
            Assert.Equal(exception.Response.ReasonPhrase, response.ReasonPhrase);
        }
        public async Task SendAsync_Handles_HttpResponseExceptionsThrownInMessageHandlers()
        {
            // Arrange
            HttpResponseException exception = new HttpResponseException(new HttpResponseMessage(HttpStatusCode.HttpVersionNotSupported));

            exception.Response.ReasonPhrase = "whatever";
            var config = new HttpConfiguration();

            config.MessageHandlers.Add(new ThrowingMessageHandler(exception));
            HttpServer server  = new HttpServer(config);
            var        invoker = new HttpMessageInvoker(server);

            // Act
            var response = await invoker.SendAsync(new HttpRequestMessage(), CancellationToken.None);

            // Assert
            Assert.Equal(exception.Response.StatusCode, response.StatusCode);
            Assert.Equal(exception.Response.ReasonPhrase, response.ReasonPhrase);
        }
        static LogExceptionFilterAttributeFixtureController()
        {
            Exception = new InvalidOperationException("Error Message");
            NestedException = new InvalidOperationException(
                "Error Message", new InvalidOperationException("Inner Error Message"));
            HttpResponseException = new HttpResponseException(HttpStatusCode.UnsupportedMediaType);

            ExceptionWithData = new InvalidOperationException("Error Message With Data");
            ExceptionWithData.Data.Add("First", "Value 1");
            ExceptionWithData.Data.Add("Second", "Value 2");
        }