@app-masters/js-lib
Version:
102 lines (84 loc) • 2.93 kB
JavaScript
/* global test, expect, jest */
import Http from '../src/http';
import ErrorHandler from '../src/httpErrorHandler';
import fetch from 'node-fetch';
import nock from 'nock';
jest.setTimeout(1000);
test('Setting the callback for HTTP errors', () => {
const onAPIFail = (error) => console.error('onAPIFail: ', error);
const onConnectionFail = (error) => console.error('onConnectionFail: ', error);
const callback = {onAPIFail, onConnectionFail};
ErrorHandler.setup(callback);
expect(ErrorHandler.callback).not.toBe(undefined);
});
test('Simple setup in HTTP', () => {
const baseURL = 'http://localhost.com:3000';
const userId = 'thisIsAnUserId123';
const headers = {
'content-type': 'application/json',
'mobile-version': '1.0.0',
'client': 'mobile'
};
Http.setBaseURL(baseURL);
Http.setEndpointParam('user', userId);
Http.setHeaders(headers);
Http.setFetch(fetch);
expect(Http.baseURL).toBe(baseURL);
expect(Http.headers).toBe(headers);
});
test('Specific setup in HTTP', () => {
const headers = Http.headers;
const version = '1.0.0';
const client = 'mobile';
const contentType = 'application/json';
const token = 'JWT-0000000000000';
Http.setup(version, client, contentType);
expect(Http.headers).toEqual(headers);
expect(Http.headers['mobile-version']).toEqual(version);
expect(Http.headers['client']).toEqual(client);
expect(Http.headers['content-type']).toEqual(contentType);
Http.setAuthorization(token);
expect(Http.headers['authorization']).toEqual(token);
});
test('[200] GET Status OK', () => {
nock(Http.baseURL, {reqheaders: Http.headers})
.get('/')
.reply(200, {ok: true});
expect.assertions(1);
return Http.get('/').then((response) => {
expect(response.ok).toBe(true);
}).catch((error) => {
expect(error).toBe(false);
});
});
test('[404] GET Not found', () => {
nock(Http.baseURL, {reqheaders: Http.headers}).get('/').reply(404);
expect.assertions(2);
return Http.get('/').then((response) => {
expect(response).toBe(false);
}).catch((error) => {
expect(error.name).toBe(404);
expect(error.message).toBe('Não encontrado.');
});
});
test('[FetchError] GET Failed to fetch', () => {
const fetchError = {
'errno': 'ETIMEDOUT',
'code': 'ETIMEDOUT',
'message': 'connect ETIMEDOUT localhost:3000'
};
nock(Http.baseURL, {reqheaders: Http.headers})
.get('/')
.replyWithError(fetchError);
expect.assertions(1);
return Http.get('/').then((response) => {
expect(response).toBe(false);
}).catch((error) => {
expect(error.name).toBe('FetchError');
});
});
test('Reseting Http', () => {
Http.reset();
expect(Http.headers).toEqual(Http.defaultHeaders);
expect(Http.authorization).toEqual('');
});