litellm/tests/unit/proxy/test_body_snapshot_callback_params.py
devin-ai-integration[bot] a76b59db9f
test(proxy): move middleware, spend_tracking, pass_through, common_utils and root proxy tests into tests/unit/proxy (#44015)
Co-authored-by: yuneng <yuneng@berri.ai>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-01 18:23:31 +00:00

36 lines
1.6 KiB
Python

"""The stored request body never carries callback parameters.
Every ``StandardCallbackDynamicParams`` key and ``litellm_trusted_callback_vars`` is set on the
request dict with a unique value, the body snapshot is refreshed, and none of the keys or values
may be in ``proxy_server_request["body"]``. A control key proves the snapshot was rebuilt.
"""
from __future__ import annotations
import json
import uuid
from typing import Final
from litellm.proxy.litellm_pre_call_utils import refresh_proxy_server_request_body_snapshot
from litellm.types.utils import TRUSTED_CALLBACK_VARS_FIELD, StandardCallbackDynamicParams
def test_body_snapshot_excludes_every_callback_dynamic_param_and_the_trusted_vars() -> None:
core: Final = uuid.uuid4().hex
params: Final = {name: f"lkc-{name}-{core}" for name in StandardCallbackDynamicParams.__annotations__}
control: Final = f"control-{uuid.uuid4().hex}"
data: Final = {
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": control}],
**params,
TRUSTED_CALLBACK_VARS_FIELD: dict(params),
"proxy_server_request": {"url": "http://proxy/v1/chat/completions", "body": {}},
}
refresh_proxy_server_request_body_snapshot(data)
body: Final = data["proxy_server_request"]["body"]
assert control in json.dumps(body), "Sensitivity control: the snapshot was not rebuilt from the request"
present: Final = sorted({*params, TRUSTED_CALLBACK_VARS_FIELD} & set(body))
assert present == [], f"Callback parameters copied into the stored request body: {present}"
assert core not in json.dumps(body, default=str)