litellm/tests/proxy_behavior/management
ryan-crabbe-berri 46b6eae799
feat(teams): apply default organization to new teams from default team settings (#35540)
* feat(teams): apply default organization to new teams from default team settings

Adds organization_id to DefaultTeamSSOParams so proxy admins can pick a
default organization in Default Team Settings. new_team applies it before
org validation whenever a team is created without an explicit
organization_id, so API, Admin UI, SCIM, SSO, and team upsert creations
all inherit it and go through the same existence and org-limit checks.
Explicit organization selections win and existing teams are untouched.

The default is validated at save time (PATCH /update/default_team_settings
returns 400 for an unknown org) and at create time, where a missing org now
surfaces as a clean 400 instead of a 500 by routing OrganizationNotFoundError
into the previously dead org_table None guard.

The Admin UI Default Team Settings tab gets a Default Organization row
backed by the shared OrganizationDropdown.

* fix(teams): validate org limits against final team state including defaults

Applies default_team_params and the legacy max_budget fallback before the
organization validation block, so _check_org_team_limits sees the values the
team will actually be persisted with. Also loads the org's budget table in
the lookup; without include_budget_table every budget comparison in
_check_org_team_limits was skipped because litellm_budget_table was None.

* test(proxy_behavior): pin org team limits as enforced on /team/new

The dead-code pins existed to turn red when include_budget_table went
live; that happened, so the scenarios now assert the 400 rejections plus
within-cap acceptance, and the unknown-org pin asserts the handler's 400
instead of the surfaced 500.
2026-08-03 12:57:12 -07:00
..
__init__.py
actors.py
conftest.py test(proxy): separate the member_add permission gate from the provisioning gate 2026-08-01 14:39:47 -07:00
test_credential_migration_endpoint.py
test_f7_coverage_closeout.py
test_f7_key_coverage_push.py
test_key_aliases.py
test_key_block_unblock.py
test_key_budget_limits.py
test_key_bulk_update.py
test_key_delete.py
test_key_generate.py
test_key_health.py
test_key_info.py
test_key_info_v2.py
test_key_list.py
test_key_regenerate.py
test_key_reset_spend.py
test_key_service_account_generate.py
test_key_team_change.py
test_key_update.py
test_no_management_imports.py
test_route_coverage.py
test_scratch_teardown.py
test_smoke.py
test_team_available.py
test_team_block_unblock.py
test_team_budget_limits.py feat(teams): apply default organization to new teams from default team settings (#35540) 2026-08-03 12:57:12 -07:00
test_team_bulk_member_add.py
test_team_daily_activity.py
test_team_delete.py
test_team_filter_ui.py
test_team_info.py
test_team_key_bulk_update.py
test_team_list.py
test_team_list_v2.py
test_team_member_add.py test(proxy): separate the member_add permission gate from the provisioning gate 2026-08-01 14:39:47 -07:00
test_team_member_delete.py
test_team_member_info_validation.py test(proxy): separate the member_add permission gate from the provisioning gate 2026-08-01 14:39:47 -07:00
test_team_member_me.py
test_team_member_update.py
test_team_model.py
test_team_new.py feat(teams): apply default organization to new teams from default team settings (#35540) 2026-08-03 12:57:12 -07:00
test_team_permissions.py
test_team_permissions_bulk_update.py
test_team_update.py fix(proxy): resolve team org from team_id so org admins can update team budgets 2026-07-08 19:10:35 -07:00
test_world_seed.py