http error code tests and docs

This commit is contained in:
TomPallister 2020-04-11 18:46:19 +01:00
parent 3dfcff822b
commit cdbd8e85d3
6 changed files with 29 additions and 6 deletions

View File

@ -0,0 +1,13 @@
Http Error Status Codes
=======================
Ocelot will return HTTP status error codes based on internal logic in certain siturations:
- 401 if the authentication middleware runs and the user is not authenticated.
- 403 if the authorisation middleware runs and the user is unauthenticated, claim value not authroised, scope not authorised, user doesnt have required claim or cannot find claim.
- 503 if the downstream request times out.
- 499 if the request is cancelled by the client.
- 404 if unable to find a downstream route.
- 502 if unable to connect to downstream service.
- 500 if unable to complete the HTTP request downstream and the exception is not OperationCanceledException or HttpRequestException.
- 404 if Ocelot is unable to map an internal error code to a HTTP status code.

View File

@ -42,6 +42,7 @@ Thanks for taking a look at the Ocelot documentation. Please use the left hand n
features/loadbalancer features/loadbalancer
features/delegatinghandlers features/delegatinghandlers
features/raft features/raft
features/errorcodes
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2

View File

@ -3,7 +3,7 @@ using System;
namespace Ocelot.Requester namespace Ocelot.Requester
{ {
class ConnectionToDownstreamServiceError : Error public class ConnectionToDownstreamServiceError : Error
{ {
public ConnectionToDownstreamServiceError(Exception exception) public ConnectionToDownstreamServiceError(Exception exception)
: base($"Error connecting to downstream service, exception: {exception}", OcelotErrorCode.ConnectionToDownstreamServiceError) : base($"Error connecting to downstream service, exception: {exception}", OcelotErrorCode.ConnectionToDownstreamServiceError)

View File

@ -5,7 +5,6 @@ namespace Ocelot.Requester
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net.Http; using System.Net.Http;
using System.Net.Sockets;
public class HttpExeptionToErrorMapper : IExceptionToErrorMapper public class HttpExeptionToErrorMapper : IExceptionToErrorMapper
{ {

View File

@ -1,8 +1,9 @@
using Ocelot.Errors; namespace Ocelot.Responder
using System.Collections.Generic;
namespace Ocelot.Responder
{ {
using System.Net;
using Ocelot.Errors;
using System.Collections.Generic;
/// <summary> /// <summary>
/// Map a list OceoltErrors to a single appropriate HTTP status code /// Map a list OceoltErrors to a single appropriate HTTP status code
/// </summary> /// </summary>

View File

@ -7,6 +7,7 @@
using Shouldly; using Shouldly;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using Xunit; using Xunit;
@ -38,6 +39,14 @@
error.ShouldBeOfType<RequestCanceledError>(); error.ShouldBeOfType<RequestCanceledError>();
} }
[Fact]
public void should_return_ConnectionToDownstreamServiceError()
{
var error = _mapper.Map(new HttpRequestException());
error.ShouldBeOfType<ConnectionToDownstreamServiceError>();
}
[Fact] [Fact]
public void should_return_request_canceled_for_subtype() public void should_return_request_canceled_for_subtype()
{ {