Skip to content

Commit e2d09d4

Browse files
committed
Add user agent test
1 parent 64ebf36 commit e2d09d4

File tree

1 file changed

+46
-4
lines changed

1 file changed

+46
-4
lines changed

tests/test_client.py

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -945,7 +945,9 @@ class Model(BaseModel):
945945
],
946946
)
947947
@mock.patch("time.time", mock.MagicMock(return_value=1696004797))
948-
def test_parse_retry_after_header(self, remaining_retries: int, retry_after: str, timeout: float) -> None:
948+
def test_parse_retry_after_header(
949+
self, remaining_retries: int, retry_after: str, timeout: float
950+
) -> None:
949951
client = Gradient(
950952
base_url=base_url,
951953
access_token=access_token,
@@ -956,7 +958,9 @@ def test_parse_retry_after_header(self, remaining_retries: int, retry_after: str
956958

957959
headers = httpx.Headers({"retry-after": retry_after})
958960
options = FinalRequestOptions(method="get", url="/foo", max_retries=3)
959-
calculated = client._calculate_retry_timeout(remaining_retries, options, headers)
961+
calculated = client._calculate_retry_timeout(
962+
remaining_retries, options, headers
963+
)
960964
assert calculated == pytest.approx(timeout, rel=0.5 * 0.875) # type: ignore[misc]
961965

962966
@mock.patch(
@@ -1180,6 +1184,40 @@ def test_follow_redirects_disabled(
11801184
assert exc_info.value.response.status_code == 302
11811185
assert exc_info.value.response.headers["Location"] == f"{base_url}/redirected"
11821186

1187+
def test_user_agent_includes_adk_agent_when_env_var_set(self) -> None:
1188+
# Test that user agent includes GRADIENT_ADK_AGENT when AGENT_WORKSPACE_DEPLOYMENT_UUID is set
1189+
test_uuid = "test-deployment-uuid-12345"
1190+
1191+
with update_env(AGENT_WORKSPACE_DEPLOYMENT_UUID=test_uuid):
1192+
client = Gradient(
1193+
base_url=base_url,
1194+
access_token=access_token,
1195+
model_access_key=model_access_key,
1196+
agent_access_key=agent_access_key,
1197+
_strict_response_validation=True,
1198+
)
1199+
user_agent = client.user_agent
1200+
assert "GRADIENT_ADK_AGENT" in user_agent
1201+
assert test_uuid in user_agent
1202+
assert user_agent.endswith(f"/GRADIENT_ADK_AGENT/{test_uuid}")
1203+
client.close()
1204+
1205+
def test_user_agent_excludes_adk_agent_when_env_var_not_set(self) -> None:
1206+
# Test that user agent does not include GRADIENT_ADK_AGENT when env var is not set
1207+
from gradient._types import Omit
1208+
1209+
with update_env(AGENT_WORKSPACE_DEPLOYMENT_UUID=Omit()):
1210+
client = Gradient(
1211+
base_url=base_url,
1212+
access_token=access_token,
1213+
model_access_key=model_access_key,
1214+
agent_access_key=agent_access_key,
1215+
_strict_response_validation=True,
1216+
)
1217+
user_agent = client.user_agent
1218+
assert "GRADIENT_ADK_AGENT" not in user_agent
1219+
client.close()
1220+
11831221

11841222
class TestAsyncGradient:
11851223
@pytest.mark.respx(base_url=base_url)
@@ -2081,7 +2119,9 @@ class Model(BaseModel):
20812119
)
20822120
@mock.patch("time.time", mock.MagicMock(return_value=1696004797))
20832121
@pytest.mark.asyncio
2084-
async def test_parse_retry_after_header(self, remaining_retries: int, retry_after: str, timeout: float) -> None:
2122+
async def test_parse_retry_after_header(
2123+
self, remaining_retries: int, retry_after: str, timeout: float
2124+
) -> None:
20852125
async_client = AsyncGradient(
20862126
base_url=base_url,
20872127
access_token=access_token,
@@ -2092,7 +2132,9 @@ async def test_parse_retry_after_header(self, remaining_retries: int, retry_afte
20922132

20932133
headers = httpx.Headers({"retry-after": retry_after})
20942134
options = FinalRequestOptions(method="get", url="/foo", max_retries=3)
2095-
calculated = async_client._calculate_retry_timeout(remaining_retries, options, headers)
2135+
calculated = async_client._calculate_retry_timeout(
2136+
remaining_retries, options, headers
2137+
)
20962138
assert calculated == pytest.approx(timeout, rel=0.5 * 0.875) # type: ignore[misc]
20972139

20982140
@mock.patch(

0 commit comments

Comments
 (0)