mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-11 03:38:38 +00:00
* test(integration): exact four-part translation cases on a shared fake provider and shared YAML deployment Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): compare every non-transport provider header and check for late provider requests at session end Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): name TranslationTestCase fields after litellm and provider sides and drop regressions Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): prefix checked TranslationTestCase fields with expected_ and name the fake reply mock_provider_response Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * docs(integration): name TranslationTestCase fields in the translation README Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): add a claude-opus-5-5 base case and deployment next to claude-sonnet-4-6 Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(integration): name translation cases <MODEL>_TEST_CASE and document the naming rule Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * docs(integration): move translation test rules into tests/integration/translation Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: kerry <kerry@berri.ai> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
21 lines
1.1 KiB
Python
21 lines
1.1 KiB
Python
import json
|
|
from typing import Final
|
|
|
|
from integration._support.client import Gateway
|
|
from integration._support.provider import SharedProvider
|
|
from integration._support.wire import Reply
|
|
from integration.translation.case import TranslationTestCase
|
|
|
|
TRANSPORT_HEADERS: Final = frozenset({"host", "accept", "accept-encoding", "connection", "content-length", "user-agent"})
|
|
|
|
|
|
def run(case: TranslationTestCase, gateway: Gateway, provider: SharedProvider) -> None:
|
|
provider.expect(Reply(body=json.dumps(case.mock_provider_response).encode()))
|
|
response: Final = gateway.request("POST", case.litellm_endpoint, case.litellm_request)
|
|
received: Final = provider.received()
|
|
assert [(request.method, request.target) for request in received] == [("POST", case.expected_provider_endpoint)]
|
|
sent: Final = received[0]
|
|
assert {name: value for name, value in sent.headers.items() if name not in TRANSPORT_HEADERS} == dict(case.expected_provider_headers)
|
|
assert json.loads(sent.body) == case.expected_provider_request
|
|
assert response.status_code == case.expected_litellm_status_code, response.text
|
|
assert response.json() == case.expected_litellm_response
|