50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
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")
|