Exemple #1
0
        public void ResetPasswordShouldReturnBadRequestWhenGenerateAndSendIsFailed()
        {
            const string code     = "token";
            const string password = "******";
            Guid         userId   = Guid.NewGuid();

            var request = new ResetPasswordRequest
            {
                Code     = code,
                Password = password,
                UserId   = userId
            };

            var user     = new User();
            var response = SendGridHelper.GetEmptyResponse(System.Net.HttpStatusCode.BadRequest);

            _mock.Mock <IUserManager>()
            .Setup(manager => manager.FindByIdAsync(userId))
            .ReturnsAsync(user);

            _mock.Mock <IUserManager>()
            .Setup(manager => manager.ResetPasswordAsync(user, code, password))
            .ReturnsAsync(IdentityResult.Failed());

            var controller = _mock.Create <AuthController>();

            var expected = new BadRequestException("TOKEN_IS_INVALID");

            ExceptionAssert.ThrowsAsync(expected, () => controller.ResetPassword(request));
        }
        public void ShouldThrowCanNotSendEmailException()
        {
            var user = new User()
            {
                Id    = Guid.NewGuid(),
                Email = "*****@*****.**"
            };
            var link      = "link";
            var clientUrl = "url";
            var subject   = "subject";
            var body      = "body";
            var token     = "token";

            var response = SendGridHelper.GetEmptyResponse(System.Net.HttpStatusCode.BadRequest);

            _mock.Mock <IClientUriService>()
            .Setup(x => x.BuildUri(clientUrl, new NameValueCollection()
            {
                { "userId", user.Id.ToString() },
                { "code", token },
            }))
            .Returns(link);

            _mock.Mock <IEmailService>()
            .Setup(x => x.SendAsync(It.Is <SendSingleEmailRequest>(request => request.Email == user.Email && request.Subject == subject && request.Content == body)))
            .ReturnsAsync(response);

            var expected = new CanNotSendEmailException(response.StatusCode.ToString());

            ExceptionAssert.ThrowsAsync(expected, () => _service.GenerateAndSendTokenAsync(user, token, clientUrl, subject, body));
        }
Exemple #3
0
        public async Task ForgotPasswordShouldReturnBadRequestWhenUserIsNotFound()
        {
            const string email           = "[email protected]";
            const string validationToken = "validation token";

            var request = new ForgotPasswordRequest
            {
                Email           = email,
                ValidationToken = validationToken
            };

            var response = SendGridHelper.GetEmptyResponse(System.Net.HttpStatusCode.Accepted);

            _mock.Mock <IUserManager>()
            .Setup(manager => manager.FindByEmailAsync(email))
            .ReturnsAsync(null as User);

            _mock.Mock <ICaptchaValidationService>()
            .Setup(provider => provider.IsValidAsync(validationToken))
            .ReturnsAsync(true);

            var controller = _mock.Create <AuthController>();
            var actual     = await controller.ForgotPassword(request);

            var expected = new BadRequestObjectResult("USER_NOT_FOUND");

            ContentAssert.AreEqual(expected, actual);
        }
        public async Task ShouldGenerateAndSendPasswordResetToken()
        {
            var user = new User()
            {
                Id    = Guid.NewGuid(),
                Email = "*****@*****.**"
            };
            var link      = "link";
            var clientUrl = "url";
            var subject   = "subject";
            var body      = "body";
            var token     = "token";

            var response = SendGridHelper.GetEmptyResponse(System.Net.HttpStatusCode.Accepted);

            _mock.Mock <IClientUriService>()
            .Setup(x => x.BuildUri(clientUrl, new NameValueCollection()
            {
                { "userId", user.Id.ToString() },
                { "code", token },
            }))
            .Returns(link);

            _mock.Mock <IEmailService>()
            .Setup(x => x.SendAsync(It.Is <SendSingleEmailRequest>(request => request.Email == user.Email && request.Subject == subject && request.Content == body)))
            .ReturnsAsync(response);

            await _service.GenerateAndSendTokenAsync(user, token, clientUrl, subject, body);

            _mock.Mock <IEmailService>()
            .Verify(x => x.SendAsync(It.Is <SendSingleEmailRequest>(request => request.Email == user.Email && request.Subject == subject && request.Content == body)));
        }
Exemple #5
0
        public async Task ResetPasswordShouldReturnOkResultWhenAllIsCorrect()
        {
            const string code     = "token";
            const string password = "******";
            const string token    = "token";
            const string email    = "[email protected]";
            Guid         userId   = Guid.NewGuid();
            var          roles    = new List <string>
            {
                UserRoles.Employee.Name,
                UserRoles.CompanyAdministrator.Name,
            };

            var request = new ResetPasswordRequest
            {
                Code     = code,
                Password = password,
                UserId   = userId
            };

            var user = new User()
            {
                Id    = userId,
                Email = email,
            };

            var userDTO = new UserDTO
            {
                Email = email,
                Roles = roles,
            };

            var response = SendGridHelper.GetEmptyResponse(System.Net.HttpStatusCode.Accepted);

            var expected = new SignInResponse
            {
                Token = token,
                User  = new UserDTO
                {
                    Email = email,
                    Roles = roles,
                }
            };

            _mock.Mock <IUserManager>()
            .Setup(manager => manager.FindByIdAsync(userId))
            .ReturnsAsync(user);

            _mock.Mock <IUserManager>()
            .Setup(manager => manager.ResetPasswordAsync(user, code, password))
            .ReturnsAsync(IdentityResult.Success);

            _mock.Mock <ISignInResponseProvider>()
            .Setup(provider => provider.Get(user, false))
            .Returns(expected);

            var controller = _mock.Create <AuthController>();
            var actual     = await controller.ResetPassword(request);

            ContentAssert.AreEqual(expected, actual);
        }