"""Tests for AuthService with Flask-JWT-Extended.""" from unittest.mock import Mock, patch from app import create_app from app.services.auth_service import AuthService class TestAuthServiceJWTExtended: """Test cases for AuthService with Flask-JWT-Extended.""" def test_init_without_app(self) -> None: """Test initializing AuthService without Flask app.""" auth_service = AuthService() assert auth_service.oauth is not None assert auth_service.google is None assert auth_service.token_service is not None @patch("app.services.auth_service.os.getenv") def test_init_app(self, mock_getenv: Mock) -> None: """Test initializing AuthService with Flask app.""" mock_getenv.side_effect = lambda key: { "GOOGLE_CLIENT_ID": "test_client_id", "GOOGLE_CLIENT_SECRET": "test_client_secret", }.get(key) app = create_app() auth_service = AuthService() auth_service.init_app(app) # Verify OAuth was initialized assert auth_service.google is not None @patch("app.services.auth_service.unset_jwt_cookies") @patch("app.services.auth_service.jsonify") def test_logout(self, mock_jsonify: Mock, mock_unset: Mock) -> None: """Test logout functionality.""" app = create_app() with app.app_context(): mock_response = Mock() mock_jsonify.return_value = mock_response auth_service = AuthService() result = auth_service.logout() assert result == mock_response mock_unset.assert_called_once_with(mock_response) mock_jsonify.assert_called_once_with( {"message": "Logged out successfully"} )