mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-04-22 06:22:50 +08:00
commit
54db27100d
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[](https://ci.appveyor.com/project/TomPallister/ocelot-fcfpb)
|
[](https://ci.appveyor.com/project/TomPallister/ocelot-fcfpb)
|
||||||
|
|
||||||
[](https://gitter.im/Ocelotey/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
[](https://coveralls.io/github/TomPallister/Ocelot?branch=develop)
|
||||||
|
|
||||||
Attempt at a .NET Api Gateway
|
Attempt at a .NET Api Gateway
|
||||||
|
|
||||||
|
64
build.cake
64
build.cake
@ -1,6 +1,10 @@
|
|||||||
#tool "nuget:?package=GitVersion.CommandLine"
|
#tool "nuget:?package=GitVersion.CommandLine"
|
||||||
#tool "nuget:?package=GitReleaseNotes"
|
#tool "nuget:?package=GitReleaseNotes"
|
||||||
#addin "nuget:?package=Cake.Json"
|
#addin "nuget:?package=Cake.Json"
|
||||||
|
#tool "nuget:?package=OpenCover"
|
||||||
|
#tool "nuget:?package=ReportGenerator"
|
||||||
|
#tool coveralls.net
|
||||||
|
#addin Cake.Coveralls
|
||||||
|
|
||||||
// compile
|
// compile
|
||||||
var compileConfig = Argument("configuration", "Release");
|
var compileConfig = Argument("configuration", "Release");
|
||||||
@ -12,6 +16,9 @@ var artifactsDir = Directory("artifacts");
|
|||||||
// unit testing
|
// unit testing
|
||||||
var artifactsForUnitTestsDir = artifactsDir + Directory("UnitTests");
|
var artifactsForUnitTestsDir = artifactsDir + Directory("UnitTests");
|
||||||
var unitTestAssemblies = @"./test/Ocelot.UnitTests/Ocelot.UnitTests.csproj";
|
var unitTestAssemblies = @"./test/Ocelot.UnitTests/Ocelot.UnitTests.csproj";
|
||||||
|
var minCodeCoverage = 75d;
|
||||||
|
var coverallsRepoToken = "coveralls-repo-token-ocelot";
|
||||||
|
var coverallsRepo = "https://coveralls.io/github/TomPallister/Ocelot";
|
||||||
|
|
||||||
// acceptance testing
|
// acceptance testing
|
||||||
var artifactsForAcceptanceTestsDir = artifactsDir + Directory("AcceptanceTests");
|
var artifactsForAcceptanceTestsDir = artifactsDir + Directory("AcceptanceTests");
|
||||||
@ -117,6 +124,62 @@ Task("Compile")
|
|||||||
Task("RunUnitTests")
|
Task("RunUnitTests")
|
||||||
.IsDependentOn("Compile")
|
.IsDependentOn("Compile")
|
||||||
.Does(() =>
|
.Does(() =>
|
||||||
|
{
|
||||||
|
if (IsRunningOnWindows())
|
||||||
|
{
|
||||||
|
var coverageSummaryFile = artifactsForUnitTestsDir + File("coverage.xml");
|
||||||
|
|
||||||
|
EnsureDirectoryExists(artifactsForUnitTestsDir);
|
||||||
|
|
||||||
|
OpenCover(tool =>
|
||||||
|
{
|
||||||
|
tool.DotNetCoreTest(unitTestAssemblies);
|
||||||
|
},
|
||||||
|
new FilePath(coverageSummaryFile),
|
||||||
|
new OpenCoverSettings()
|
||||||
|
{
|
||||||
|
Register="user",
|
||||||
|
ArgumentCustomization=args=>args.Append(@"-oldstyle -returntargetcode")
|
||||||
|
}
|
||||||
|
.WithFilter("+[Ocelot*]*")
|
||||||
|
.WithFilter("-[xunit*]*")
|
||||||
|
.WithFilter("-[Ocelot*Tests]*")
|
||||||
|
);
|
||||||
|
|
||||||
|
ReportGenerator(coverageSummaryFile, artifactsForUnitTestsDir);
|
||||||
|
|
||||||
|
if (AppVeyor.IsRunningOnAppVeyor)
|
||||||
|
{
|
||||||
|
var repoToken = EnvironmentVariable(coverallsRepoToken);
|
||||||
|
if (string.IsNullOrEmpty(repoToken))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format("Coveralls repo token not found. Set environment variable '{0}'", coverallsRepoToken));
|
||||||
|
}
|
||||||
|
|
||||||
|
Information(string.Format("Uploading test coverage to {0}", coverallsRepo));
|
||||||
|
CoverallsNet(coverageSummaryFile, CoverallsNetReportType.OpenCover, new CoverallsNetSettings()
|
||||||
|
{
|
||||||
|
RepoToken = repoToken
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Information("We are not running on the build server so we won't publish the coverage report to coveralls.io");
|
||||||
|
}
|
||||||
|
|
||||||
|
var sequenceCoverage = XmlPeek(coverageSummaryFile, "//CoverageSession/Summary/@sequenceCoverage");
|
||||||
|
var branchCoverage = XmlPeek(coverageSummaryFile, "//CoverageSession/Summary/@branchCoverage");
|
||||||
|
|
||||||
|
Information("Sequence Coverage: " + sequenceCoverage);
|
||||||
|
|
||||||
|
if(double.Parse(sequenceCoverage) < minCodeCoverage)
|
||||||
|
{
|
||||||
|
var whereToCheck = !AppVeyor.IsRunningOnAppVeyor ? coverallsRepo : artifactsForUnitTestsDir;
|
||||||
|
throw new Exception(string.Format("Code coverage fell below the threshold of {0}%. You can find the code coverage report at {1}", minCodeCoverage, whereToCheck));
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
var settings = new DotNetCoreTestSettings
|
var settings = new DotNetCoreTestSettings
|
||||||
{
|
{
|
||||||
@ -125,6 +188,7 @@ Task("RunUnitTests")
|
|||||||
|
|
||||||
EnsureDirectoryExists(artifactsForUnitTestsDir);
|
EnsureDirectoryExists(artifactsForUnitTestsDir);
|
||||||
DotNetCoreTest(unitTestAssemblies, settings);
|
DotNetCoreTest(unitTestAssemblies, settings);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Task("RunAcceptanceTests")
|
Task("RunAcceptanceTests")
|
||||||
|
@ -20,6 +20,11 @@
|
|||||||
<Authors>Tom Pallister</Authors>
|
<Authors>Tom Pallister</Authors>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<DebugSymbols>True</DebugSymbols>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" />
|
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.1" />
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
@ -44,7 +45,11 @@
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ByteArrayContent(await ToByteArray(request.Body));
|
var content = new ByteArrayContent(await ToByteArray(request.Body));
|
||||||
|
|
||||||
|
content.Headers.TryAddWithoutValidation("Content-Type", new[] {request.ContentType});
|
||||||
|
|
||||||
|
return content;
|
||||||
}
|
}
|
||||||
|
|
||||||
private HttpMethod MapMethod(HttpRequest request)
|
private HttpMethod MapMethod(HttpRequest request)
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-preview-20170106-08" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-preview-20170106-08" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0-beta5-build1225" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta2-build1317" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" />
|
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="1.1.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="1.1.1" />
|
||||||
@ -51,7 +51,7 @@
|
|||||||
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
|
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
|
||||||
<PackageReference Include="Consul" Version="0.7.2.1" />
|
<PackageReference Include="Consul" Version="0.7.2.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="1.1.1" />
|
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="1.1.1" />
|
||||||
<PackageReference Include="xunit" Version="2.2.0-beta5-build3474" />
|
<PackageReference Include="xunit" Version="2.3.0-beta2-build3683" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-preview-20170106-08" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-preview-20170106-08" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0-beta5-build1225" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta2-build1317" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" />
|
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="1.1.1" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="1.1.1" />
|
||||||
@ -42,7 +42,7 @@
|
|||||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.1.1" />
|
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.1.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Http" Version="1.1.1" />
|
<PackageReference Include="Microsoft.AspNetCore.Http" Version="1.1.1" />
|
||||||
<PackageReference Include="Microsoft.DotNet.InternalAbstractions" Version="1.0.0" />
|
<PackageReference Include="Microsoft.DotNet.InternalAbstractions" Version="1.0.0" />
|
||||||
<PackageReference Include="xunit" Version="2.2.0-beta5-build3474" />
|
<PackageReference Include="xunit" Version="2.3.0-beta2-build3683" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="1.1.1" />
|
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="1.1.1" />
|
||||||
<PackageReference Include="IdentityServer4" Version="1.0.1" />
|
<PackageReference Include="IdentityServer4" Version="1.0.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
|
||||||
|
@ -14,6 +14,11 @@
|
|||||||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
|
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<DebugSymbols>True</DebugSymbols>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\src\Ocelot\Ocelot.csproj" />
|
<ProjectReference Include="..\..\src\Ocelot\Ocelot.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -24,7 +29,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-preview-20170106-08" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-preview-20170106-08" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0-beta5-build1225" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta2-build1317" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.OAuth" Version="1.1.1" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.OAuth" Version="1.1.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="1.1.1" />
|
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="1.1.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Http" Version="1.1.1" />
|
<PackageReference Include="Microsoft.AspNetCore.Http" Version="1.1.1" />
|
||||||
@ -43,7 +48,7 @@
|
|||||||
<PackageReference Include="Moq" Version="4.6.38-alpha" />
|
<PackageReference Include="Moq" Version="4.6.38-alpha" />
|
||||||
<PackageReference Include="Shouldly" Version="2.8.2" />
|
<PackageReference Include="Shouldly" Version="2.8.2" />
|
||||||
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
|
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
|
||||||
<PackageReference Include="xunit" Version="2.2.0-beta5-build3474" />
|
<PackageReference Include="xunit" Version="2.3.0-beta2-build3683" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -117,6 +117,35 @@
|
|||||||
.BDDfy();
|
.BDDfy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Should_map_content_type_header()
|
||||||
|
{
|
||||||
|
this.Given(_ => GivenTheInputRequestHasContent("This is my content"))
|
||||||
|
.And(_ => GivenTheContentTypeIs("application/json"))
|
||||||
|
.And(_ => GivenTheInputRequestHasMethod("GET"))
|
||||||
|
.And(_ => GivenTheInputRequestHasAValidUri())
|
||||||
|
.When(_ => WhenMapped())
|
||||||
|
.Then(_ => ThenNoErrorIsReturned())
|
||||||
|
.And(_ => ThenTheMappedRequestHasContentTypeHeader("application/json"))
|
||||||
|
.And(_ => ThenTheMappedRequestHasContentSize("This is my content".Length))
|
||||||
|
.BDDfy();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GivenTheContentTypeIs(string contentType)
|
||||||
|
{
|
||||||
|
_inputRequest.ContentType = contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ThenTheMappedRequestHasContentTypeHeader(string expected)
|
||||||
|
{
|
||||||
|
_mappedRequest.Data.Content.Headers.ContentType.MediaType.ShouldBe(expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ThenTheMappedRequestHasContentSize(long expected)
|
||||||
|
{
|
||||||
|
_mappedRequest.Data.Content.Headers.ContentLength.ShouldBe(expected);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Should_handle_no_content()
|
public void Should_handle_no_content()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user