From d37daf0b9f7b20f5201f1fc2cf5454d23fce5ec2 Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Sat, 11 Jul 2026 12:49:43 -0700 Subject: [PATCH] refactor(e2e): move budgets and spend_tracking suites under quota_management --- tests/e2e/CLAUDE.md | 3 +-- tests/e2e/conftest.py | 2 +- tests/e2e/pytest.ini | 2 +- tests/e2e/{ => quota_management}/budgets/BUDGET_CODE_MATRIX.md | 0 .../budgets/BUDGET_TEST_COVERAGE_MATRIX.md | 2 +- tests/e2e/{ => quota_management}/budgets/budget_client.py | 0 tests/e2e/{ => quota_management}/budgets/conftest.py | 0 .../e2e/{ => quota_management}/budgets/test_budget_crud_e2e.py | 0 .../budgets/test_budget_enforcement_e2e.py | 0 .../{ => quota_management}/budgets/test_budget_fallback_e2e.py | 0 .../budgets/test_budget_reset_advances_e2e.py | 0 .../{ => quota_management}/budgets/test_budget_reset_e2e.py | 0 .../budgets/test_model_max_budget_e2e.py | 0 .../budgets/test_multi_window_budget_e2e.py | 0 .../e2e/{ => quota_management}/budgets/test_soft_budget_e2e.py | 0 .../budgets/test_spend_counter_reseed_e2e.py | 0 .../e2e/{ => quota_management}/budgets/test_tag_budget_e2e.py | 0 .../budgets/test_team_member_budget_e2e.py | 0 .../budgets/test_team_member_budget_reset_e2e.py | 0 .../budgets/test_team_multi_window_budget_e2e.py | 0 .../spend_tracking/SPEND_TRACKING_COVERAGE_MATRIX.md | 0 tests/e2e/{ => quota_management}/spend_tracking/conftest.py | 0 .../{ => quota_management}/spend_tracking/spend_e2e_client.py | 0 .../{ => quota_management}/spend_tracking/test_spend_routes.py | 0 .../spend_tracking/test_spend_tracking_e2e.py | 0 25 files changed, 4 insertions(+), 5 deletions(-) rename tests/e2e/{ => quota_management}/budgets/BUDGET_CODE_MATRIX.md (100%) rename tests/e2e/{ => quota_management}/budgets/BUDGET_TEST_COVERAGE_MATRIX.md (98%) rename tests/e2e/{ => quota_management}/budgets/budget_client.py (100%) rename tests/e2e/{ => quota_management}/budgets/conftest.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_budget_crud_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_budget_enforcement_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_budget_fallback_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_budget_reset_advances_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_budget_reset_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_model_max_budget_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_multi_window_budget_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_soft_budget_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_spend_counter_reseed_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_tag_budget_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_team_member_budget_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_team_member_budget_reset_e2e.py (100%) rename tests/e2e/{ => quota_management}/budgets/test_team_multi_window_budget_e2e.py (100%) rename tests/e2e/{ => quota_management}/spend_tracking/SPEND_TRACKING_COVERAGE_MATRIX.md (100%) rename tests/e2e/{ => quota_management}/spend_tracking/conftest.py (100%) rename tests/e2e/{ => quota_management}/spend_tracking/spend_e2e_client.py (100%) rename tests/e2e/{ => quota_management}/spend_tracking/test_spend_routes.py (100%) rename tests/e2e/{ => quota_management}/spend_tracking/test_spend_tracking_e2e.py (100%) diff --git a/tests/e2e/CLAUDE.md b/tests/e2e/CLAUDE.md index 5b23e15b5e2..88992038cb7 100644 --- a/tests/e2e/CLAUDE.md +++ b/tests/e2e/CLAUDE.md @@ -11,8 +11,7 @@ Each subdirectory under `tests/e2e/` is one suite, scoped to an endpoint family - `embeddings/` - the `/embeddings` endpoint across providers - `batches/` - the `/batches` endpoint (placeholder until the first test lands) - `realtime/` - realtime websocket sessions, including the pipecat audio path -- `budgets/` - budget definition, enforcement, and reset windows (key, team, tag, soft, multi-window) -- `spend_tracking/` - spend logging and cost attribution on `/spend/*` +- `quota_management/` - quota enforcement and accounting, one subfolder per behavior: `budgets/` (budget definition, enforcement, and reset windows: key, team, tag, soft, multi-window) and `spend_tracking/` (spend logging and cost attribution on `/spend/*`) - `management/` - key/team/user/organization management routes: create/update/delete persistence via the info routes, team membership, and llm-only-key route denials; also the dashboard UI behavior on top of them, driven through the proxy-served UI at /ui with playwright (optional dep behind importorskip) - `logging/` - logging-integration delivery (datadog and friends) - `security/` - secret handling and log-leak protection diff --git a/tests/e2e/conftest.py b/tests/e2e/conftest.py index 4c4c8fe735b..08df334d4b8 100644 --- a/tests/e2e/conftest.py +++ b/tests/e2e/conftest.py @@ -95,7 +95,7 @@ def pytest_sessionfinish(session: pytest.Session, exitstatus: int) -> None: path.""" if not session.stash.get(_E2E_TEST_RAN, False): return - spend_dir = str(Path(__file__).parent / "spend_tracking") + spend_dir = str(Path(__file__).parent / "quota_management" / "spend_tracking") sys.path.insert(0, spend_dir) try: from spend_e2e_client import reset_spend_logs # pyright: ignore diff --git a/tests/e2e/pytest.ini b/tests/e2e/pytest.ini index 7799f6b16a2..d3b2193226b 100644 --- a/tests/e2e/pytest.ini +++ b/tests/e2e/pytest.ini @@ -1,6 +1,6 @@ [pytest] # Config when any e2e suite under tests/e2e/ is run directly, e.g. -# uv run pytest tests/e2e/spend_tracking/ -v +# uv run pytest tests/e2e/quota_management/spend_tracking/ -v # The e2e marker is also registered in conftest.py for runs rooted elsewhere. addopts = --strict-markers --strict-config markers = diff --git a/tests/e2e/budgets/BUDGET_CODE_MATRIX.md b/tests/e2e/quota_management/budgets/BUDGET_CODE_MATRIX.md similarity index 100% rename from tests/e2e/budgets/BUDGET_CODE_MATRIX.md rename to tests/e2e/quota_management/budgets/BUDGET_CODE_MATRIX.md diff --git a/tests/e2e/budgets/BUDGET_TEST_COVERAGE_MATRIX.md b/tests/e2e/quota_management/budgets/BUDGET_TEST_COVERAGE_MATRIX.md similarity index 98% rename from tests/e2e/budgets/BUDGET_TEST_COVERAGE_MATRIX.md rename to tests/e2e/quota_management/budgets/BUDGET_TEST_COVERAGE_MATRIX.md index 62bfc1fdd41..7ff920a8d6d 100644 --- a/tests/e2e/budgets/BUDGET_TEST_COVERAGE_MATRIX.md +++ b/tests/e2e/quota_management/budgets/BUDGET_TEST_COVERAGE_MATRIX.md @@ -12,7 +12,7 @@ Pre-existing live coverage outside this suite: - `tests/local_testing/test_router_budget_limiter.py` - provider / tag / deployment budgets at the router. -This suite (`tests/e2e/budgets/`) adds the missing live coverage and runs +This suite (`tests/e2e/quota_management/budgets/`) adds the missing live coverage and runs on the shared lifecycle (every entity it creates is deleted on teardown). --- diff --git a/tests/e2e/budgets/budget_client.py b/tests/e2e/quota_management/budgets/budget_client.py similarity index 100% rename from tests/e2e/budgets/budget_client.py rename to tests/e2e/quota_management/budgets/budget_client.py diff --git a/tests/e2e/budgets/conftest.py b/tests/e2e/quota_management/budgets/conftest.py similarity index 100% rename from tests/e2e/budgets/conftest.py rename to tests/e2e/quota_management/budgets/conftest.py diff --git a/tests/e2e/budgets/test_budget_crud_e2e.py b/tests/e2e/quota_management/budgets/test_budget_crud_e2e.py similarity index 100% rename from tests/e2e/budgets/test_budget_crud_e2e.py rename to tests/e2e/quota_management/budgets/test_budget_crud_e2e.py diff --git a/tests/e2e/budgets/test_budget_enforcement_e2e.py b/tests/e2e/quota_management/budgets/test_budget_enforcement_e2e.py similarity index 100% rename from tests/e2e/budgets/test_budget_enforcement_e2e.py rename to tests/e2e/quota_management/budgets/test_budget_enforcement_e2e.py diff --git a/tests/e2e/budgets/test_budget_fallback_e2e.py b/tests/e2e/quota_management/budgets/test_budget_fallback_e2e.py similarity index 100% rename from tests/e2e/budgets/test_budget_fallback_e2e.py rename to tests/e2e/quota_management/budgets/test_budget_fallback_e2e.py diff --git a/tests/e2e/budgets/test_budget_reset_advances_e2e.py b/tests/e2e/quota_management/budgets/test_budget_reset_advances_e2e.py similarity index 100% rename from tests/e2e/budgets/test_budget_reset_advances_e2e.py rename to tests/e2e/quota_management/budgets/test_budget_reset_advances_e2e.py diff --git a/tests/e2e/budgets/test_budget_reset_e2e.py b/tests/e2e/quota_management/budgets/test_budget_reset_e2e.py similarity index 100% rename from tests/e2e/budgets/test_budget_reset_e2e.py rename to tests/e2e/quota_management/budgets/test_budget_reset_e2e.py diff --git a/tests/e2e/budgets/test_model_max_budget_e2e.py b/tests/e2e/quota_management/budgets/test_model_max_budget_e2e.py similarity index 100% rename from tests/e2e/budgets/test_model_max_budget_e2e.py rename to tests/e2e/quota_management/budgets/test_model_max_budget_e2e.py diff --git a/tests/e2e/budgets/test_multi_window_budget_e2e.py b/tests/e2e/quota_management/budgets/test_multi_window_budget_e2e.py similarity index 100% rename from tests/e2e/budgets/test_multi_window_budget_e2e.py rename to tests/e2e/quota_management/budgets/test_multi_window_budget_e2e.py diff --git a/tests/e2e/budgets/test_soft_budget_e2e.py b/tests/e2e/quota_management/budgets/test_soft_budget_e2e.py similarity index 100% rename from tests/e2e/budgets/test_soft_budget_e2e.py rename to tests/e2e/quota_management/budgets/test_soft_budget_e2e.py diff --git a/tests/e2e/budgets/test_spend_counter_reseed_e2e.py b/tests/e2e/quota_management/budgets/test_spend_counter_reseed_e2e.py similarity index 100% rename from tests/e2e/budgets/test_spend_counter_reseed_e2e.py rename to tests/e2e/quota_management/budgets/test_spend_counter_reseed_e2e.py diff --git a/tests/e2e/budgets/test_tag_budget_e2e.py b/tests/e2e/quota_management/budgets/test_tag_budget_e2e.py similarity index 100% rename from tests/e2e/budgets/test_tag_budget_e2e.py rename to tests/e2e/quota_management/budgets/test_tag_budget_e2e.py diff --git a/tests/e2e/budgets/test_team_member_budget_e2e.py b/tests/e2e/quota_management/budgets/test_team_member_budget_e2e.py similarity index 100% rename from tests/e2e/budgets/test_team_member_budget_e2e.py rename to tests/e2e/quota_management/budgets/test_team_member_budget_e2e.py diff --git a/tests/e2e/budgets/test_team_member_budget_reset_e2e.py b/tests/e2e/quota_management/budgets/test_team_member_budget_reset_e2e.py similarity index 100% rename from tests/e2e/budgets/test_team_member_budget_reset_e2e.py rename to tests/e2e/quota_management/budgets/test_team_member_budget_reset_e2e.py diff --git a/tests/e2e/budgets/test_team_multi_window_budget_e2e.py b/tests/e2e/quota_management/budgets/test_team_multi_window_budget_e2e.py similarity index 100% rename from tests/e2e/budgets/test_team_multi_window_budget_e2e.py rename to tests/e2e/quota_management/budgets/test_team_multi_window_budget_e2e.py diff --git a/tests/e2e/spend_tracking/SPEND_TRACKING_COVERAGE_MATRIX.md b/tests/e2e/quota_management/spend_tracking/SPEND_TRACKING_COVERAGE_MATRIX.md similarity index 100% rename from tests/e2e/spend_tracking/SPEND_TRACKING_COVERAGE_MATRIX.md rename to tests/e2e/quota_management/spend_tracking/SPEND_TRACKING_COVERAGE_MATRIX.md diff --git a/tests/e2e/spend_tracking/conftest.py b/tests/e2e/quota_management/spend_tracking/conftest.py similarity index 100% rename from tests/e2e/spend_tracking/conftest.py rename to tests/e2e/quota_management/spend_tracking/conftest.py diff --git a/tests/e2e/spend_tracking/spend_e2e_client.py b/tests/e2e/quota_management/spend_tracking/spend_e2e_client.py similarity index 100% rename from tests/e2e/spend_tracking/spend_e2e_client.py rename to tests/e2e/quota_management/spend_tracking/spend_e2e_client.py diff --git a/tests/e2e/spend_tracking/test_spend_routes.py b/tests/e2e/quota_management/spend_tracking/test_spend_routes.py similarity index 100% rename from tests/e2e/spend_tracking/test_spend_routes.py rename to tests/e2e/quota_management/spend_tracking/test_spend_routes.py diff --git a/tests/e2e/spend_tracking/test_spend_tracking_e2e.py b/tests/e2e/quota_management/spend_tracking/test_spend_tracking_e2e.py similarity index 100% rename from tests/e2e/spend_tracking/test_spend_tracking_e2e.py rename to tests/e2e/quota_management/spend_tracking/test_spend_tracking_e2e.py