litellm/tests/test_litellm
Ryan Crabbe 3d72e2a6f3
fix(guardrails): address PR #25575 review feedback + sync kill switch with opt-out list
Renames the new per-guardrail opt-out field from `disabled_global_guardrails`
to `opted_out_global_guardrails` to eliminate the one-character collision with
the legacy `disable_global_guardrails` boolean kill switch. Adds a type guard
on the new gate so a misnamed bool can't crash the guardrail check. Filters
duplicates out of the team-edit guardrail display for legacy teams that have a
global name persisted in `metadata.guardrails` from before this PR. Drops the
unused `isGuardrailsLoading` and `guardrailsError` destructures left in
AddModelForm after the hook refactor.

Adds Python tests for the new gate behavior (root, litellm_metadata, metadata,
non-matching name, empty list, malformed bool value, opt-in coexistence) and
extends useGuardrails.test.ts to exercise the global / optional partition
logic that the rebuilt hook performs in its `select` transform.

Wires the legacy kill switch and the new opt-out list together in the team
edit form so they can never fall out of sync:

- Toggling the kill switch reactively updates the Guardrails Select via
  `onValuesChange` — switch on strips all globals from the selection, switch
  off re-adds them. Existing opt-in extras are preserved either way.
- When the switch is on, global options in the Select are individually
  disabled (greyed out) so the user can still manage opt-in guardrails but
  cannot accidentally re-enable a global the kill switch is bypassing.
- The save handler writes both fields together: `disable_global_guardrails`
  reflects the switch, and `opted_out_global_guardrails` is set to either
  every global (when the switch is on) or the user's explicit opt-outs.
- `effectiveGuardrails` for the form's initialValues honors the kill switch
  on legacy teams so the form opens in a state that matches what the runtime
  gate is actually doing — fixes the visual lie where chips appeared active
  while the switch was bypassing them.

The backend gate already reads the list as the primary path with the bool
as a fallback, so untouched legacy teams keep working until they get edited,
at which point they migrate naturally.
2026-04-11 17:48:16 -07:00
..
a2a_protocol fix(a2a): preserve JSON-RPC envelope for AgentCore A2A-native agents (#25092) 2026-04-03 20:25:32 -07:00
anthropic_interface/exceptions
caching Litellm ishaan march 20 (#24303) 2026-03-21 12:40:11 -07:00
completion_extras feat(openai): round-trip Responses API reasoning_items in chat completions 2026-03-27 20:25:08 +05:30
containers
enterprise
expected_fine_tuning_api refactor: refactor testing 2026-03-28 18:39:32 -07:00
expected_responses_api_request
experimental_mcp_client
google_genai
images
integrations fix(guardrails): address PR #25575 review feedback + sync kill switch with opt-out list 2026-04-11 17:48:16 -07:00
interactions [Staging] - Ishaan March 17th (#23903) 2026-03-18 15:09:01 -07:00
litellm_core_utils Litellm fix update bedrock models (#24947) 2026-04-01 19:22:54 -07:00
llms fix(bedrock): avoid double-counting cache tokens in Anthropic Messages streaming usage 2026-04-11 00:03:45 +05:30
ocr
passthrough Litellm fix update bedrock models (#24947) 2026-04-01 19:22:54 -07:00
proxy fix(guardrails): use plural key in get_disable_global_guardrail 2026-04-11 17:35:50 -07:00
responses fix(responses-ws): use urllib.parse to append model param, fix test mocking 2026-04-09 21:49:06 -07:00
router_strategy Litellm ishaan march30 (#24887) (#25151) 2026-04-04 14:44:07 -07:00
router_utils fix(router): don't create litellm_metadata for non-Responses API calls in encrypted_content_affinity_check (#25347) 2026-04-08 21:11:19 -07:00
secret_managers
test_router
types Litellm ishaan april4 2 (#25150) 2026-04-04 23:09:42 +00:00
vector_stores
__init__.py
conftest.py
log.txt
readme.md
test_a2a_registry_lookup.py
test_acompletion_session_reuse_e2e.py
test_add_deployment_no_master_key.py
test_aembedding_session_reuse_e2e.py
test_anthropic_beta_headers_filtering.py Litellm fix update bedrock models (#24947) 2026-04-01 19:22:54 -07:00
test_anthropic_skills_transformation.py
test_azure_video_router.py
test_chat_ui_responses_session.py
test_claude_haiku_4_5_config.py
test_claude_opus_4_6_config.py Fix the Pricing changes for claude models 2026-03-27 22:44:40 +05:30
test_constants.py Fix test 2026-03-27 21:21:43 +05:30
test_container_router.py
test_cost_calculation_log_level.py
test_cost_calculator.py feat(cost): add baseten model api pricing entries (#25358) 2026-04-08 21:39:58 -07:00
test_count_tokens_public_api.py
test_deepseek_model_metadata.py
test_eager_tiktoken_load.py
test_exception_exports.py
test_exception_header_preservation.py
test_exception_mapping_request_attribute.py
test_filter_out_litellm_params.py
test_get_blog_posts.py
test_gpt_image_cost_calculator.py
test_groq_streaming_encoding.py
test_lazy_imports.py
test_litellm_params_reserved_keys.py
test_logging.py Litellm oss staging 04 02 2026 p1 (#25055) 2026-04-08 21:37:10 -07:00
test_lowest_latency_zero_tokens.py
test_main.py Litellm fix update bedrock models (#24947) 2026-04-01 19:22:54 -07:00
test_model_cost_aliases.py
test_model_param_helper.py
test_model_response_normalization.py
test_nested_drop_params.py
test_project_alias_tracking.py feat(proxy): add project_alias tracking through callback metadata pipeline 2026-03-23 10:44:17 -07:00
test_project_tags_pydantic.py
test_redis.py Litellm ishaan march23 - MCP Toolsets + GCP Caching fix (#25146) (#25155) 2026-04-04 16:23:21 -07:00
test_register_model_custom_pricing.py
test_responses_api_bridge_non_stream.py
test_responses_id_security.py
test_router_google_genai.py
test_router_model_cost_isolation.py
test_router_order_fallback.py Merge pull request #24611 from Sameerlite/Sameerlite/order-fallback2 2026-03-27 20:15:30 +05:30
test_router_per_deployment_num_retries.py
test_router_redis_init.py
test_router_retry_non_retryable_errors.py
test_router_silent_experiment.py
test_router.py fix(router): pass custom_llm_provider to get_llm_provider for unprefixed model names (#25334) 2026-04-08 21:27:13 -07:00
test_secret_redaction.py Litellm ishaan march30 (#24887) (#25151) 2026-04-04 14:44:07 -07:00
test_service_logger.py
test_setup_wizard.py test: test 2026-03-28 19:17:38 -07:00
test_shared_session_integration.py
test_ssl_verify_unit.py
test_stream_chunk_builder_annotations.py
test_streaming_connection_cleanup.py
test_system_message_format_bug.py
test_utils.py Litellm ishaan april1 try2 (#25110) 2026-04-03 14:57:44 -07:00
test_uuid_helper.py
test_video_generation.py
test_xai_responses_auto_routing.py

Testing for litellm/

This directory 1:1 maps the the litellm/ directory, and can only contain mocked tests.

The point of this is to:

  1. Increase test coverage of litellm/
  2. Make it easy for contributors to add tests for the litellm/ package and easily run tests without needing LLM API keys.

File name conventions

  • litellm/proxy/test_caching_routes.py maps to litellm/proxy/caching_routes.py
  • test_<filename>.py maps to litellm/<filename>.py