refactor: use Teffen's solution for useEnv
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import { promises as fs } from "fs"
|
||||
import { tmpdir } from "../../test/utils/helpers"
|
||||
import { tmpdir, useEnv } from "../../test/utils/helpers"
|
||||
|
||||
/**
|
||||
* This file is for testing test helpers (not core code).
|
||||
@ -12,3 +12,30 @@ describe("test helpers", () => {
|
||||
expect(fs.access(pathToTempDir)).resolves.toStrictEqual(undefined)
|
||||
})
|
||||
})
|
||||
|
||||
describe("useEnv", () => {
|
||||
beforeAll(() => {
|
||||
jest.resetModules()
|
||||
process.env.TEST_USE_ENV = "test environment variable"
|
||||
})
|
||||
afterAll(() => {
|
||||
delete process.env.TEST_USE_ENV
|
||||
})
|
||||
it("should set and reset the env var", () => {
|
||||
const envKey = "TEST_ENV_VAR"
|
||||
const [setValue, resetValue] = useEnv(envKey)
|
||||
setValue("hello-world")
|
||||
expect(process.env[envKey]).toEqual("hello-world")
|
||||
resetValue()
|
||||
expect(process.env[envKey]).toEqual(undefined)
|
||||
})
|
||||
it("should set and reset the env var where a value was already set", () => {
|
||||
const envKey = "TEST_USE_ENV"
|
||||
expect(process.env[envKey]).toEqual("test environment variable")
|
||||
const [setValue, resetValue] = useEnv(envKey)
|
||||
setValue("hello there")
|
||||
expect(process.env[envKey]).toEqual("hello there")
|
||||
resetValue()
|
||||
expect(process.env[envKey]).toEqual("test environment variable")
|
||||
})
|
||||
})
|
||||
|
@ -1,59 +1,39 @@
|
||||
import { shouldEnableProxy } from "../../../src/node/proxy_agent"
|
||||
|
||||
/**
|
||||
* Helper function to set an env variable.
|
||||
*
|
||||
* Returns a function to cleanup the env variable.
|
||||
*/
|
||||
function setEnv(name: string, value: string) {
|
||||
process.env[name] = value
|
||||
|
||||
return {
|
||||
cleanup() {
|
||||
delete process.env[name]
|
||||
},
|
||||
}
|
||||
}
|
||||
import { useEnv } from "../../utils/helpers"
|
||||
|
||||
describe("shouldEnableProxy", () => {
|
||||
// Source: https://stackoverflow.com/a/48042799
|
||||
const OLD_ENV = process.env
|
||||
const [setHTTPProxy, resetHTTPProxy] = useEnv("HTTP_PROXY")
|
||||
const [setHTTPSProxy, resetHTTPSProxy] = useEnv("HTTPS_PROXY")
|
||||
const [setNoProxy, resetNoProxy] = useEnv("NO_PROXY")
|
||||
|
||||
beforeEach(() => {
|
||||
jest.resetModules() // Most important - it clears the cache
|
||||
process.env = { ...OLD_ENV } // Make a copy
|
||||
})
|
||||
|
||||
afterAll(() => {
|
||||
process.env = OLD_ENV // Restore old environment
|
||||
resetHTTPProxy()
|
||||
resetNoProxy()
|
||||
resetHTTPSProxy()
|
||||
})
|
||||
|
||||
it("returns true when HTTP_PROXY is set", () => {
|
||||
const { cleanup } = setEnv("HTTP_PROXY", "http://proxy.example.com")
|
||||
setHTTPProxy("http://proxy.example.com")
|
||||
expect(shouldEnableProxy()).toBe(true)
|
||||
cleanup()
|
||||
})
|
||||
it("returns true when HTTPS_PROXY is set", () => {
|
||||
const { cleanup } = setEnv("HTTPS_PROXY", "http://proxy.example.com")
|
||||
setHTTPSProxy("https://proxy.example.com")
|
||||
expect(shouldEnableProxy()).toBe(true)
|
||||
cleanup()
|
||||
})
|
||||
it("returns false when NO_PROXY is set", () => {
|
||||
const { cleanup } = setEnv("NO_PROXY", "*")
|
||||
setNoProxy("*")
|
||||
expect(shouldEnableProxy()).toBe(false)
|
||||
cleanup()
|
||||
})
|
||||
it("should return false when neither HTTP_PROXY nor HTTPS_PROXY is set", () => {
|
||||
expect(shouldEnableProxy()).toBe(false)
|
||||
})
|
||||
it("should return false when NO_PROXY is set to https://example.com", () => {
|
||||
const { cleanup } = setEnv("NO_PROXY", "https://example.com")
|
||||
setNoProxy("https://example.com")
|
||||
expect(shouldEnableProxy()).toBe(false)
|
||||
cleanup()
|
||||
})
|
||||
it("should return false when NO_PROXY is set to http://example.com", () => {
|
||||
const { cleanup } = setEnv("NO_PROXY", "http://example.com")
|
||||
setNoProxy("http://example.com")
|
||||
expect(shouldEnableProxy()).toBe(false)
|
||||
cleanup()
|
||||
})
|
||||
})
|
||||
|
Reference in New Issue
Block a user