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; }
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); }
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); }
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); }
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); }
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"); }