Skip to content

test: make HTTP mocks independent of environment proxy routing - #637

Merged
Mehak Bindra (MehakBindra) merged 2 commits into
mainfrom
mehakbindra-http-mock-proxy-fix
Oct 16, 2026
Merged

Mehak Bindra (MehakBindra) merged 2 commits into
mainfrom
mehakbindra-http-mock-proxy-fix

Conversation

@MehakBindra

@MehakBindra Mehak Bindra (MehakBindra) commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

Summary

Cherry-pick 24ccd41 onto main with -x provenance, with the CONTRIBUTING.md addition subsequently removed. This PR contains only the test fix in five files; it does not include release-only ancestry, the 2.1.1 version bump, dependency changes, or production proxy/TLS changes.

Construct mocked httpx.AsyncClient instances with explicit MockTransport before injecting them into SDK Client via _http, rather than replacing _transport after HTTPX has configured proxy mounts. Preserve clone settings, event hooks, and share_http behavior. Add proxy-environment regression coverage.

Context

ADO publish run 20467 failed 117 tests because real HTTP requests bypassed mocks. HTTPX 0.28.1/HTTP Core 1.0.9 and the affected test setup/YAML were unchanged from successful run 17012. The image and 1ESNetworkIsolation task changed (29.0.0 / 1.0.175 to 41.0.0 / 1.0.185), alongside Python and AnyIO versions; the exact trigger of proxy routing remains unproven.

HTTPX confirms the failure mechanism. Its proxy-discovery code reads proxy settings through Python’s getproxies(), including the Windows registry, not just environment variables. Its client code checks proxy mounts before the default transport—so replacing _transport afterward can leave proxies active.

User-directed sequence: main first, then backport the merged commit to release/v2.1. This supersedes the proposed release-first fix in #636; closing that PR and handling the later backport are left to the coordinating session. Nothing is being merged or published here.

Validation

  • 447 API/common tests passed with HTTP_PROXY, HTTPS_PROXY, and ALL_PROXY set to http://127.0.0.1:1 and NO_PROXY empty. Imports were confirmed to resolve to this worktree. The wheel-build test was excluded only from this local forced-proxy run, not changed or skipped in CI.
  • Repository-wide Ruff lint and format checks passed; commit hooks passed (Pyright hook had no production files to check).
  • The wheel typing-marker test was run separately without forced proxy overrides and was blocked downloading build dependencies from PyPI by TLS HandshakeFailure.
  • Full Pyright could not be validated with the incomplete local environment. Dependency restoration failed with the same PyPI TLS handshake errors, including with native certificate trust. CI is required for complete build/type validation; no TLS verification or corporate proxy settings were disabled.

Construct mocked HTTPX clients with explicit transports and preserve settings and event hooks for clones. Add proxy-environment regressions without changing production proxy behavior.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 75921e14-a409-4a9a-bb03-08659dc023de
(cherry picked from commit 24ccd41)
Copilot-Session: 70488242-a4f5-4f62-86f7-91d9335545c2
Copilot AI balanced review requested due to automatic review settings October 16, 2026 21:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Static review found no blocking issues in these test/documentation-only changes; complete execution validation remains with CI.

No open issues 🎉

What changed in this PR

Makes API/common HTTP test mocks independent of environment proxy routing, without changing production networking or dependencies.

Changes:

  • Inject mock transports when constructing HTTP clients.
  • Preserve clone settings, event hooks, and shared-client behavior.
  • Add proxy regression coverage and document the mocking pattern.
File Description
packages/​common/​tests/​test_client.py Updates mock setup and adds proxy coverage.
packages/​api/​tests/​unit/​test_fixtures.py Tests proxy isolation and cloned mock clients.
packages/​api/​tests/​unit/​test_conversation_client.py Injects mock transports at construction.
packages/​api/​tests/​unit/​test_base_client.py Updates the mock client factory.
packages/​api/​tests/​conftest.py Updates shared fixtures and clone handling.
CONTRIBUTING.md Documents proxy-safe HTTP mocking.

Review effort: Balanced

Comment thread CONTRIBUTING.md Outdated
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 70488242-a4f5-4f62-86f7-91d9335545c2
@MehakBindra
Mehak Bindra (MehakBindra) merged commit 45694bd into main Oct 16, 2026
8 checks passed
@MehakBindra
Mehak Bindra (MehakBindra) deleted the mehakbindra-http-mock-proxy-fix branch October 16, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants