mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-16 04:29:31 +00:00
fix(client): percent-encode the credential name when updating its display name
A name with ? or # was cut short in the URL, so the PATCH landed on a different credential or 404'd.
This commit is contained in:
parent
7bc14c99d5
commit
23a7e1dc29
2 changed files with 9 additions and 1 deletions
|
|
@ -1,5 +1,6 @@
|
|||
from collections.abc import Mapping
|
||||
from typing import Any, Final
|
||||
from urllib.parse import quote
|
||||
|
||||
import requests
|
||||
|
||||
|
|
@ -159,7 +160,7 @@ class CredentialsManagementClient:
|
|||
display_name: str | None,
|
||||
return_request: bool = False,
|
||||
) -> Mapping[str, object] | requests.Request:
|
||||
url: Final = f"{self._base_url}/credentials/{credential_name}"
|
||||
url: Final = f"{self._base_url}/credentials/{quote(credential_name, safe='')}"
|
||||
data: Final[Mapping[str, object]] = {"display_name": display_name, "credential_info": {}}
|
||||
|
||||
request: Final = requests.Request("PATCH", url, headers=self._get_headers(), json=data)
|
||||
|
|
|
|||
|
|
@ -148,6 +148,13 @@ def test_update_display_name_request(client, base_url, api_key, display_name):
|
|||
assert request.json == {"display_name": display_name, "credential_info": {}}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(("credential_name", "path"), [("team?prod", "team%3Fprod"), ("a/b#c", "a%2Fb%23c")])
|
||||
def test_update_display_name_targets_the_whole_credential_name(client, base_url, credential_name, path):
|
||||
request = client.update_display_name(credential_name, "Label", return_request=True)
|
||||
|
||||
assert request.prepare().url == f"{base_url}/credentials/{path}"
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_create_mock_response(client):
|
||||
"""Test create with a mocked successful response"""
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue