1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-27 12:56:01 +01:00
metamask-extension/test/unit/app/fetch-with-timeout.test.js
Erik Marks 76a2a9bb8b
@metamask/eslint config@5.0.0 (#10358)
* @metamask/eslint-config@5.0.0
* Update eslintrc and prettierrc
* yarn lint:fix
2021-02-04 10:15:23 -08:00

62 lines
1.8 KiB
JavaScript

import assert from 'assert';
import nock from 'nock';
import getFetchWithTimeout from '../../../shared/modules/fetch-with-timeout';
describe('getFetchWithTimeout', function () {
it('fetches a url', async function () {
nock('https://api.infura.io').get('/money').reply(200, '{"hodl": false}');
const fetchWithTimeout = getFetchWithTimeout(30000);
const response = await (
await fetchWithTimeout('https://api.infura.io/money')
).json();
assert.deepEqual(response, {
hodl: false,
});
});
it('throws when the request hits a custom timeout', async function () {
nock('https://api.infura.io')
.get('/moon')
.delay(2000)
.reply(200, '{"moon": "2012-12-21T11:11:11Z"}');
const fetchWithTimeout = getFetchWithTimeout(123);
try {
await fetchWithTimeout('https://api.infura.io/moon').then((r) =>
r.json(),
);
assert.fail('Request should throw');
} catch (e) {
assert.ok(e);
}
});
it('should abort the request when the custom timeout is hit', async function () {
nock('https://api.infura.io')
.get('/moon')
.delay(2000)
.reply(200, '{"moon": "2012-12-21T11:11:11Z"}');
const fetchWithTimeout = getFetchWithTimeout(123);
try {
await fetchWithTimeout('https://api.infura.io/moon').then((r) =>
r.json(),
);
assert.fail('Request should be aborted');
} catch (e) {
assert.deepEqual(e.message, 'Aborted');
}
});
it('throws on invalid timeout', async function () {
assert.throws(() => getFetchWithTimeout(), 'should throw');
assert.throws(() => getFetchWithTimeout(-1), 'should throw');
assert.throws(() => getFetchWithTimeout({}), 'should throw');
assert.throws(() => getFetchWithTimeout(true), 'should throw');
});
});