From f1188415401b8576dd372a26a0e0363c429df9d7 Mon Sep 17 00:00:00 2001 From: Josh Lehman Date: Thu, 12 Mar 2026 15:39:04 -0700 Subject: [PATCH] test: stabilize proxy env gateway coverage --- src/infra/net/proxy-fetch.test.ts | 40 +++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/src/infra/net/proxy-fetch.test.ts b/src/infra/net/proxy-fetch.test.ts index d873b03aae4..0f9e43a3173 100644 --- a/src/infra/net/proxy-fetch.test.ts +++ b/src/infra/net/proxy-fetch.test.ts @@ -1,5 +1,18 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +const PROXY_ENV_KEYS = [ + "HTTPS_PROXY", + "HTTP_PROXY", + "ALL_PROXY", + "https_proxy", + "http_proxy", + "all_proxy", +] as const; + +const ORIGINAL_PROXY_ENV = Object.fromEntries( + PROXY_ENV_KEYS.map((key) => [key, process.env[key]]), +) as Record<(typeof PROXY_ENV_KEYS)[number], string | undefined>; + const { ProxyAgent, EnvHttpProxyAgent, undiciFetch, proxyAgentSpy, envAgentSpy, getLastAgent } = vi.hoisted(() => { const undiciFetch = vi.fn(); @@ -40,6 +53,22 @@ vi.mock("undici", () => ({ import { makeProxyFetch, resolveProxyFetchFromEnv } from "./proxy-fetch.js"; +function clearProxyEnv(): void { + for (const key of PROXY_ENV_KEYS) { + delete process.env[key]; + } +} + +function restoreProxyEnv(): void { + clearProxyEnv(); + for (const key of PROXY_ENV_KEYS) { + const value = ORIGINAL_PROXY_ENV[key]; + if (typeof value === "string") { + process.env[key] = value; + } + } +} + describe("makeProxyFetch", () => { beforeEach(() => vi.clearAllMocks()); @@ -60,8 +89,15 @@ describe("makeProxyFetch", () => { }); describe("resolveProxyFetchFromEnv", () => { - beforeEach(() => vi.clearAllMocks()); - afterEach(() => vi.unstubAllEnvs()); + beforeEach(() => { + vi.clearAllMocks(); + vi.unstubAllEnvs(); + clearProxyEnv(); + }); + afterEach(() => { + vi.unstubAllEnvs(); + restoreProxyEnv(); + }); it("returns undefined when no proxy env vars are set", () => { expect(resolveProxyFetchFromEnv({})).toBeUndefined();