public void IsInvalid_WhenEmailVerificationByTicket_IsNotAllowedPurpose( EmailVerificationPurpose entityPurpose, EmailVerificationPurpose allowedPurpose1, EmailVerificationPurpose?allowedPurpose2) { var ticket = FakeData.String(); var queries = new Mock <IProcessQueries>(MockBehavior.Strict); var command = new FakeMustBePurposedVerifyEmailTicketCommand { Ticket = ticket, Purpose1 = allowedPurpose1, Purpose2 = allowedPurpose2, }; var entity = new EmailVerification { Ticket = ticket, Purpose = entityPurpose, }; Expression <Func <EmailVerificationBy, bool> > expectedQuery = x => x.Ticket == command.Ticket; queries.Setup(x => x.Execute(It.Is(expectedQuery))) .Returns(Task.FromResult(entity)); var validator = new FakeMustBePurposedVerifyEmailTicketValidator(queries.Object); var result = validator.Validate(command); result.IsValid.ShouldBeFalse(); Func <ValidationFailure, bool> ticketError = x => x.PropertyName == command.PropertyName(y => y.Ticket); result.Errors.Count(ticketError).ShouldEqual(1); result.Errors.Single(ticketError).ErrorMessage.ShouldEqual(Resources .Validation_EmailVerificationTicket_IsWrongPurpose .Replace("{PropertyName}", EmailVerification.Constraints.Label.ToLower()) ); queries.Verify(x => x.Execute(It.Is(expectedQuery)), Times.Once); validator.ShouldHaveValidationErrorFor(x => x.Ticket, command); queries.Verify(x => x.Execute(It.Is(expectedQuery)), Times.Exactly(2)); }
public void IsValid_WhenAllRulesPass(EmailVerificationPurpose purpose) { var queries = new Mock <IProcessQueries>(MockBehavior.Strict); var validator = new ValidateSendVerificationEmailCommand(queries.Object); var command = new SendVerificationEmail { EmailAddress = "*****@*****.**", IsExpectingEmail = true, Purpose = purpose, SendFromUrl = "[send from this url]", VerifyUrlFormat = "[here is the token:' {0}']", }; Expression <Func <EmailAddressBy, bool> > expectedQuery = x => x.Value == command.EmailAddress; User user = new ProxiedUser(FakeData.Id()); var emailAddress = new EmailAddress { Value = command.EmailAddress, User = user, }; queries.Setup(x => x.Execute(It.Is(expectedQuery))).Returns(Task.FromResult(emailAddress)); var result = validator.Validate(command); result.IsValid.ShouldBeTrue(); }
public void IsValid_WhenEmailVerificationByTicket_IsAllowedPurpose( EmailVerificationPurpose entityPurpose, EmailVerificationPurpose allowedPurpose1, EmailVerificationPurpose?allowedPurpose2) { var ticket = FakeData.String(); var queries = new Mock <IProcessQueries>(MockBehavior.Strict); var command = new FakeMustBePurposedVerifyEmailTicketCommand { Ticket = ticket, Purpose1 = allowedPurpose1, Purpose2 = allowedPurpose2, }; var entity = new EmailVerification { Ticket = ticket, Purpose = entityPurpose, }; Expression <Func <EmailVerificationBy, bool> > expectedQuery = x => x.Ticket == command.Ticket; queries.Setup(x => x.Execute(It.Is(expectedQuery))) .Returns(Task.FromResult(entity)); var validator = new FakeMustBePurposedVerifyEmailTicketValidator(queries.Object); var result = validator.Validate(command); result.IsValid.ShouldBeTrue(); queries.Verify(x => x.Execute(It.Is(expectedQuery)), Times.Once); validator.ShouldNotHaveValidationErrorFor(x => x.Ticket, command); queries.Verify(x => x.Execute(It.Is(expectedQuery)), Times.Exactly(2)); }
public void Query_Ctor_SetsProperties(EmailVerificationPurpose purpose) { var token = FakeData.String(); var ticket = FakeData.String(); var query = new EmailVerificationTokenIsValid(token, ticket, purpose); query.Token.ShouldEqual(token); query.Ticket.ShouldEqual(ticket); query.Purpose.ShouldEqual(purpose); }
public void Query_Ctor_SetsProperties(EmailVerificationPurpose purpose) { var token = Guid.NewGuid().ToString(); var ticket = Guid.NewGuid().ToString(); var query = new EmailVerificationTokenIsValid(token, ticket, purpose); query.Token.ShouldEqual(token); query.Ticket.ShouldEqual(ticket); query.Purpose.ShouldEqual(purpose); }
public void IsValid_WhenPurpose_IsNotInvalid(EmailVerificationPurpose purpose) { var command = new FakeMustBeValidVerifyEmailPurposeCommand { Purpose = purpose }; var validator = new FakeMustBeValidVerifyEmailPurposeValidator(); var result = validator.Validate(command); result.IsValid.ShouldBeTrue(); validator.ShouldNotHaveValidationErrorFor(x => x.Purpose, command.Purpose); }
public void Handler_ReturnsFalse_WhenTicketIsEmpty(EmailVerificationPurpose purpose, string ticket) { string token = FakeData.String(); var command = new EmailVerificationTokenIsValid(token, ticket, purpose); var userStore = new Mock<IUserStore<UserTicket, string>>(MockBehavior.Strict); var userManager = new UserManager<UserTicket, string>(userStore.Object); var tokenProvider = new Mock<IUserTokenProvider<UserTicket, string>>(MockBehavior.Strict); Expression<Func<IUserTokenProvider<UserTicket, string>, Task<bool>>> expectedMethod = x => x.ValidateAsync(purpose.ToString(), token, userManager, It.Is<UserTicket>(y => y.UserName == ticket)); tokenProvider.Setup(expectedMethod) .Returns(Task.FromResult(true)); userManager.UserTokenProvider = tokenProvider.Object; var handler = new HandleEmailVerificationTokenIsValidQuery(userManager); bool result = handler.Handle(command).Result; result.ShouldBeFalse(); tokenProvider.Verify(expectedMethod, Times.Never); }
public void Handler_ReturnsFalse_WhenTicketIsEmpty(EmailVerificationPurpose purpose, string ticket) { string token = Guid.NewGuid().ToString(); var command = new EmailVerificationTokenIsValid(token, ticket, purpose); var userStore = new Mock <IUserStore <UserTicket, string> >(MockBehavior.Strict); var userManager = new UserManager <UserTicket, string>(userStore.Object); var tokenProvider = new Mock <IUserTokenProvider <UserTicket, string> >(MockBehavior.Strict); Expression <Func <IUserTokenProvider <UserTicket, string>, Task <bool> > > expectedMethod = x => x.ValidateAsync(purpose.ToString(), token, userManager, It.Is <UserTicket>(y => y.UserName == ticket)); tokenProvider.Setup(expectedMethod) .Returns(Task.FromResult(true)); userManager.UserTokenProvider = tokenProvider.Object; var handler = new HandleEmailVerificationTokenIsValidQuery(userManager); bool result = handler.Handle(command).Result; result.ShouldBeFalse(); tokenProvider.Verify(expectedMethod, Times.Never); }
public void IsValid_WhenAllRulesPass(EmailVerificationPurpose purpose) { var queries = new Mock<IProcessQueries>(MockBehavior.Strict); var validator = new ValidateSendVerificationEmailCommand(queries.Object); var command = new SendVerificationEmail { EmailAddress = "*****@*****.**", IsExpectingEmail = true, Purpose = purpose, SendFromUrl = "[send from this url]", VerifyUrlFormat = "[here is the token:' {0}']", }; Expression<Func<EmailAddressBy, bool>> expectedQuery = x => x.Value == command.EmailAddress; User user = new ProxiedUser(FakeData.Id()); var emailAddress = new EmailAddress { Value = command.EmailAddress, User = user, }; queries.Setup(x => x.Execute(It.Is(expectedQuery))).Returns(Task.FromResult(emailAddress)); var result = validator.Validate(command); result.IsValid.ShouldBeTrue(); }
public void IsInvalid_WhenPurpose_IsZero(EmailVerificationPurpose? purpose) { var queries = new Mock<IProcessQueries>(MockBehavior.Strict); var validator = new ValidateSendVerificationEmailCommand(queries.Object); var command = new SendVerificationEmail(); if (purpose.HasValue) command.Purpose = purpose.Value; var result = validator.Validate(command); result.IsValid.ShouldBeFalse(); Func<ValidationFailure, bool> targetError = x => x.PropertyName == command.PropertyName(y => y.Purpose); result.Errors.Count(targetError).ShouldEqual(1); result.Errors.Single(targetError).ErrorMessage.ShouldEqual(Resources.Validation_EmailVerificationPurpose_IsEmpty .Replace("{PropertyName}", EmailVerification.Constraints.Label.ToLower()) ); }
/// <summary> /// Verify that a given token is valid for an EmailVerification ticket and purpose. /// </summary> /// <param name="token">Token generated for the EmailVerification Ticket.</param> /// <param name="ticket">EmailVerification Ticket used to generate the Token.</param> /// <param name="purpose">Purpose of the EmailVerification Ticket.</param> public EmailVerificationTokenIsValid(string token, string ticket, EmailVerificationPurpose purpose) { Token = token; Ticket = ticket; Purpose = purpose; }