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 _loggerFactory; public QoSFactoryTests() { _services = new ServiceCollection(); _loggerFactory = new Mock(); 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(); } [Fact] public void should_return_handler() { _services = new ServiceCollection(); DelegatingHandler QosDelegatingHandlerDelegate(DownstreamReRoute a, IOcelotLoggerFactory b) => new FakeDelegatingHandler(); _services.AddSingleton(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(); } class FakeDelegatingHandler : DelegatingHandler { } } }