public void Should_return_null_when_parameters_are_missing_or_invalid(string username, string email)
        {
            // Given
            var userService = new UserService(A.Dummy<IRavenSessionProvider>(), A.Dummy<IPasswordService>());

            // When
            var password = userService.CreateUser(username, email);

            // Then
            password.ShouldBe(null);
        }
        public void Should_return_null_token_when_user_is_null()
        {
            // Given
            User user = null;
            var userService = new UserService(A.Dummy<IRavenSessionProvider>(), A.Dummy<IPasswordService>());

            // When
            var password = userService.ForgotPasswordReset(user);

            // Then
            password.ShouldBe(null);
        }
        public void Should_set_user_properties_when_valid_user_and_email_are_supplied()
        {
            // Given

            var user = new User() { ForgotPasswordRequestToken = MakeFake.Guid };
            var userService = new UserService(A.Dummy<IRavenSessionProvider>(), A.Dummy<IPasswordService>());

            // When
            userService.ForgotPasswordReset(user);

            // Then
            user.Salt.ShouldNotBe(null);
            user.Hash.ShouldNotBe(null);
            user.ForgotPasswordRequestToken.ShouldBe(string.Empty);
        }
        public void Should_return_valid_password_when_valid_user_and_email_are_supplied()
        {
            // Given

            var user = new User();
            var fakePasswordService = MakeFake.PasswordService();
            var userService = new UserService(A.Dummy<IRavenSessionProvider>(), fakePasswordService);

            // When
            var password = userService.ForgotPasswordReset(user);

            // Then
            password.ShouldNotBe(null);
            password.Length.ShouldBe(PasswordService.PasswordCharactersCount);
        }
        public void Should_return_password_when_valid_username_and_password_are_supplied()
        {
            // Given
            var username = MakeFake.Username;
            var email = MakeFake.Email;
            var fakePasswordService = MakeFake.PasswordService();
            var userService = new UserService(A.Dummy<IRavenSessionProvider>(), fakePasswordService);

            // When
            var password = userService.CreateUser(username, email);

            // Then
            password.ShouldNotBe(null);
            password.Length.ShouldBe(PasswordService.PasswordCharactersCount);
        }
        public void Should_return_password_when_valid_user_and_password_are_supplied()
        {
            // Given
            var user = new User();
            var fakePasswordService = MakeFake.PasswordService();
            A.CallTo(() => fakePasswordService.IsPasswordValid(A<User>.Ignored, A<string>.Ignored)).Returns(true);
            var userService = new UserService(A.Dummy<IRavenSessionProvider>(), fakePasswordService);

            // When
            var password = userService.ResetPassword(user);

            // Then
            password.ShouldNotBe(null);
            password.Length.ShouldBe(PasswordService.PasswordCharactersCount);
        }
        public void Should_return_token_when_valid_user_and_email_are_supplied()
        {
            // Given

            var user = new User();
            var userService = new UserService(A.Dummy<IRavenSessionProvider>(), A.Dummy<IPasswordService>());

            // When
            var token = userService.ForgotPasswordRequest(user);

            // Then
            token.ShouldNotBe(null);
            token.ToString().IsGuid().ShouldBe(true);
            user.ForgotPasswordRequestToken.ShouldBe(token);
            user.ForgotPasswordRequestDate.Ticks.ShouldBeLessThan(DateTime.Now.AddSeconds(1).Ticks);
        }