UNPKG

@emartech/escher-request

Version:
141 lines (140 loc) 7.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const chai_1 = require("chai"); const requestOption_1 = require("./requestOption"); describe('EscherRequestOption', function () { let dummyServiceConfig; const host = 'localhost'; beforeEach(function () { dummyServiceConfig = { host: 'localhost', port: 1234, prefix: '/api', rejectUnauthorized: false, secure: true, credentialScope: 'eu/dummy/ems_request' }; }); describe('create', function () { it('should populate options with parameters', function () { const options = requestOption_1.EscherRequestOption.create('example-host', '/api-test', true); (0, chai_1.expect)(options.rejectUnauthorized).to.eql(true); (0, chai_1.expect)(options.host).to.eql('example-host'); (0, chai_1.expect)(options.prefix).to.eql('/api-test'); }); it('should populate options with default parameters', function () { const options = requestOption_1.EscherRequestOption.create('example-host'); (0, chai_1.expect)(options.rejectUnauthorized).to.eql(true); (0, chai_1.expect)(options.host).to.eql('example-host'); (0, chai_1.expect)(options.prefix).to.eql(''); }); it('should populate options with for internal api', function () { const options = requestOption_1.EscherRequestOption.createForInternalApi('example-host', true); (0, chai_1.expect)(options.rejectUnauthorized).to.eql(true); (0, chai_1.expect)(options.host).to.eql('example-host'); (0, chai_1.expect)(options.prefix).to.eql('/api/v2/internal'); }); it('should populate options with for services api', function () { const options = requestOption_1.EscherRequestOption.createForServiceApi('example-host', true); (0, chai_1.expect)(options.rejectUnauthorized).to.eql(true); (0, chai_1.expect)(options.host).to.eql('example-host'); (0, chai_1.expect)(options.prefix).to.eql('/api/services'); }); it('should populate headers coming from options and preserve mandatory headers', function () { const options = requestOption_1.EscherRequestOption.create({ host: 'example-host', headers: [['header-name', 'header-value']] }, '/api-test', true); (0, chai_1.expect)(options.rejectUnauthorized).to.eql(true); (0, chai_1.expect)(options.host).to.eql('example-host'); (0, chai_1.expect)(options.headers).to.deep.equal([ ['header-name', 'header-value'], ['content-type', 'application/json'], ['host', 'example-host'] ]); }); }); describe('header handling', function () { it('can accept additional headers', function () { const dummyHeader = ['header-name', 'header-value']; const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); requestOptions.setHeader(dummyHeader); (0, chai_1.expect)(requestOptions.getHeader('header-name')).to.eql('header-value'); }); it('should add default content type', function () { const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); (0, chai_1.expect)(requestOptions.getHeader('content-type')).to.eql('application/json'); }); it('should not duplicate headers with same name', function () { const expectedContentTypeHeader = ['content-type', 'text/csv']; const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); requestOptions.setHeader(expectedContentTypeHeader); (0, chai_1.expect)(requestOptions.getHeader('content-type')).to.eql('text/csv'); }); }); describe('allowEmptyResponse', function () { it('should be set to false by default', function () { const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); (0, chai_1.expect)(requestOptions.allowEmptyResponse).to.eql(false); }); it('should be set to the value provided in config', function () { dummyServiceConfig.allowEmptyResponse = true; const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); (0, chai_1.expect)(requestOptions.allowEmptyResponse).to.eql(true); }); }); describe('timeout', function () { it('should return a default value', function () { const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); (0, chai_1.expect)(requestOptions.getTimeout()).to.be.eql(15000); }); it('should return the timeout passed in the constructor', function () { const options = Object.assign({}, dummyServiceConfig); options.timeout = 0; const requestOptions = new requestOption_1.EscherRequestOption(host, options); (0, chai_1.expect)(requestOptions.getTimeout()).to.be.eql(0); }); it('should return the timeout set by setTimeout', function () { const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); requestOptions.setTimeout(60000); (0, chai_1.expect)(requestOptions.getTimeout()).to.be.eql(60000); }); }); describe('toHash', function () { it('should return the proper object', function () { const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); (0, chai_1.expect)(requestOptions.toHash()).to.be.eql({ headers: [ ['content-type', 'application/json'], ['host', 'localhost'] ], host: 'localhost', port: 1234, prefix: '/api', rejectUnauthorized: false, timeout: 15000, maxContentLength: 10485760, retryConfig: null }); (0, chai_1.expect)(requestOptions.toHash()).to.not.have.property('allowEmptyResponse'); }); it('should add allowEmptyResponse to hash if set to TRUE', function () { dummyServiceConfig.allowEmptyResponse = true; const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); (0, chai_1.expect)(requestOptions.toHash()).to.have.property('allowEmptyResponse', true); }); it('should not cache headers', function () { const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); const headers = requestOptions.toHash().headers; headers.push(['from_test']); (0, chai_1.expect)(requestOptions.toHash().headers).not.to.include(['from_test']); }); }); describe('setHost', () => { it('should set host', () => { const requestOptions = new requestOption_1.EscherRequestOption(host, dummyServiceConfig); requestOptions.setHost('suitedocker.ett.local'); (0, chai_1.expect)(requestOptions.host).to.eql('suitedocker.ett.local'); }); }); });