Spaces:
Paused
Paused
| import datetime | |
| import json | |
| import os | |
| import sys | |
| import unittest | |
| from typing import List, Optional, Tuple | |
| from unittest.mock import ANY, MagicMock, Mock, patch | |
| import httpx | |
| import pytest | |
| sys.path.insert( | |
| 0, os.path.abspath("../../..") | |
| ) # Adds the parent directory to the system-path | |
| import litellm | |
| async def test_construct_request_headers_project_id_from_env(monkeypatch): | |
| """Test that construct_request_headers uses GCS_PUBSUB_PROJECT_ID environment variable.""" | |
| from litellm.integrations.gcs_pubsub.pub_sub import GcsPubSubLogger | |
| # Set up test environment variable | |
| test_project_id = "test-project-123" | |
| monkeypatch.setenv("GCS_PUBSUB_PROJECT_ID", test_project_id) | |
| monkeypatch.setattr( | |
| "litellm.proxy.proxy_server.premium_user", | |
| True, | |
| ) | |
| try: | |
| # Create handler with no project_id | |
| handler = GcsPubSubLogger( | |
| topic_id="test-topic", credentials_path="test-path.json" | |
| ) | |
| # Mock the Vertex AI auth calls | |
| mock_auth_header = "mock-auth-header" | |
| mock_token = "mock-token" | |
| with patch( | |
| "litellm.vertex_chat_completion._ensure_access_token_async" | |
| ) as mock_ensure_token: | |
| mock_ensure_token.return_value = (mock_auth_header, test_project_id) | |
| with patch( | |
| "litellm.vertex_chat_completion._get_token_and_url" | |
| ) as mock_get_token: | |
| mock_get_token.return_value = (mock_token, "mock-url") | |
| # Call construct_request_headers | |
| headers = await handler.construct_request_headers() | |
| # Verify headers | |
| assert headers == { | |
| "Authorization": f"Bearer {mock_token}", | |
| "Content-Type": "application/json", | |
| } | |
| # Verify _ensure_access_token_async was called with correct project_id | |
| mock_ensure_token.assert_called_once_with( | |
| credentials="test-path.json", | |
| project_id=test_project_id, | |
| custom_llm_provider="vertex_ai", | |
| ) | |
| finally: | |
| # Clean up environment variable | |
| del os.environ["GCS_PUBSUB_PROJECT_ID"] | |