Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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();
        }