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