Skip to content

Commit

Permalink
Fix build
Browse files Browse the repository at this point in the history
  • Loading branch information
PaulMiami committed Feb 1, 2020
1 parent 307a97c commit a0d0d10
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 35 deletions.
12 changes: 3 additions & 9 deletions .travis.yml
@@ -1,13 +1,7 @@
language: csharp
sudo: required
dist: trusty

before_install:
- sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893
- sudo apt-get update
- sudo apt-get install dotnet-dev-1.0.4
- dotnet --info
mono: none
dist: xenial
dotnet: 1.0

install:
- dotnet restore
Expand Down
Expand Up @@ -24,7 +24,6 @@
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="1.0.5" />
<PackageReference Include="Microsoft.Extensions.Logging.Testing" Version="1.2.0-preview1-23565" />
<PackageReference Include="Moq" Version="4.7.99" />
</ItemGroup>

Expand Down
Expand Up @@ -11,18 +11,35 @@
using Moq;
using System.Threading.Tasks;
using Xunit;
using Microsoft.Extensions.Logging.Testing;
using System.Collections.Generic;
using Microsoft.Extensions.Primitives;
using System;
using System.Net;
using System.Linq;
using Microsoft.Extensions.Logging;

namespace PaulMiami.AspNetCore.Mvc.Recaptcha.Test
{
public class ValidateRecaptchaFilterTest
{

static Mock<ILoggerFactory> GetLoggerFactory<T>()
{
var mockLogger = new Mock<ILogger<T>>();
mockLogger.Setup(
m => m.Log(
LogLevel.Information,
It.IsAny<EventId>(),
It.IsAny<object>(),
It.IsAny<Exception>(),
It.IsAny<Func<object, Exception, string>>()));

var mockLoggerFactory = new Mock<ILoggerFactory>();
mockLoggerFactory.Setup(x => x.CreateLogger(It.IsAny<string>())).Returns(() => mockLogger.Object);

return mockLoggerFactory;
}

[Theory]
[InlineData("POST")]
[InlineData("post")]
Expand All @@ -43,7 +60,9 @@ public async Task TestPostSucess(string httpMethod)
.Returns(true)
.Verifiable();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, NullLoggerFactory.Instance);
var loggerFactory = GetLoggerFactory<ValidateRecaptchaFilter>();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory.Object);

var httpContext = new DefaultHttpContext();
httpContext.Request.Method = httpMethod;
Expand Down Expand Up @@ -86,7 +105,9 @@ public async Task TestPostSucessNoIp(string httpMethod)
.Returns(true)
.Verifiable();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, NullLoggerFactory.Instance);
var loggerFactory = GetLoggerFactory<ValidateRecaptchaFilter>();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory.Object);

var httpContext = new DefaultHttpContext();
httpContext.Request.Method = httpMethod;
Expand Down Expand Up @@ -131,10 +152,9 @@ public async Task TestPostFail(string httpMethod)
.Returns(true)
.Verifiable();

var sink = new TestSink();
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
var loggerFactory = GetLoggerFactory<ValidateRecaptchaFilter>();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory);
var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory.Object);

var httpContext = new DefaultHttpContext();
httpContext.Request.Method = httpMethod;
Expand All @@ -153,9 +173,6 @@ public async Task TestPostFail(string httpMethod)

recaptchaService.Verify();

Assert.Empty(sink.Scopes);
Assert.Single(sink.Writes);
Assert.Equal($"Recaptcha validation failed. {errorMessage}", sink.Writes[0].State?.ToString());
var httpBadRequest = Assert.IsType<BadRequestResult>(context.Result);
Assert.Equal(StatusCodes.Status400BadRequest, httpBadRequest.StatusCode);
Assert.True(context.ModelState.IsValid);
Expand Down Expand Up @@ -190,10 +207,9 @@ public async Task TestPostFailInvalidResponse(string httpMethod)
.Returns(true)
.Verifiable();

var sink = new TestSink();
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
var loggerFactory = GetLoggerFactory<ValidateRecaptchaFilter>();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory);
var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory.Object);

var httpContext = new DefaultHttpContext();
httpContext.Request.Method = httpMethod;
Expand All @@ -212,9 +228,6 @@ public async Task TestPostFailInvalidResponse(string httpMethod)

recaptchaService.Verify();

Assert.Empty(sink.Scopes);
Assert.Single(sink.Writes);
Assert.Equal($"Recaptcha validation failed. {errorMessage}", sink.Writes[0].State?.ToString());
Assert.Null(context.Result);
Assert.False(context.ModelState.IsValid);
Assert.NotEmpty(context.ModelState);
Expand All @@ -239,10 +252,9 @@ public async Task TestPostWrongContentType(string httpMethod)
.Returns(true)
.Verifiable();

var sink = new TestSink();
var loggerFactory = new TestLoggerFactory(sink, enabled: true);
var loggerFactory = GetLoggerFactory<ValidateRecaptchaFilter>();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory);
var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory.Object);

var httpContext = new DefaultHttpContext();
httpContext.Request.Method = httpMethod;
Expand All @@ -256,9 +268,6 @@ public async Task TestPostWrongContentType(string httpMethod)

await filter.OnAuthorizationAsync(context);

Assert.Empty(sink.Scopes);
Assert.Single(sink.Writes);
Assert.Equal($"Recaptcha validation failed. The content type is 'Wrong content type', it should be form content.", sink.Writes[0].State?.ToString());
var httpBadRequest = Assert.IsType<BadRequestResult>(context.Result);
Assert.Equal(StatusCodes.Status400BadRequest, httpBadRequest.StatusCode);
Assert.True(context.ModelState.IsValid);
Expand Down Expand Up @@ -292,7 +301,9 @@ public async Task TestPostFailMissingResponse(string httpMethod)
.Returns(true)
.Verifiable();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, NullLoggerFactory.Instance);
var loggerFactory = GetLoggerFactory<ValidateRecaptchaFilter>();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory.Object);

var httpContext = new DefaultHttpContext();
httpContext.Request.Method = httpMethod;
Expand Down Expand Up @@ -332,7 +343,9 @@ public async Task DoNotValidateIfDisabled()
.Returns(false)
.Verifiable();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, NullLoggerFactory.Instance);
var loggerFactory = GetLoggerFactory<ValidateRecaptchaFilter>();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory.Object);

var httpContext = new DefaultHttpContext();
httpContext.Request.Method = "POST";
Expand Down Expand Up @@ -376,7 +389,9 @@ public async Task TestPostSkipping(string httpMethod)
.Returns(true)
.Verifiable();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, NullLoggerFactory.Instance);
var loggerFactory = GetLoggerFactory<ValidateRecaptchaFilter>();

var filter = new ValidateRecaptchaFilter(recaptchaService.Object, configurationService.Object, loggerFactory.Object);

var actionContext = new ActionContext(new DefaultHttpContext(), new RouteData(), new ActionDescriptor());
actionContext.HttpContext.Request.Method = httpMethod;
Expand Down
2 changes: 1 addition & 1 deletion test/WebSites/TestSite/TestSite.csproj
Expand Up @@ -24,7 +24,7 @@
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.0.6" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.0.6" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.0.6" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.0.6" />
</ItemGroup>

Expand Down

0 comments on commit a0d0d10

Please sign in to comment.