litellm/tests
abhi 9b1fdc1d8d fix: address three bugbot findings (team re-auth, provider override, proxy settings)
All three confirmed real and reproduced before fixing.

1. [High] Team allowlist bypassed AND-on-target. The rewrite re-auth called
   can_key_call_model, which checks only the key's own allowlist, so team,
   team-member, and project allowlists were never re-checked against the
   resolved target. An unrestricted key on a team whose allowlist held only a
   stale unserved name could ride the rewrite onto a deployment that team was
   never granted. Now calls can_key_call_resolved_model -- the helper every
   other post-resolution auth site already uses (model_group_alias rewrites,
   realtime endpoints, auto-router), which runs the full key/team/member/project
   chain.

2. [Medium] Index ignored the deployment's custom_llm_provider, canonicalizing
   only litellm_params.model. Reproduced: a deployment with
   model='claude-haiku-4-5' + custom_llm_provider='openrouter' was indexed under
   ('anthropic', ...), so an Anthropic-form request resolved onto OpenRouter
   credentials, quota, and billing -- precisely the cross-provider hop rule 2
   of the module docstring forbids. canonicalize() now takes the override and
   prefers it over the provider inferred from the model string.

3. [Medium] Operators could not select model_name_resolution: strict on the
   proxy. Both proxy Router construction sites passed a hardcoded
   RouterGeneralSettings(async_only_mode=True) as an explicit keyword alongside
   **router_params. Since router_general_settings IS an accepted config key,
   setting it raised TypeError: got multiple values for keyword argument at
   startup -- so the documented opt-out was unreachable either way. Added
   _proxy_router_general_settings(), which forces async_only_mode (a proxy
   runtime requirement) while preserving every other operator-set field, and
   copies rather than mutating the caller's object.

Added 10 regression tests. Verified the two re-auth tests actually fail against
the pre-fix code (2 failed / 1 passed) rather than passing vacuously.

Gates: pytest 531 passed - ruff format clean - ruff check clean - strict
BLE001/PERF401 at base parity (2957/22) - type-discipline all LIT rules at base
parity - basedpyright new module 0 errors - router_code_coverage 0.0% untested
- proxy_server imports cleanly.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-15 12:50:02 -07:00
..
agent_tests test: repair stale CircleCI contracts 2026-08-08 12:19:29 -07:00
audio_tests test: remove tests that never execute 2026-08-12 10:45:38 -07:00
base_sdk_tests fix(deps): ship boto3 with the base SDK so bedrock works out of the box (#36568) 2026-08-11 14:39:10 -07:00
basic_proxy_startup_tests
batches_tests test: remove tests that never execute 2026-08-12 10:45:38 -07:00
benchmarks
code_coverage_tests feat(search): add Nimble as a search provider (#36347) 2026-08-14 17:09:58 -07:00
documentation_tests fix(ci): make the env-key doc gate see bare get_secret and get_secret_str reads (#35996) 2026-08-05 14:49:55 -07:00
e2e Merge branch 'litellm_internal_staging' into litellm_shadcn_modelhub_0814 2026-08-14 09:59:57 -07:00
enterprise fix(proxy): report has_more false on caller-scoped file list pages 2026-08-08 17:28:43 -07:00
guardrails_tests fix(guardrails): honor configured timeout in Zscaler AI Guard (#36110) 2026-08-07 00:25:52 +00:00
image_gen_tests test: remove tests that never execute 2026-08-12 10:45:38 -07:00
integration
litellm fix(proxy): deny agent access when key and team grants resolve to nothing (#36221) 2026-08-07 20:44:11 +00:00
litellm-proxy-extras test: remove tests that never execute 2026-08-12 10:45:38 -07:00
litellm_core_utils
litellm_utils_tests fix(reset_budget_job): atomic budget cascade with chunked reset scans (#36287) 2026-08-10 14:42:36 -07:00
llm_responses_api_testing test: repair stale CircleCI contracts 2026-08-08 12:19:29 -07:00
llm_translation Merge pull request #36685 from BerriAI/litellm_restore_shadowed_tests 2026-08-12 12:06:37 -07:00
load_tests
local_testing test: remove tests that never execute 2026-08-12 10:45:38 -07:00
logging_callback_tests test: address review on the restored SQS tests 2026-08-12 11:47:11 -07:00
mcp_tests fix(mcp): keep REST tool listing in step with key/team grant enforcement 2026-07-30 22:13:10 -07:00
multi_instance_e2e_tests
ocr_tests test(ocr): use mistral-document-ai-2512 in azure_ai OCR tests 2026-07-15 18:13:22 -07:00
old_proxy_tests/tests
openai_endpoints_tests fix(batches): register managed output files on batch cancel 2026-08-05 18:28:52 -07:00
otel_tests
pass_through_tests
pass_through_unit_tests fix(proxy): re-assert the authenticated identity on passthrough requests (#36121) 2026-08-07 00:41:29 +00:00
proxy_admin_ui_tests fix(access groups): sync assigned_team_ids from the team write paths (#36825) 2026-08-14 04:45:36 +00:00
proxy_behavior test: repair stale CircleCI contracts 2026-08-08 12:19:29 -07:00
proxy_e2e_anthropic_messages_tests
proxy_migration_tests test(docker): gate the componentized gateway and backend images on an arbitrary-uid offline boot (#36136) 2026-08-07 09:57:37 -07:00
proxy_security_tests
proxy_unit_tests fix(proxy): requeue spend logs when the DB write fails with a transport error (#36716) 2026-08-14 20:49:45 -07:00
router_unit_tests test: remove tests that never execute 2026-08-12 10:45:38 -07:00
scim_tests
search_tests feat(search): add Nimble as a search provider (#36347) 2026-08-14 17:09:58 -07:00
spend_tracking_tests
store_model_in_db_tests feat(team): custom metadata validation hook for team create and update (#33353) 2026-08-03 18:37:45 -07:00
test_litellm fix: address three bugbot findings (team re-auth, provider override, proxy settings) 2026-08-15 12:50:02 -07:00
unified_google_tests
vector_store_tests
windows_tests
__init__.py
_fake_openai_endpoint_server.py
_flush_vcr_cache.py
_live_test_helpers.py
_openai_record_replay_proxy.py
_vcr_conftest_common.py
_vcr_redis_persister.py
_ws_vcr.py
eval_swe_bench.py
fake_openai_endpoint.py
gettysburg.wav
large_text.py
openai_batch_completions.jsonl
pyrightconfig.json
README.MD
test_anthropic_compaction_usage.py
test_budget_management.py
test_callbacks_on_proxy.py
test_debug_warning.py
test_default_encoding_non_root.py
test_end_users.py
test_fallbacks.py
test_gpt5_azure_temperature_support.py
test_health.py
test_keys.py
test_litellm_proxy_responses_config.py
test_logging.conf
test_models.py
test_new_vector_store_endpoints.py
test_openai_endpoints.py
test_organizations.py
test_otel_thread_leak.py
test_presidio_latency.py
test_proxy_server_non_root.py
test_ratelimit.py
test_resource_cleanup.py
test_service_logger_otel.py fix(langfuse): send v4 ingestion header for otel callback (#33907) 2026-07-18 20:36:51 -07:00
test_spend_logs.py
test_team.py
test_team_logging.py
test_team_members.py
test_users.py

In total litellm runs 1000+ tests

[02/20/2025] Update:

To make it easier to contribute and map what behavior is tested,

we've started mapping the litellm directory in tests/test_litellm

This folder can only run mock tests.