Пример #1
0
        public void ReturnBadRequest_WhenInvalidEmail_OnCallToSendResetToken()
        {
            var model = new PasswordResetDto
            {
                Email = "*****@*****.**"
            };

            var userRepository = A.Fake <IUserRepository>();

            A.CallTo(() => userRepository.UserExists(model.Email)).Returns(false);

            var emailsController = new EmailsController(null, userRepository, null);

            var response = emailsController.SendResetToken(model);

            Assert.AreEqual((int)HttpStatusCode.BadRequest, ((BadRequestObjectResult)response).StatusCode);
            Assert.AreEqual($"User with email {model.Email} does not exist.", ((BadRequestObjectResult)response).Value);
        }
Пример #2
0
        public ActionResult SendResetToken(PasswordResetDto model)
        {
            if (!_userRepository.UserExists(model.Email))
            {
                return(BadRequest($"User with email {model.Email} does not exist."));
            }

            var user       = _userRepository.GetUser(model.Email);
            var resetToken = Guid.NewGuid();
            var expiryDate = DateTime.Now.AddDays(1);

            _userRepository.SetPasswordResetFields(user.Id, resetToken, expiryDate);

            var resetLink = $"{_config.SiteUrl}/reset-password/{user.Id}/{resetToken}";

            _emailHelper.SendResetToken(model.Email, resetLink);

            return(Ok());
        }
Пример #3
0
        public void ReturnOkResult_WhenValidUser_CallsSendResetToken()
        {
            var model = new PasswordResetDto
            {
                Email = "*****@*****.**"
            };

            var userRepository = A.Fake <IUserRepository>();

            A.CallTo(() => userRepository.UserExists(model.Email)).Returns(true);

            var config      = A.Fake <IEmailConfiguration>();
            var emailHelper = A.Fake <IEmailHelper>();

            var emailsController = new EmailsController(config, userRepository, emailHelper);

            var response = emailsController.SendResetToken(model);

            A.CallTo(() => userRepository.SetPasswordResetFields(A <int> .Ignored, A <Guid?> .Ignored, A <DateTime?> .Ignored)).MustHaveHappened();
            A.CallTo(() => emailHelper.SendResetToken(model.Email, A <string> .Ignored)).MustHaveHappened();
            Assert.AreEqual((int)HttpStatusCode.OK, ((OkResult)response).StatusCode);
        }