Skip to content

[Duplicate Code] HTTPS_PROXY save/restore + jest.resetModules() block duplicated across 7 server test files #3978

Description

@github-actions

Duplicate Code Opportunity

Summary

  • Pattern: A HTTPS_PROXY environment-variable save/restore block, combined with jest.resetModules() and server module re-import, is copy-pasted verbatim into the top of every split server test file. Only the name of the imported function differs per file.
  • Locations: 7 test files under containers/api-proxy/
  • Impact: ~16 duplicate lines per file = ~96 total duplicated lines; adding or removing an env-var that must be cleared (e.g. HTTP_PROXY, NO_PROXY) requires updating all 7 files

Evidence

The following block (or a near-identical variant) appears at the top of every affected file:

// server.proxy-headers.test.js  (and 6 other files)
const originalHttpsProxy = process.env.HTTPS_PROXY;
let proxyRequest;          // ← only this line differs per file

beforeAll(() => {
  delete process.env.HTTPS_PROXY;
  jest.resetModules();
  ({ proxyRequest } = require('./server'));   // ← function name differs
});

afterAll(() => {
  if (originalHttpsProxy === undefined) {
    delete process.env.HTTPS_PROXY;
  } else {
    process.env.HTTPS_PROXY = originalHttpsProxy;
  }
  jest.resetModules();
});

Files containing this pattern:

File Imported symbol
server.proxy-headers.test.js proxyRequest
server.websocket.test.js proxyWebSocket
server.error-handling.test.js proxyRequest, healthResponse
server.anthropic-beta.test.js proxyRequest
server.model-not-supported.test.js proxyRequest
server.token-steering.test.js proxyRequest
server.token-guards.test.js proxyRequest

Suggested Refactoring

Add a setupServerTestEnv(importFn) helper in containers/api-proxy/test-helpers/server-mock-factories.js (or a new server-test-setup.js):

/**
 * Registers beforeAll/afterAll hooks that clear HTTPS_PROXY,
 * reset modules, and import server exports.
 *
 * `@param` {() => object} importFn - Called inside beforeAll to import server symbols.
 * `@returns` {{ get(): object }} Accessor for the imported symbols.
 */
function setupServerTestEnv(importFn) {
  const originalHttpsProxy = process.env.HTTPS_PROXY;
  let imported = {};

  beforeAll(() => {
    delete process.env.HTTPS_PROXY;
    jest.resetModules();
    imported = importFn();
  });

  afterAll(() => {
    if (originalHttpsProxy === undefined) {
      delete process.env.HTTPS_PROXY;
    } else {
      process.env.HTTPS_PROXY = originalHttpsProxy;
    }
    jest.resetModules();
  });

  return { get: () => imported };
}

module.exports = { makeReq, makeRes, makeProxyReq, makeProxyRes, getStructuredLogs, setupServerTestEnv };

Usage in each test file:

const { setupServerTestEnv } = require('./test-helpers/server-mock-factories');

const env = setupServerTestEnv(() => require('./server'));
// Then inside tests: const { proxyRequest } = env.get();

Affected Files

  • containers/api-proxy/server.proxy-headers.test.js
  • containers/api-proxy/server.websocket.test.js
  • containers/api-proxy/server.error-handling.test.js
  • containers/api-proxy/server.anthropic-beta.test.js
  • containers/api-proxy/server.model-not-supported.test.js
  • containers/api-proxy/server.token-steering.test.js
  • containers/api-proxy/server.token-guards.test.js

Effort Estimate

Low–Medium


Detected by Duplicate Code Detector workflow. Run date: 2026-05-28

Generated by Duplicate Code Detector · sonnet46 2.9M ·

  • expires on Jun 27, 2026, 10:21 PM UTC

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions