mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-04-22 09:52:50 +08:00
Cover LoadBalancerFactory edge-case by a unit test.
This commit is contained in:
parent
fd35ad0514
commit
22f304cecf
@ -8,6 +8,7 @@ using Ocelot.ServiceDiscovery.Providers;
|
|||||||
using Shouldly;
|
using Shouldly;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Ocelot.Infrastructure.RequestData;
|
||||||
using Ocelot.Middleware;
|
using Ocelot.Middleware;
|
||||||
using Ocelot.Values;
|
using Ocelot.Values;
|
||||||
using TestStack.BDDfy;
|
using TestStack.BDDfy;
|
||||||
@ -39,7 +40,7 @@ namespace Ocelot.UnitTests.LoadBalancer
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void should_return_no_load_balancer()
|
public void should_return_no_load_balancer_by_default()
|
||||||
{
|
{
|
||||||
var reRoute = new DownstreamReRouteBuilder()
|
var reRoute = new DownstreamReRouteBuilder()
|
||||||
.WithUpstreamHttpMethod(new List<string> { "Get" })
|
.WithUpstreamHttpMethod(new List<string> { "Get" })
|
||||||
@ -85,6 +86,22 @@ namespace Ocelot.UnitTests.LoadBalancer
|
|||||||
.BDDfy();
|
.BDDfy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void should_return_error_response_when_call_to_service_provider_fails()
|
||||||
|
{
|
||||||
|
var reRoute = new DownstreamReRouteBuilder()
|
||||||
|
.WithLoadBalancerOptions(new LoadBalancerOptions("FakeLoadBalancerOne", "", 0))
|
||||||
|
.WithUpstreamHttpMethod(new List<string> { "Get" })
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
this.Given(x => x.GivenAReRoute(reRoute))
|
||||||
|
.And(x => GivenAServiceProviderConfig(new ServiceProviderConfigurationBuilder().Build()))
|
||||||
|
.And(x => x.GivenTheServiceProviderFactoryFails())
|
||||||
|
.When(x => x.WhenIGetTheLoadBalancer())
|
||||||
|
.Then(x => x.ThenAnErrorResponseIsReturned())
|
||||||
|
.BDDfy();
|
||||||
|
}
|
||||||
|
|
||||||
private void GivenAServiceProviderConfig(ServiceProviderConfiguration serviceProviderConfig)
|
private void GivenAServiceProviderConfig(ServiceProviderConfiguration serviceProviderConfig)
|
||||||
{
|
{
|
||||||
_serviceProviderConfig = serviceProviderConfig;
|
_serviceProviderConfig = serviceProviderConfig;
|
||||||
@ -97,6 +114,13 @@ namespace Ocelot.UnitTests.LoadBalancer
|
|||||||
.Returns(new OkResponse<IServiceDiscoveryProvider>(_serviceProvider.Object));
|
.Returns(new OkResponse<IServiceDiscoveryProvider>(_serviceProvider.Object));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void GivenTheServiceProviderFactoryFails()
|
||||||
|
{
|
||||||
|
_serviceProviderFactory
|
||||||
|
.Setup(x => x.Get(It.IsAny<ServiceProviderConfiguration>(), It.IsAny<DownstreamReRoute>()))
|
||||||
|
.Returns(new ErrorResponse<IServiceDiscoveryProvider>(new CannotFindDataError("For tests")));
|
||||||
|
}
|
||||||
|
|
||||||
private void ThenTheServiceProviderIsCalledCorrectly()
|
private void ThenTheServiceProviderIsCalledCorrectly()
|
||||||
{
|
{
|
||||||
_serviceProviderFactory
|
_serviceProviderFactory
|
||||||
@ -118,6 +142,11 @@ namespace Ocelot.UnitTests.LoadBalancer
|
|||||||
_result.Data.ShouldBeOfType<T>();
|
_result.Data.ShouldBeOfType<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ThenAnErrorResponseIsReturned()
|
||||||
|
{
|
||||||
|
_result.IsError.ShouldBeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
private class FakeLoadBalancerCreator<T> : ILoadBalancerCreator
|
private class FakeLoadBalancerCreator<T> : ILoadBalancerCreator
|
||||||
where T : ILoadBalancer, new()
|
where T : ILoadBalancer, new()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user