mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-06-19 09:18:16 +08:00
Feature/inject error mapper (#562)
* added delegate to select last handler * #529 implemented a way we can inject the last delegating handler * wip - moving code * #529 removed loads of qos code and moved it into Ocelot.Provider.Polly * #529 can now inject http client expcetions to ocelot errors mappers and updated docs
This commit is contained in:
55
test/Ocelot.UnitTests/Requester/QoSFactoryTests.cs
Normal file
55
test/Ocelot.UnitTests/Requester/QoSFactoryTests.cs
Normal file
@ -0,0 +1,55 @@
|
||||
namespace Ocelot.UnitTests.Requester
|
||||
{
|
||||
using System.Net.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Moq;
|
||||
using Ocelot.Configuration;
|
||||
using Ocelot.Configuration.Builder;
|
||||
using Ocelot.Logging;
|
||||
using Ocelot.Requester;
|
||||
using Ocelot.Requester.QoS;
|
||||
using Shouldly;
|
||||
using Xunit;
|
||||
|
||||
public class QoSFactoryTests
|
||||
{
|
||||
private QoSFactory _factory;
|
||||
private ServiceCollection _services;
|
||||
private readonly Mock<IOcelotLoggerFactory> _loggerFactory;
|
||||
|
||||
public QoSFactoryTests()
|
||||
{
|
||||
_services = new ServiceCollection();
|
||||
_loggerFactory = new Mock<IOcelotLoggerFactory>();
|
||||
var provider = _services.BuildServiceProvider();
|
||||
_factory = new QoSFactory(provider, _loggerFactory.Object);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void should_return_error()
|
||||
{
|
||||
var downstreamReRoute = new DownstreamReRouteBuilder().Build();
|
||||
var handler = _factory.Get(downstreamReRoute);
|
||||
handler.IsError.ShouldBeTrue();
|
||||
handler.Errors[0].ShouldBeOfType<UnableToFindQoSProviderError>();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void should_return_handler()
|
||||
{
|
||||
_services = new ServiceCollection();
|
||||
DelegatingHandler QosDelegatingHandlerDelegate(DownstreamReRoute a, IOcelotLoggerFactory b) => new FakeDelegatingHandler();
|
||||
_services.AddSingleton<QosDelegatingHandlerDelegate>(QosDelegatingHandlerDelegate);
|
||||
var provider = _services.BuildServiceProvider();
|
||||
_factory = new QoSFactory(provider, _loggerFactory.Object);
|
||||
var downstreamReRoute = new DownstreamReRouteBuilder().Build();
|
||||
var handler = _factory.Get(downstreamReRoute);
|
||||
handler.IsError.ShouldBeFalse();
|
||||
handler.Data.ShouldBeOfType<FakeDelegatingHandler>();
|
||||
}
|
||||
|
||||
class FakeDelegatingHandler : DelegatingHandler
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user