import {Host} from './host'; const originalInnerHtml = document.body.innerHTML; afterEach(() => { document.body.innerHTML = originalInnerHtml; }); /** Perform actions manually before each test * * We cannot use Jest's `beforeEach`, * because it does not support passing parameters. * @see https://github.com/jasmine/jasmine/issues/1274 * @param {Location} [scriptSrc] - Value for the `src` attribute of the script */ function beforeEachCustom(scriptSrc) { const defaultScriptSrc = '/js/gf-site.js'; let html = ''; // The page to load should have a standard doctype and load our JavaScript scriptSrc = scriptSrc || defaultScriptSrc; html = '<!DOCTYPE html><html><head><script src="' + scriptSrc + '" /></head><body><p>Hello, World!</p></body></html>'; document.body.innerHTML = html; } const domain = 'goldenfrog.com'; test(domain, () => { jsdom.reconfigure({ url: 'https://' + domain + '/vyprvpn' }); beforeEachCustom(); const host = new Host(); expect(host.isPrimaryDomain).toBeTruthy(); expect(host.isProduction).toBeTruthy(); expect(host.isStaging).toBeFalsy(); expect(host.isTesting).toBeFalsy(); expect(host.isDevelopment).toBeFalsy(); expect(host.environment).toEqual('production'); expect(host.locationDomain).toEqual('goldenfrog.com'); }); const domain2 = 'not_us.com'; const domain2b = 'my.cdn.of.choice.com'; test(domain2, () => { jsdom.reconfigure({ url: 'https://' + domain2 + '/vyprvpn' }); const scriptSrc = 'https://' + domain2b + '/js/gf-site.js'; beforeEachCustom(scriptSrc); const host = new Host(); expect(host.isPrimaryDomain).toBeFalsy(); expect(host.isProduction).toBeTruthy(); expect(host.isStaging).toBeFalsy(); expect(host.isTesting).toBeFalsy(); expect(host.isDevelopment).toBeFalsy(); expect(host.environment).toEqual('production'); expect(host.locationDomain).toEqual('not_us.com'); }); const domain3 = 'www.test.vyprvpn.com'; test(domain3, () => { jsdom.reconfigure({ url: 'https://' + domain3 + '/vyprvpn', }); beforeEachCustom(); const host = new Host(); expect(host.isPrimaryDomain).toBeTruthy(); expect(host.isProduction).toBeFalsy(); expect(host.isStaging).toBeFalsy(); expect(host.isTesting).toBeTruthy(); expect(host.isDevelopment).toBeFalsy(); expect(host.environment).toEqual('testing'); expect(host.locationDomain).toEqual('vyprvpn.com'); }); const domain4 = 'www.staging.static.vyprvpn.com'; test(domain4, () => { jsdom.reconfigure({ url: 'https://' + domain4 + '/vyprvpn', }); beforeEachCustom(); const host = new Host(); expect(host.isPrimaryDomain).toBeTruthy(); expect(host.isProduction).toBeFalsy(); expect(host.isStaging).toBeTruthy(); expect(host.isTesting).toBeFalsy(); expect(host.isDevelopment).toBeFalsy(); expect(host.environment).toEqual('staging'); expect(host.locationDomain).toEqual('vyprvpn.com'); }); const domain5 = '10.47.52.37'; test(domain5, () => { jsdom.reconfigure({ url: 'https://' + domain5 + '/vyprvpn', }); beforeEachCustom(); const host = new Host(); expect(host.isPrimaryDomain).toBeFalsy(); expect(host.isProduction).toBeFalsy(); expect(host.isStaging).toBeFalsy(); expect(host.isTesting).toBeFalsy(); expect(host.isDevelopment).toBeTruthy(); expect(host.environment).toEqual('development'); expect(host.locationDomain).toEqual('52.37'); }); const domain6 = 'vyprvpn.com'; test(domain6, () => { jsdom.reconfigure({ url: 'https://' + domain6, }); beforeEachCustom(); const host = new Host(); expect(host.isPrimaryDomain).toBeTruthy(); expect(host.isProduction).toBeTruthy(); expect(host.isStaging).toBeFalsy(); expect(host.isTesting).toBeFalsy(); expect(host.isDevelopment).toBeFalsy(); expect(host.environment).toEqual('production'); expect(host.locationDomain).toEqual('vyprvpn.com'); });