import pytest from unittest.mock import MagicMock from ea_chatbot.history.manager import HistoryManager from ea_chatbot.auth import get_user_auth_type, AuthType # Mocks @pytest.fixture def mock_history_manager(): return MagicMock(spec=HistoryManager) def test_auth_flow_existing_local_user(mock_history_manager): """Test that an existing user with a password returns LOCAL auth type.""" # Setup mock_user = MagicMock() mock_user.password_hash = "hashed_secret" mock_history_manager.get_user.return_value = mock_user # Execute auth_type = get_user_auth_type("test@example.com", mock_history_manager) # Verify assert auth_type == AuthType.LOCAL mock_history_manager.get_user.assert_called_once_with("test@example.com") def test_auth_flow_existing_oidc_user(mock_history_manager): """Test that an existing user WITHOUT a password returns OIDC auth type.""" # Setup mock_user = MagicMock() mock_user.password_hash = None # No password implies OIDC mock_history_manager.get_user.return_value = mock_user # Execute auth_type = get_user_auth_type("sso@example.com", mock_history_manager) # Verify assert auth_type == AuthType.OIDC mock_history_manager.get_user.assert_called_once_with("sso@example.com") def test_auth_flow_new_user(mock_history_manager): """Test that a non-existent user returns NEW auth type.""" # Setup mock_history_manager.get_user.return_value = None # Execute auth_type = get_user_auth_type("new@example.com", mock_history_manager) # Verify assert auth_type == AuthType.NEW mock_history_manager.get_user.assert_called_once_with("new@example.com")