import * as fetch from '../src/fetch.js'; import nock from 'nock'; beforeAll(() => nock.disableNetConnect()); afterEach(() => { const pending = nock.pendingMocks(); nock.cleanAll(); expect(pending).toEqual([]); }); afterAll(() => { nock.enableNetConnect(); nock.restore(); }); it('checking fetch', async () => { const host_url = 'https://example.com'; const manifest_url = host_url + '/manifest'; const ping_url = host_url + '/ping'; nock(host_url) .get('/manifest') .reply(200, {latest: 'latest'}) .get('/manifest') .matchHeader('authorization', 'Bearer invalid_token') .reply(401, {error: '401: Unauthorized'}) .get('/ping') .twice() .reply(301, undefined, { Location: host_url + '/pong' }) .get('/pong') .reply(200, 'pong') .get('/error') .replyWithError('Network failure'); let response: Record = await fetch.fetch(manifest_url); expect(response.error).toBe(undefined); expect(response.data).toContain('latest'); response = await fetch.fetch(ping_url, '', 1); expect(response.error).toBe(undefined); expect(response.data).toContain('pong'); response = await fetch.fetch(ping_url, '', 0); expect(response.error).toBe('301: Redirect error'); expect(response.data).toBe(undefined); response = await fetch.fetch(manifest_url, 'invalid_token'); expect(response.error).toBe('401: Unauthorized'); expect(response.data).toBe(undefined); response = await fetch.fetch(host_url + '/error'); expect(response.error).toContain('Fetch error:'); expect(response.data).toBe(undefined); });