litellm/tests/unit/proxy/common_utils
tavren27 cbf4e40d38
fix(proxy)!: stop labelling management and health rejections as auth failures (#48739)
* test(proxy): cover management and health routes labelling rejections as auth failures

* fix(proxy): name management and health route errors by their status instead of auth_error

* fix(proxy): keep auth_error for 401 and 403 and answer database outages with 503 in route catch-alls

/key/list and /key/aliases now share the catch-all helper too, so they stop
adding the Authentication Error prefix and typing a 400 as internal_server_error

* fix(proxy): answer 503 when the database drops mid-query and prisma fails to name the error

A real outage surfaces from prisma's query engine as a builtin AttributeError, which the
prisma-module check skipped, so the route catch-alls still answered 500 or 400

* fix(proxy): report wrapped and stalled database outages as 503 and label upstream failures by their own status

* fix(proxy): answer the upstream status on the catch-all, keep auth_error on tag denials, report model insert outages as 503

* fix(proxy): answer 503 for database failovers and label provider auth errors like chat

A database that refuses connections while starting up, shutting down, in
recovery, or read-only after a failover now answers 503 no_db_connection
instead of 400. A provider's 401 or 403 keeps the type /chat/completions
gives it, while a 401 or 403 the proxy raises keeps auth_error. An
exception with no message is named by its type.

* fix(proxy): scope failover 503s to management route errors and keep a re-raised error's cause

* test(proxy): expect the OpenAI error shape from management route refusals

Team-not-found 404s now answer invalid_request_error, and every handler-raised refusal answers param null instead of the string None.

---------

Co-authored-by: mateo-berri <277851410+mateo-berri@users.noreply.github.com>
2026-10-28 21:49:03 -07:00
..
html_forms
__init__.py
test_admin_ui_utils.py
test_auth_cache_invalidation_pubsub.py
test_cache_aware_routing.py feat(router): respect caller output budgets in complexity routing (#48632) 2026-10-27 14:04:30 -07:00
test_cache_codec.py
test_callback_config_validation.py
test_callback_utils.py
test_check_batch_cost.py fix(batches): stop unbillable batches from blocking file deletes and new-batch polling (#48752) 2026-10-28 12:19:36 -07:00
test_check_responses_cost.py fix(responses): send the billed background response cost to the creating key's and team's loggers (#47506) 2026-10-20 23:22:21 +00:00
test_codex_model_catalog.py fix(cli): give lite codex aliases of a Codex-known model that model's catalog entry (#48894) 2026-10-28 21:23:55 -07:00
test_config_sync_pubsub.py
test_credential_hydration.py
test_custom_openapi_spec.py
test_debug_utils.py
test_discoverable_model_filter.py
test_encrypt_decrypt_utils.py
test_error_body_call_id.py
test_expired_ui_session_key_cleanup_manager.py
test_get_routes.py
test_http_parsing_utils.py fix(proxy): abort the request with a 499 when the client disconnects during the body upload (#48640) 2026-10-27 16:49:56 -07:00
test_json_merge_patch.py
test_key_rotation_e2e.py
test_key_rotation_integration.py
test_key_rotation_lock.py
test_key_rotation_manager.py
test_load_config_utils.py
test_model_deprecation.py
test_model_listing_utils.py
test_openai_endpoint_utils.py
test_openai_error_payload.py fix(proxy)!: stop labelling management and health rejections as auth failures (#48739) 2026-10-28 21:49:03 -07:00
test_openapi_route.py fix(proxy): build the OpenAPI schema off the event loop so a cold /openapi.json no longer stalls the worker (#47352) 2026-10-20 04:31:37 +00:00
test_openapi_schema_compat.py fix(proxy): build the OpenAPI schema off the event loop so a cold /openapi.json no longer stalls the worker (#47352) 2026-10-20 04:31:37 +00:00
test_periodic_reload_schedule.py
test_proxy_encrypt_decrypt.py
test_rbac_utils.py
test_realtime_cache.py
test_registry_read_through.py
test_request_tag_mappings.py feat(proxy): map baggage values to budget tags (#47358) 2026-10-20 09:09:42 +00:00
test_reset_budget_job.py fix(proxy): reconcile team member total_spend with current cycle spend (#48260) 2026-10-24 17:57:09 -07:00
test_resource_ownership.py
test_scheduled_job_stagger.py
test_semantic_text_index.py
test_slow_gc_logger.py
test_sse_keepalive.py
test_static_asset_utils.py
test_swagger_utils.py
test_timezone_utils.py
test_token_count_log.py feat(proxy): log one line per token count call (#47657) 2026-10-28 11:23:52 -07:00
test_token_count_settings.py fix(responses)!: answer 400 before counting a lone Responses built-in tool on Claude (#48798) 2026-10-28 12:12:45 -07:00
test_upsert_budget_membership.py fix(team): keep the team reset schedule when a temp budget increase is set on a member inheriting the team default (#48495) 2026-10-26 17:13:56 -07:00
test_user_api_key_cache.py
test_validation_error_body.py