Skip to content

Commit

Permalink
boost test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
Tom Gardham-Pallister committed Jun 24, 2017
1 parent 6cdf4e6 commit e96d661
Show file tree
Hide file tree
Showing 3 changed files with 142 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using IdentityServer4.AccessTokenValidation;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
Expand Down
Original file line number Diff line number Diff line change
@@ -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");
}
}
}
125 changes: 125 additions & 0 deletions test/Ocelot.UnitTests/Errors/ExceptionHandlerMiddlewareTests.cs
Original file line number Diff line number Diff line change
@@ -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();
}
}
}

0 comments on commit e96d661

Please sign in to comment.