private Task GivenValidationFailed() { _validator.Setup(x => x.ValidateAsync(It.IsAny <TestRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(new ValidationResult(new[] { new ValidationFailure("errorcode", "errormessage") })); _behaviour = new ValidationBehaviour <TestRequest, Result <TestResponse> >(_validator.Object, _logger); return(Task.CompletedTask); }
public async Task ValidationErrorsAreAddedToException() { const string USER = "******"; var validators = new List <IValidator <GetListRequest> > { new GetListValidator() }; var request = new GetListRequest(string.Empty, USER); var validationBehaviour = new ValidationBehaviour <GetListRequest, ListDTO>(validators); var handlerMock = new Mock <RequestHandlerDelegate <ListDTO> >(); try { await validationBehaviour.Handle(request, CancellationToken.None, handlerMock.Object); // an exception is expected, if we got here the test failed Assert.Fail(); } catch (Exception e) { Assert.IsInstanceOfType(e, typeof(RequestValidationFailedException)); Assert.AreEqual(1, (e as RequestValidationFailedException).Failures.Count); } }
private Task GivenValidationWasSuccessful() { _validator.Setup(x => x.ValidateAsync(It.IsAny <TestRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(new ValidationResult()); _behaviour = new ValidationBehaviour <TestRequest, Result <TestResponse> >(_validator.Object, _logger); return(Task.CompletedTask); }
public void ShouldThrow_WhenValidationIsFailed() { // Arrange var validator = Fixture.Freeze <Mock <IValidator <CustomCommand <int> > > >(); var request = new CustomCommand <int>(); var token = new CancellationToken(); var validationFailure = Fixture.Create <ValidationFailure>(); var validationResult = new ValidationResult(new[] { validationFailure }); validator.Setup(x => x.ValidateAsync(request, token)).ReturnsAsync(validationResult); var sut = new ValidationBehaviour <CustomCommand <int>, int>(new[] { validator.Object }); // Act Func <Task <int> > act = () => sut.Handle(request, token, () => Task.FromResult(0)); // Assert var _ = act.Should().Throw <ValidationException>(); _.And.Error.Should().NotBeNull(); _.And.Error.Errors.Should().NotBeNull(); _.And.Error.Errors.Should().HaveCount(1); _.And.Error.Errors[validationFailure.PropertyName].Should().Equal(validationFailure.ErrorMessage); }
public async Task ShouldValidateRequestBeforeCallNextDelegate() { // Arrange var validator = Fixture.Freeze <Mock <IValidator <CustomCommand <int> > > >(); var messages = new List <string>(); var request = new CustomCommand <int>(); var token = new CancellationToken(); var validationResult = new ValidationResult(); validator.Setup(x => x.ValidateAsync(request, token)) .ReturnsAsync(validationResult) .Callback(() => messages.Add("validation")); RequestHandlerDelegate <int> next = () => { messages.Add("next"); return(Task.FromResult(0)); }; var sut = new ValidationBehaviour <CustomCommand <int>, int>(new[] { validator.Object }); // Act await sut.Handle(request, token, next); // Assert messages.Should().Equal("validation", "next"); }
public async Task SendValidData_ShouldReturnSuccessRequestResult() { _validator .Setup(v => v.Validate(It.IsAny <ValidationContext <IRequest <IRequestResult> > >())) .Returns(new ValidationResult()); var _validatorsList = new List <IValidator>() { _validator.Object }; var behaviour = new ValidationBehaviour <IRequest <IRequestResult>, IRequestResult>(_validatorsList); RequestHandlerDelegate <IRequestResult> nextDelegate = () => Task.FromResult(_okRequestResult.Object); var result = await behaviour.Handle(_command.Object, _cancelToken, nextDelegate); result.Succeeded.Should().BeTrue(); }
public async Task ThrowsErrorIfAValidationErrorOccurs() { const string USER = "******"; var validators = new List <IValidator <GetListRequest> > { new GetListValidator() }; var request = new GetListRequest(string.Empty, USER); var validationBehaviour = new ValidationBehaviour <GetListRequest, ListDTO>(validators); var handlerMock = new Mock <RequestHandlerDelegate <ListDTO> >(); await Assert.ThrowsExceptionAsync <RequestValidationFailedException>( () => validationBehaviour.Handle(request, CancellationToken.None, handlerMock.Object)); }
public Task DoesValidationBehaviourWorksCorrectlyWhenValidatorDoesNotPass() { var validators = new IValidator <SampleRequest>[] { new SampleValidator(), }; var behaviour = new ValidationBehaviour <SampleRequest, SampleResponse>(validators); var request = new SampleRequest { IsWorking = true }; Action a = () => behaviour.Handle(request, CancellationToken.None, null).GetAwaiter().GetResult(); a.Should() .Throw <ValidationException>() .Which .Errors.Should().ContainKey("Version").And.Subject.Values.Should().ContainSingle(x => x.Contains("Version cannot be empty.")); return(Task.CompletedTask); }
public Task DoesValidationBehaviourWorksCorrectlyWhenAllValidatorsPass() { var validators = new IValidator <SampleRequest>[] { new SampleValidator() }; var behaviour = new ValidationBehaviour <SampleRequest, SampleResponse>(validators); var request = new SampleRequest { Version = "v2.0", IsWorking = true }; Action a = () => behaviour.Handle(request, CancellationToken.None, () => Task.FromResult(new SampleResponse { HasWorked = true })).GetAwaiter().GetResult(); a.Should().NotThrow(); return(Task.CompletedTask); }
public async Task CallsNextIfNoValidationErrorsOccur() { const string LIST_ID = "id"; const string USER = "******"; var validators = new List <IValidator <GetListRequest> > { new GetListValidator() }; var request = new GetListRequest(LIST_ID, USER); var validationBehaviour = new ValidationBehaviour <GetListRequest, ListDTO>(validators); var handlerMock = new Mock <RequestHandlerDelegate <ListDTO> >(); var mockReturned = new ListDTO(); handlerMock.Setup(m => m.Invoke()).ReturnsAsync(mockReturned); var result = await validationBehaviour.Handle(request, CancellationToken.None, handlerMock.Object); Assert.AreSame(mockReturned, result); handlerMock.Verify(m => m.Invoke(), Times.Once); }
private Task GivenValidatorIsNull() { _behaviour = new ValidationBehaviour <TestRequest, Result <TestResponse> >(null, _logger); return(Task.CompletedTask); }
public ValidationBehaviourTests() { _sut = new ValidationBehaviour <Request, Response>(_validatorsMock.Object); }