Skip to content

Commit bbc6e80

Browse files
lesnik512claude
andcommitted
test(story-2.4): end-to-end Authorization header injection via auth=
Three tests confirm the auth middleware fires through the full AsyncClient → transport path: - string auth attaches Authorization: Bearer <token> on the transport's observed request - per-call headers={"Authorization": ...} wins over the auth= param (skip-if-present rule) - callable auth invokes the provider once per AsyncClient.get(...) call No production code changes; Task 2 wired the integration. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 86bdd2b commit bbc6e80

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

‎tests/test_client_methods.py‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,46 @@ async def test_per_call_timeout_propagates_to_request_extensions() -> None:
152152
await client.get("/foo", timeout=2.5)
153153
assert transport.last_request is not None
154154
assert "timeout" in transport.last_request.extensions
155+
156+
157+
async def test_string_auth_sends_authorization_header() -> None:
158+
transport = RecordedTransport(
159+
default=Response(status=200, headers={}, content=b"", url="/", elapsed=0.0)
160+
)
161+
client = AsyncClient(transport=transport, auth="tok")
162+
163+
await client.get("/foo")
164+
165+
assert transport.last_request is not None
166+
assert transport.last_request.headers["Authorization"] == "Bearer tok"
167+
168+
169+
async def test_per_call_authorization_header_wins_over_auth_param() -> None:
170+
transport = RecordedTransport(
171+
default=Response(status=200, headers={}, content=b"", url="/", elapsed=0.0)
172+
)
173+
client = AsyncClient(transport=transport, auth="default-tok")
174+
175+
await client.get("/foo", headers={"Authorization": "Bearer override"})
176+
177+
assert transport.last_request is not None
178+
assert transport.last_request.headers["Authorization"] == "Bearer override"
179+
180+
181+
async def test_callable_auth_calls_provider_per_request() -> None:
182+
transport = RecordedTransport(
183+
default=Response(status=200, headers={}, content=b"", url="/", elapsed=0.0)
184+
)
185+
calls = 0
186+
187+
def _provider() -> str:
188+
nonlocal calls
189+
calls += 1
190+
return f"tok-{calls}"
191+
192+
client = AsyncClient(transport=transport, auth=_provider)
193+
194+
await client.get("/a")
195+
await client.get("/b")
196+
197+
assert calls == 2 # noqa: PLR2004

0 commit comments

Comments
 (0)