public void AuthenticateValidCredentialsTest() { UserAccountController userController = CreateFakeUserAccountController(); //Authenticate with valid credentials var response = userController.Authenticate( new ReceiveLoginUserModel(_users[0].Email, "password-u1") ); Assert.IsType <OkObjectResult>(response.Result); //Validate return data from endpoint SendLoginUserModel sendLoginUserModel = (SendLoginUserModel)((OkObjectResult)response.Result).Value; Assert.Equal(_users[0].Id, sendLoginUserModel.Id); Assert.Equal(_users[0].Email, sendLoginUserModel.Email); TokenCreatorValidator tokenCreatorValidator = new TokenCreatorValidator(_testApiSecret); TokenValidationParams tokenValidationParams = tokenCreatorValidator.ValidateToken(sendLoginUserModel.Token); Assert.Equal(_users[0].Id, tokenValidationParams.UserId); User authenticatedUser = _usersService.GetById(_users[0].Id); Assert.Equal( Encoding.Default.GetString(authenticatedUser.AuthSalt), Encoding.Default.GetString(tokenValidationParams.SaltBytes) ); }
public ActionResult <SendLoginUserModel> Authenticate([FromBody] ReceiveLoginUserModel userModel) { User user; try { user = _userService.Authenticate(userModel.Email, userModel.Password); } catch (RequestException) { return(BadRequest(new { message = "Email or password is incorrect" })); } TokenCreationParams tokenCreationParams = _tokenCreatorValidator.CreateToken(user.Id, 60 * 24 * 7); user.AuthSalt = tokenCreationParams.SaltBytes; _userService.Update(user); SendLoginUserModel sendLoginUserModel = _mapper.Map <SendLoginUserModel>(user); sendLoginUserModel.Token = tokenCreationParams.TokenStr; return(Ok(sendLoginUserModel)); }