public void GetForgotPasswordToken_throws_exception_when_email_is_nullorempty()
        {
            string email                          = string.Empty;
            var    userDataMock                   = new Mock <IUserData>();
            var    userForgotPasswordMock         = new Mock <IUserForgotPassword>();
            IForgotPasswordProcess forgotPassword = new ForgotPasswordProcess(userDataMock.Object, userForgotPasswordMock.Object);

            forgotPassword.GetForgotPasswordToken(email);
        }
        public void GetForgotPasswordToken_returns_empty_token_when_email_isnot_registered()
        {
            string         email        = "*****@*****.**";
            UserDataObject user         = null;
            var            userDataMock = new Mock <IUserData>();

            userDataMock.Setup(u => u.Get(email)).Returns(user);
            var userForgotPasswordMock            = new Mock <IUserForgotPassword>();
            IForgotPasswordProcess forgotPassword = new ForgotPasswordProcess(userDataMock.Object, userForgotPasswordMock.Object);
            string token = forgotPassword.GetForgotPasswordToken(email);

            Assert.IsTrue(string.IsNullOrEmpty(token));
        }
        public void ResetPassword_should_throw_exception_when_token_is_not_found()
        {
            string token = "1234567890";
            ForgotPasswordTokenObject tokenObject = null;

            var userDataMock           = new Mock <IUserData>();
            var userForgotPasswordMock = new Mock <IUserForgotPassword>();

            userForgotPasswordMock.Setup(x => x.Get(token)).Returns(tokenObject);
            IForgotPasswordProcess forgotPassword = new ForgotPasswordProcess(userDataMock.Object, userForgotPasswordMock.Object);

            forgotPassword.ResetPassword(token, string.Empty, string.Empty);
        }
        public void IsValidPasswordToken_should_return_false_when_no_token_is_found()
        {
            string token = "1234567890";
            ForgotPasswordTokenObject tokenObject = null;

            var userDataMock           = new Mock <IUserData>();
            var userForgotPasswordMock = new Mock <IUserForgotPassword>();

            userForgotPasswordMock.Setup(x => x.Get(token)).Returns(tokenObject);
            IForgotPasswordProcess forgotPassword = new ForgotPasswordProcess(userDataMock.Object, userForgotPasswordMock.Object);
            bool isvalid = forgotPassword.IsValidPasswordToken(token);

            Assert.IsFalse(isvalid);
        }
        public void ResetPassword_should_throw_exception_when_token_is_Expired()
        {
            string token = "1234567890";
            ForgotPasswordTokenObject tokenObject = new ForgotPasswordTokenObject
            {
                Token          = token,
                ExpiryDateTime = DateTime.UtcNow.AddDays(-2)
            };

            var userDataMock           = new Mock <IUserData>();
            var userForgotPasswordMock = new Mock <IUserForgotPassword>();

            userForgotPasswordMock.Setup(x => x.Get(token)).Returns(tokenObject);
            IForgotPasswordProcess forgotPassword = new ForgotPasswordProcess(userDataMock.Object, userForgotPasswordMock.Object);

            forgotPassword.ResetPassword(token, string.Empty, string.Empty);
        }
        public void IsValidPasswordToken_should_return_false_when_valid_token_is_returned()
        {
            string token = "1234567890";
            ForgotPasswordTokenObject tokenObject = new ForgotPasswordTokenObject
            {
                Token          = token,
                ExpiryDateTime = DateTime.UtcNow.AddHours(4)
            };

            var userDataMock           = new Mock <IUserData>();
            var userForgotPasswordMock = new Mock <IUserForgotPassword>();

            userForgotPasswordMock.Setup(x => x.Get(token)).Returns(tokenObject);
            IForgotPasswordProcess forgotPassword = new ForgotPasswordProcess(userDataMock.Object, userForgotPasswordMock.Object);
            bool isvalid = forgotPassword.IsValidPasswordToken(token);

            Assert.IsTrue(isvalid);
        }
        public void ResetPassword_should_throw_exception_when_passwords_do_not_match()
        {
            string token      = "1234567890";
            string password   = "******";
            string repassword = "******";
            ForgotPasswordTokenObject tokenObject = new ForgotPasswordTokenObject
            {
                Token          = token,
                ExpiryDateTime = DateTime.UtcNow.AddDays(2)
            };

            var userDataMock           = new Mock <IUserData>();
            var userForgotPasswordMock = new Mock <IUserForgotPassword>();

            userForgotPasswordMock.Setup(x => x.Get(token)).Returns(tokenObject);
            IForgotPasswordProcess forgotPassword = new ForgotPasswordProcess(userDataMock.Object, userForgotPasswordMock.Object);

            forgotPassword.ResetPassword(token, password, repassword);
        }
        public void ResetPassword_should_call_forgotpassworddata_method_when_token_password_are_valid()
        {
            string token      = "1234567890";
            string password   = "******";
            string repassword = "******";
            ForgotPasswordTokenObject tokenObject = new ForgotPasswordTokenObject
            {
                Token          = token,
                ExpiryDateTime = DateTime.UtcNow.AddDays(2)
            };

            var userDataMock           = new Mock <IUserData>();
            var userForgotPasswordMock = new Mock <IUserForgotPassword>();

            userForgotPasswordMock.Setup(x => x.Get(token)).Returns(tokenObject);
            IForgotPasswordProcess forgotPassword = new ForgotPasswordProcess(userDataMock.Object, userForgotPasswordMock.Object);

            forgotPassword.ResetPassword(token, password, repassword);

            userForgotPasswordMock.Verify(x => x.ResetPassword(token, IGenProtector.Encrypt(password)));
        }