mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-19 00:01:29 +00:00
This commit fixes two critical test failures and two test isolation issues in the SSL configuration tests. ## Critical Test Failures Fixed ### 1. test_get_ssl_configuration **Problem:** Test was failing with assertion error that ssl.create_default_context was never called (expected 1 call, got 0). **Root Cause:** The get_ssl_configuration() function uses a caching mechanism (_ssl_context_cache) to avoid creating duplicate SSL contexts with the same configuration. When tests run in sequence, a previous test may have created an SSL context with the same configuration (same cafile, ssl_security_level, ssl_ecdh_curve). When this test runs, it retrieves the cached context instead of creating a new one, so ssl.create_default_context() is never called, causing the mock assertion to fail. **Fix:** Clear the SSL context cache at the start of the test to ensure a fresh context is created, allowing the mock to be called and verified. ### 2. test_ssl_ecdh_curve **Problem:** Test was failing with assertion error that set_ecdh_curve was never called (expected 1 call, got 0). **Root Cause:** Same caching issue as above. Additionally, the test needed to use a real SSLContext instance instead of a MagicMock because _create_ssl_context calls methods like set_ciphers() and minimum_version that require a real context. **Fix:** - Clear the SSL context cache at the start of the test - Use a real SSLContext instance and patch set_ecdh_curve on it specifically - Added explanatory comment about why a real context is needed ## Test Isolation Issues Fixed ### 3. test_ssl_security_level **Problem:** Test was failing because it expected LiteLLMAiohttpTransport but got httpx.AsyncHTTPTransport instead. **Root Cause:** Test isolation issue. Other tests in the file (test_force_ipv4_transport, test_aiohttp_disabled_transport) set litellm.disable_aiohttp_transport = True but don't restore the original value. When this test runs after those tests, aiohttp transport is disabled, causing it to use httpx transport instead. **Fix:** Explicitly enable aiohttp transport at the start of the test and restore the original value in a finally block, ensuring the test works regardless of test execution order. ### 4. test_ssl_verification_with_aiohttp_transport **Problem:** Same as above - expected LiteLLMAiohttpTransport but got httpx.AsyncHTTPTransport. **Root Cause:** Same test isolation issue - aiohttp transport disabled by previous tests. **Fix:** Same approach - explicitly enable aiohttp transport and restore original value in finally block. ## Why These Fixes Work 1. **Cache clearing:** By clearing _ssl_context_cache before each test, we ensure that get_ssl_configuration() creates a fresh SSL context, allowing mocks to be properly called and verified. 2. **Test isolation:** By saving and restoring the disable_aiohttp_transport setting, tests are independent of each other and work correctly regardless of execution order. These are minimal, targeted fixes that address the root causes without modifying production code or affecting other functionality. |
||
|---|---|---|
| .. | ||
| test_aiohttp_handler.py | ||
| test_aiohttp_transport.py | ||
| test_http_handler.py | ||
| test_llm_http_handler.py | ||