boost test coverage

This commit is contained in:
Tom Gardham-Pallister 2017-06-24 13:04:25 +01:00
parent 6cdf4e67df
commit e96d66139f
3 changed files with 142 additions and 0 deletions

View File

@ -1,3 +1,4 @@
using System;
using IdentityServer4.AccessTokenValidation; using IdentityServer4.AccessTokenValidation;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;

View File

@ -0,0 +1,16 @@
using Ocelot.Configuration.Creator;
using Shouldly;
using Xunit;
namespace Ocelot.UnitTests.Configuration
{
public class IdentityServerConfigurationCreatorTests
{
[Fact]
public void happy_path_only_exists_for_test_coverage_even_uncle_bob_probably_wouldnt_test_this()
{
var result = IdentityServerConfigurationCreator.GetIdentityServerConfiguration();
result.ApiName.ShouldBe("admin");
}
}
}

View File

@ -0,0 +1,125 @@
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;
using Microsoft.Extensions.DependencyInjection;
using Moq;
using Ocelot.DownstreamRouteFinder;
using Ocelot.DownstreamUrlCreator;
using Ocelot.DownstreamUrlCreator.UrlTemplateReplacer;
using Ocelot.Errors.Middleware;
using Ocelot.Infrastructure.RequestData;
using Ocelot.Logging;
using Ocelot.Responses;
using Ocelot.Values;
using Shouldly;
using TestStack.BDDfy;
using Xunit;
namespace Ocelot.UnitTests.Errors
{
public class ExceptionHandlerMiddlewareTests
{
private readonly Mock<IRequestScopedDataRepository> _scopedRepository;
private readonly string _url;
private TestServer _server;
private HttpClient _client;
private HttpResponseMessage _result;
public ExceptionHandlerMiddlewareTests()
{
_url = "http://localhost:52879";
_scopedRepository = new Mock<IRequestScopedDataRepository>();
}
[Fact]
public void should_call_next_middleware()
{
this.Given(_ => GivenASuccessfulRequest())
.When(_ => WhenIMakeTheRequest())
.Then(_ => ThenTheResponseIsOk())
.BDDfy();
}
[Fact]
public void should_call_return_error()
{
this.Given(_ => GivenAnError())
.When(_ => WhenIMakeTheRequest())
.Then(_ => ThenTheResponseIsError())
.BDDfy();
}
private void ThenTheResponseIsOk()
{
_result.StatusCode.ShouldBe(HttpStatusCode.OK);
}
private void ThenTheResponseIsError()
{
_result.StatusCode.ShouldBe(HttpStatusCode.InternalServerError);
}
private void WhenIMakeTheRequest()
{
_result = _client.GetAsync("/").Result;
}
private void GivenASuccessfulRequest()
{
var builder = new WebHostBuilder()
.ConfigureServices(x =>
{
x.AddSingleton<IOcelotLoggerFactory, AspDotNetLoggerFactory>();
x.AddLogging();
x.AddSingleton(_scopedRepository.Object);
})
.UseUrls(_url)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseUrls(_url)
.Configure(app =>
{
app.UseExceptionHandlerMiddleware();
app.Run(async context =>
{
context.Response.StatusCode = 200;
});
});
_server = new TestServer(builder);
_client = _server.CreateClient();
}
private void GivenAnError()
{
var builder = new WebHostBuilder()
.ConfigureServices(x =>
{
x.AddSingleton<IOcelotLoggerFactory, AspDotNetLoggerFactory>();
x.AddLogging();
x.AddSingleton(_scopedRepository.Object);
})
.UseUrls(_url)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseUrls(_url)
.Configure(app =>
{
app.UseExceptionHandlerMiddleware();
app.Use(async (context, next) =>
{
throw new Exception("BOOM");
});
});
_server = new TestServer(builder);
_client = _server.CreateClient();
}
}
}