Ocelot/test/Ocelot.UnitTests/Request/Creator/DownstreamRequestCreatorTests.cs
Tom Pallister e636cefdb1
check which version of .net framework before creating http handler (#412)
* #405 needto check which version of .net we are using but cannot use compiler directives

* #405 started puttig abstraction around static method to get frameworks so we can test this logic

* #405 added test for all methods and tidied up tests

* #405 made contains as ms docs are wrong, thanks to davidni for the heads up
2018-06-20 20:44:38 +01:00

94 lines
3.1 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Moq;
using Ocelot.Infrastructure;
using Ocelot.Request.Creator;
using Ocelot.Request.Middleware;
using Shouldly;
using TestStack.BDDfy;
using Xunit;
namespace Ocelot.UnitTests.Request.Creator
{
public class DownstreamRequestCreatorTests
{
private Mock<IFrameworkDescription> _framework;
private DownstreamRequestCreator _downstreamRequestCreator;
private HttpRequestMessage _request;
private DownstreamRequest _result;
public DownstreamRequestCreatorTests()
{
_framework = new Mock<IFrameworkDescription>();
_downstreamRequestCreator = new DownstreamRequestCreator(_framework.Object);
}
[Fact]
public void should_create_downstream_request()
{
var request = new HttpRequestMessage(HttpMethod.Get, "http://www.test.com");
var content = new StringContent("test");
request.Content = content;
this.Given(_ => GivenTheFrameworkIs(""))
.And(_ => GivenTheRequestIs(request))
.When(_ => WhenICreate())
.Then(_ => ThenTheDownstreamRequestHasABody())
.BDDfy();
}
[Fact]
public void should_remove_body_for_http_methods()
{
var methods = new List<HttpMethod> { HttpMethod.Get, HttpMethod.Head, HttpMethod.Delete, HttpMethod.Trace };
var request = new HttpRequestMessage(HttpMethod.Get, "http://www.test.com");
var content = new StringContent("test");
request.Content = content;
methods.ForEach(m => {
this.Given(_ => GivenTheFrameworkIs(".NET Framework"))
.And(_ => GivenTheRequestIs(request))
.When(_ => WhenICreate())
.Then(_ => ThenTheDownstreamRequestDoesNotHaveABody())
.BDDfy();
});
}
private void GivenTheFrameworkIs(string framework)
{
_framework.Setup(x => x.Get()).Returns(framework);
}
private void GivenTheRequestIs(HttpRequestMessage request)
{
_request = request;
}
private void WhenICreate()
{
_result = _downstreamRequestCreator.Create(_request);
}
private async Task ThenTheDownstreamRequestHasABody()
{
_result.ShouldNotBeNull();
_result.Method.ToLower().ShouldBe("get");
_result.Scheme.ToLower().ShouldBe("http");
_result.Host.ToLower().ShouldBe("www.test.com");
var resultContent = await _result.ToHttpRequestMessage().Content.ReadAsStringAsync();
resultContent.ShouldBe("test");
}
private void ThenTheDownstreamRequestDoesNotHaveABody()
{
_result.ShouldNotBeNull();
_result.Method.ToLower().ShouldBe("get");
_result.Scheme.ToLower().ShouldBe("http");
_result.Host.ToLower().ShouldBe("www.test.com");
_result.ToHttpRequestMessage().Content.ShouldBeNull();
}
}
}