namespace Ocelot.UnitTests.Responder { using System.Net.Http; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Moq; using Ocelot.Logging; using Ocelot.Responder; using Ocelot.Responder.Middleware; using Ocelot.Responses; using TestStack.BDDfy; using Xunit; public class ResponderMiddlewareTests : ServerHostedMiddlewareTest { private readonly Mock _responder; private readonly Mock _codeMapper; private OkResponse _response; public ResponderMiddlewareTests() { _responder = new Mock(); _codeMapper = new Mock(); GivenTheTestServerIsConfigured(); } [Fact] public void should_not_return_any_errors() { this.Given(x => x.GivenTheHttpResponseMessageIs(new HttpResponseMessage())) .And(x => x.GivenThereAreNoPipelineErrors()) .When(x => x.WhenICallTheMiddleware()) .Then(x => x.ThenThereAreNoErrors()) .BDDfy(); } protected override void GivenTheTestServerServicesAreConfigured(IServiceCollection services) { services.AddSingleton(); services.AddLogging(); services.AddSingleton(_codeMapper.Object); services.AddSingleton(_responder.Object); services.AddSingleton(ScopedRepository.Object); } protected override void GivenTheTestServerPipelineIsConfigured(IApplicationBuilder app) { app.UseResponderMiddleware(); } private void GivenTheHttpResponseMessageIs(HttpResponseMessage response) { _response = new OkResponse(response); ScopedRepository .Setup(x => x.Get(It.IsAny())) .Returns(_response); } private void GivenThereAreNoPipelineErrors() { ScopedRepository .Setup(x => x.Get(It.IsAny())) .Returns(new OkResponse(false)); } private void ThenThereAreNoErrors() { //todo a better assert? } } }