import pytest from unittest.mock import MagicMock, patch from ea_chatbot.auth import OIDCClient @patch("ea_chatbot.auth.OAuth2Session") def test_oidc_client_initialization(mock_oauth): client = OIDCClient( client_id="test_id", client_secret="test_secret", server_metadata_url="https://test.server/.well-known/openid-configuration" ) assert client.oauth_session is not None @patch("ea_chatbot.auth.requests") @patch("ea_chatbot.auth.OAuth2Session") def test_get_login_url(mock_oauth_cls, mock_requests): # Setup mock session mock_session = MagicMock() mock_oauth_cls.return_value = mock_session # Mock metadata response mock_response = MagicMock() mock_response.json.return_value = { "authorization_endpoint": "https://test.server/auth", "token_endpoint": "https://test.server/token", "userinfo_endpoint": "https://test.server/userinfo" } mock_requests.get.return_value = mock_response # Mock authorization url generation mock_session.create_authorization_url.return_value = ("https://test.server/auth?response_type=code", "state") client = OIDCClient( client_id="test_id", client_secret="test_secret", server_metadata_url="https://test.server/.well-known/openid-configuration" ) url = client.get_login_url() assert url == "https://test.server/auth?response_type=code" # Verify metadata was fetched via requests mock_requests.get.assert_called_with("https://test.server/.well-known/openid-configuration")