using Microsoft.Extensions.DependencyInjection; using Moq; using Ocelot.Logging; using Ocelot.Requester; using Ocelot.Requester.QoS; using Ocelot.Responses; using System; using System.Collections.Generic; using System.Net.Http; using System.Text; using TestStack.BDDfy; using Xunit; namespace Ocelot.UnitTests.Requester { public class HttpClientHttpRequesterTest { private readonly Mock _cacheHandlers; private Mock _serviceProvider; private Response _response; private readonly HttpClientHttpRequester _httpClientRequester; private Ocelot.Request.Request _request; private Mock _loggerFactory; private Mock _logger; public HttpClientHttpRequesterTest() { _serviceProvider = new Mock(); _logger = new Mock(); _loggerFactory = new Mock(); _loggerFactory .Setup(x => x.CreateLogger()) .Returns(_logger.Object); _cacheHandlers = new Mock(); _httpClientRequester = new HttpClientHttpRequester(_loggerFactory.Object, _cacheHandlers.Object, _serviceProvider.Object); } [Fact] public void should_call_request_correctly() { this.Given(x=>x.GivenTheRequestIs(new Ocelot.Request.Request(new HttpRequestMessage() { RequestUri = new Uri("http://www.bbc.co.uk") }, false, new NoQoSProvider(), false, false, false))) .When(x=>x.WhenIGetResponse()) .Then(x => x.ThenTheResponseIsCalledCorrectly()) .BDDfy(); } [Fact] public void should_call_request_UnableToCompleteRequest() { this.Given(x => x.GivenTheRequestIs(new Ocelot.Request.Request(new HttpRequestMessage() { RequestUri = new Uri("http://localhost:60080") }, false, new NoQoSProvider(), false, false, false))) .When(x => x.WhenIGetResponse()) .Then(x => x.ThenTheResponseIsCalledError()) .BDDfy(); } private void GivenTheRequestIs(Ocelot.Request.Request request) { _request = request; } private void WhenIGetResponse() { _response = _httpClientRequester.GetResponse(_request).Result; } private void ThenTheResponseIsCalledCorrectly() { Assert.True(_response.IsError == false); } private void ThenTheResponseIsCalledError() { Assert.True(_response.IsError == true); } } }