public void AuthenticateInvalidCredentialsTest()
        {
            UserAccountController userController = CreateFakeUserAccountController();

            //Authenticate with invalid credentials
            var response = userController.Authenticate(
                new ReceiveLoginUserModel(_users[0].Email, "wrong-password")
                );

            Assert.IsType <BadRequestObjectResult>(response.Result);

            response = userController.Authenticate(
                new ReceiveLoginUserModel("wrong-email", "password-u1")
                );
            Assert.IsType <BadRequestObjectResult>(response.Result);
        }
        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)
                );
        }