1*8d3f3824SCedric van Putten// Reset proxy
2*8d3f3824SCedric van PuttenbeforeEach(() => {
3*8d3f3824SCedric van Putten  delete process.env.https_proxy;
4*8d3f3824SCedric van Putten});
5*8d3f3824SCedric van Putten
6*8d3f3824SCedric van Puttenit(`returns false when registry.yarnpkg.com can be reached`, async () => {
7*8d3f3824SCedric van Putten  // Mock DNS to fail at finding the URL
8*8d3f3824SCedric van Putten  jest.mock('dns', () => {
9*8d3f3824SCedric van Putten    return {
10*8d3f3824SCedric van Putten      lookup(url, callback) {
11*8d3f3824SCedric van Putten        callback(null);
12*8d3f3824SCedric van Putten      },
13*8d3f3824SCedric van Putten    };
14*8d3f3824SCedric van Putten  });
15*8d3f3824SCedric van Putten
16*8d3f3824SCedric van Putten  const { isYarnOfflineAsync } = require('../yarn');
17*8d3f3824SCedric van Putten  expect(await isYarnOfflineAsync()).toBe(false);
18*8d3f3824SCedric van Putten});
19*8d3f3824SCedric van Puttenit(`allows an npm proxy`, async () => {
20*8d3f3824SCedric van Putten  // Mock DNS to fail at finding the URL
21*8d3f3824SCedric van Putten  jest.mock('dns', () => {
22*8d3f3824SCedric van Putten    return {
23*8d3f3824SCedric van Putten      lookup(url, callback) {
24*8d3f3824SCedric van Putten        if (url === 'registry.yarnpkg.com') {
25*8d3f3824SCedric van Putten          callback(new Error());
26*8d3f3824SCedric van Putten        }
27*8d3f3824SCedric van Putten        callback(null);
28*8d3f3824SCedric van Putten      },
29*8d3f3824SCedric van Putten    };
30*8d3f3824SCedric van Putten  });
31*8d3f3824SCedric van Putten  // Mock npm to return a null
32*8d3f3824SCedric van Putten  jest.mock('child_process', () => {
33*8d3f3824SCedric van Putten    return {
34*8d3f3824SCedric van Putten      execSync() {
35*8d3f3824SCedric van Putten        return 'https://expo.dev';
36*8d3f3824SCedric van Putten      },
37*8d3f3824SCedric van Putten    };
38*8d3f3824SCedric van Putten  });
39*8d3f3824SCedric van Putten
40*8d3f3824SCedric van Putten  const { isYarnOfflineAsync } = require('../yarn');
41*8d3f3824SCedric van Putten  expect(await isYarnOfflineAsync()).toBe(false);
42*8d3f3824SCedric van Putten});
43*8d3f3824SCedric van Putten
44*8d3f3824SCedric van Puttendescribe('getNpmProxy', () => {
45*8d3f3824SCedric van Putten  beforeAll(() => {
46*8d3f3824SCedric van Putten    jest.mock('child_process', () => {
47*8d3f3824SCedric van Putten      return {
48*8d3f3824SCedric van Putten        execSync: () => {
49*8d3f3824SCedric van Putten          if (process.env.YARN_OFFLINE_TEST_VALUE_SHOULD_THROW) {
50*8d3f3824SCedric van Putten            throw new Error('failed');
51*8d3f3824SCedric van Putten          }
52*8d3f3824SCedric van Putten          return 'something';
53*8d3f3824SCedric van Putten        },
54*8d3f3824SCedric van Putten      };
55*8d3f3824SCedric van Putten    });
56*8d3f3824SCedric van Putten  });
57*8d3f3824SCedric van Putten  beforeEach(() => {
58*8d3f3824SCedric van Putten    delete process.env.YARN_OFFLINE_TEST_VALUE_SHOULD_THROW;
59*8d3f3824SCedric van Putten  });
60*8d3f3824SCedric van Putten  it(`uses the env variable https_proxy for the proxy`, async () => {
61*8d3f3824SCedric van Putten    process.env.https_proxy = 'mock-value';
62*8d3f3824SCedric van Putten    const { getNpmProxy } = require('../yarn');
63*8d3f3824SCedric van Putten    expect(getNpmProxy()).toBe('mock-value');
64*8d3f3824SCedric van Putten  });
65*8d3f3824SCedric van Putten  it(`returns null when npm cli has an error`, async () => {
66*8d3f3824SCedric van Putten    process.env.YARN_OFFLINE_TEST_VALUE_SHOULD_THROW = 'true';
67*8d3f3824SCedric van Putten    const { getNpmProxy } = require('../yarn');
68*8d3f3824SCedric van Putten    expect(getNpmProxy()).toBe(null);
69*8d3f3824SCedric van Putten  });
70*8d3f3824SCedric van Putten
71*8d3f3824SCedric van Putten  it(`fetches the proxy from npm CLI`, async () => {
72*8d3f3824SCedric van Putten    const { getNpmProxy } = require('../yarn');
73*8d3f3824SCedric van Putten    expect(getNpmProxy()).toBe('something');
74*8d3f3824SCedric van Putten  });
75*8d3f3824SCedric van Putten});
76