public void ResetUserPasswordCommandHandler_Succeeds() { var handler = new ResetUserPasswordCommandHandler(_repository); var command = new ResetUserPasswordCommand("*****@*****.**", "test", "test2"); var user = Substitute.For <User>(); user.Email.Returns("*****@*****.**"); user.Status.Returns(UserStatus.Active); user.Password.Returns(new Password("test")); user.PasswordResetToken.Returns(new TemporaryPassword("test")); _context.Users.Add(user); var result = handler.Execute(command); result.Success.Should().BeTrue(); user.Received().ResetPassword("test2"); user.DidNotReceive().ResetPasswordFailed(); }
public void ResetUserPasswordCommandHandler_Fails_For_Incorrect_Token() { var handler = new ResetUserPasswordCommandHandler(_repository); var command = new ResetUserPasswordCommand("*****@*****.**", "wrong", "test2"); var user = Substitute.For <User>(); user.Email.Returns("*****@*****.**"); user.Status.Returns(UserStatus.Active); user.Password.Returns(new Password("test")); user.PasswordResetToken.Returns(new TemporaryPassword("test")); _context.Users.Add(user); var result = handler.Execute(command); result.Errors.Should().HaveCount(1); result.Errors[0].Expression.Should().BeNull(); result.Errors[0].Message.Should().Be("The password reset link has expired; please request a new one"); user.DidNotReceive().ResetPassword(Arg.Any <string>()); user.Received().ResetPasswordFailed(); }
public void ResetUserPasswordCommandHandler_Throws_Exception_For_Invalid_User() { var handler = new ResetUserPasswordCommandHandler(_repository); var command = new ResetUserPasswordCommand("*****@*****.**", "test", "test2"); var user = Substitute.For <User>(); user.Email.Returns("*****@*****.**"); user.Status.Returns(UserStatus.Inactive); user.Password.Returns(new Password("test")); user.PasswordResetToken.Returns(new TemporaryPassword("test")); _context.Users.Add(user); Action commandAction = () => { var result = handler.Execute(command); }; commandAction.Should().Throw <InvalidOperationException>(); user.DidNotReceive().ResetPassword(Arg.Any <string>()); user.DidNotReceive().ResetPasswordFailed(); }
public void ResetUserPasswordCommandHandler_Fails_For_Expired_Token() { var handler = new ResetUserPasswordCommandHandler(_repository); var command = new ResetUserPasswordCommand("*****@*****.**", "test", "test2"); var user = Substitute.For <User>(); user.Email.Returns("*****@*****.**"); user.Status.Returns(UserStatus.Active); user.Password.Returns(new Password("test")); var token = new TemporaryPassword("test"); typeof(TemporaryPassword).GetProperty(nameof(TemporaryPassword.ExpiryDate)).SetValue(token, DateTime.UtcNow.AddSeconds(-60)); user.PasswordResetToken.Returns(token); _context.Users.Add(user); var result = handler.Execute(command); result.Errors.Should().HaveCount(1); result.Errors[0].Expression.Should().BeNull(); result.Errors[0].Message.Should().Be("The password reset link has expired; please request a new one"); user.DidNotReceive().ResetPassword(Arg.Any <string>()); user.Received().ResetPasswordFailed(); }