Exemple #1
0
        public async Task <IActionResult> LoginAsync(UserLoginViewModel loginViewModel)
        {
            var validator           = new UserLoginViewModelValidator(_accountService);
            ValidationResult result = validator.Validate(loginViewModel);

            if (!result.IsValid)
            {
                return(BadRequest(new ErrorResponseFormat(result.Errors.First().ErrorMessage)));
            }

            if (await _accountService.CheckUserHasTokenAsync(loginViewModel.Email))
            {
                return(BadRequest(new ErrorResponseFormat(Constants.Errors.TOKEN_ALREADY_SENT)));
            }

            UserLoginModel authorizationModel = _mapper.Map <UserLoginModel>(loginViewModel);
            UserModel      user = await _accountService.AuthenticateAsync(authorizationModel);

            if (user == null)
            {
                return(BadRequest(new ErrorResponseFormat(Constants.Errors.INVALID_PASSWORD)));
            }
            string tokenString = _jwtService.GetJWTToken(user, new ClaimsService(_jwtSettings));

            return(Ok(new { token = tokenString }));
        }
        public void TestingWithAllFieldsEmpty()
        {
            var viewModel = new UserLoginViewModel();
            var validator = new UserLoginViewModelValidator();
            var results = validator.Validate(viewModel);

            results.Errors.Count.Should().Be(2);
            results.Errors[0].ErrorMessage.Should().Be("'Login' deve ser preenchido.");
            results.Errors[1].ErrorMessage.Should().Be("'Senha' deve ser preenchido.");
        }
        public void Under18CantAccess_FluentValidator()
        {
            //Arrange
            //set up fluent validation
            validator = new UserLoginViewModelValidator();

            //Act
            var response = validator.ShouldHaveValidationErrorFor(login =>
                                                                  login.Dob, DateTime.Now.AddYears(-17));

            //Assert
            Assert.True(response.Any() == true);
            Assert.True(response.First().ErrorMessage == AppConstants.Under18LoginAttemptError);
        }