filestack-js
Version:
Official JavaScript library for Filestack
128 lines (126 loc) • 14.4 kB
JavaScript
/*
* Copyright (c) 2018 by Filestack.
* Some rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { __awaiter, __generator } from "tslib";
import nock from 'nock';
import { Dispatch } from './dispatch';
import { HttpAdapter } from './adapters/http';
import { FsHttpMethod } from './types';
import { FsRequestError, FsRequestErrorCode } from './error';
jest.mock('./adapters/http');
describe('Request/Dispatch', function () {
afterEach(function () {
nock.cleanAll();
});
var adapter = new HttpAdapter();
var url = 'https://filestack.com';
var configBase = {
url: url,
method: FsHttpMethod.GET,
};
var fsResponseBase = {
status: 400,
statusText: 'error',
headers: null,
data: null,
config: configBase,
};
describe('dispatch request', function () {
it('should return req', function () { return __awaiter(void 0, void 0, void 0, function () {
var dispatch, req;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
jest.spyOn(adapter, 'request').mockImplementation(function () { return Promise.resolve({
status: 200,
headers: {},
data: {},
config: {},
statusText: ''
}); });
dispatch = new Dispatch(adapter);
req = { url: url, method: FsHttpMethod.GET, headers: {} };
return [4 /*yield*/, dispatch.request(req)];
case 1:
_a.sent();
expect(adapter.request).toHaveBeenCalledWith(req);
return [2 /*return*/];
}
});
}); });
});
describe('dispatch request catch', function () {
it('should return config base', function () { return __awaiter(void 0, void 0, void 0, function () {
var error, dispatch;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
error = new FsRequestError('error msg', configBase, fsResponseBase);
jest.spyOn(adapter, 'request').mockImplementation(function () { return Promise.reject(error); });
dispatch = new Dispatch(adapter);
return [4 /*yield*/, dispatch.request(configBase).catch(function (err) { return err; })];
case 1:
_a.sent();
expect(adapter.request).toHaveBeenCalledWith(configBase);
return [2 /*return*/];
}
});
}); });
it('should return config base', function () { return __awaiter(void 0, void 0, void 0, function () {
var error, dispatch;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
fsResponseBase.status = 500;
error = new FsRequestError('error msg', configBase, fsResponseBase, FsRequestErrorCode.NETWORK);
jest.spyOn(adapter, 'request').mockImplementation(function () { return Promise.reject(error); });
dispatch = new Dispatch(adapter);
return [4 /*yield*/, dispatch.request(configBase).catch(function (err) { return err; })];
case 1:
_a.sent();
expect(adapter.request).toHaveBeenCalledWith(configBase);
return [2 /*return*/];
}
});
}); });
it('should return config', function () { return __awaiter(void 0, void 0, void 0, function () {
var config, error, dispatch;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
config = {
url: url,
method: FsHttpMethod.GET,
headers: {},
retry: {
retry: 3,
},
};
fsResponseBase.status = 500;
error = new FsRequestError('error msg', config, fsResponseBase, FsRequestErrorCode.NETWORK);
jest.spyOn(adapter, 'request').mockImplementation(function () { return Promise.reject(error); });
dispatch = new Dispatch(adapter);
return [4 /*yield*/, dispatch.request(config).catch(function (err) { return err; })];
case 1:
_a.sent();
expect(adapter.request).toHaveBeenCalledWith(config);
return [2 /*return*/];
}
});
}); });
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC9kaXNwYXRjaC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7QUFFSCxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTdELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUU3QixRQUFRLENBQUMsa0JBQWtCLEVBQUU7SUFDM0IsU0FBUyxDQUFDO1FBQ1IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNsQyxJQUFNLEdBQUcsR0FBRyx1QkFBdUIsQ0FBQztJQUNwQyxJQUFNLFVBQVUsR0FBRztRQUNqQixHQUFHLEVBQUUsR0FBRztRQUNSLE1BQU0sRUFBRSxZQUFZLENBQUMsR0FBRztLQUN6QixDQUFDO0lBQ0YsSUFBSSxjQUFjLEdBQUc7UUFDbkIsTUFBTSxFQUFFLEdBQUc7UUFDWCxVQUFVLEVBQUUsT0FBTztRQUNuQixPQUFPLEVBQUUsSUFBSTtRQUNiLElBQUksRUFBRSxJQUFJO1FBQ1YsTUFBTSxFQUFFLFVBQVU7S0FDbkIsQ0FBQztJQUVGLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtRQUMzQixFQUFFLENBQUMsbUJBQW1CLEVBQUU7Ozs7O3dCQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFNLE9BQUEsT0FBTyxDQUFDLE9BQU8sQ0FBQzs0QkFDdEUsTUFBTSxFQUFFLEdBQUc7NEJBQ1gsT0FBTyxFQUFFLEVBQUU7NEJBQ1gsSUFBSSxFQUFFLEVBQUU7NEJBQ1IsTUFBTSxFQUFFLEVBQUU7NEJBQ1YsVUFBVSxFQUFFLEVBQUU7eUJBQ2YsQ0FBQyxFQU5zRCxDQU10RCxDQUFDLENBQUM7d0JBQ0UsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUNqQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEtBQUEsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7d0JBQzNELHFCQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUE7O3dCQUEzQixTQUEyQixDQUFDO3dCQUM1QixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDOzs7O2FBQ25ELENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHdCQUF3QixFQUFFO1FBQ2pDLEVBQUUsQ0FBQywyQkFBMkIsRUFBRTs7Ozs7d0JBQ3hCLEtBQUssR0FBRyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO3dCQUMxRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFNLE9BQUEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBckIsQ0FBcUIsQ0FBQyxDQUFDO3dCQUN6RSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ3ZDLHFCQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxFQUFILENBQUcsQ0FBQyxFQUFBOzt3QkFBcEQsU0FBb0QsQ0FBQzt3QkFDckQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQzs7OzthQUMxRCxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkJBQTJCLEVBQUU7Ozs7O3dCQUM5QixjQUFjLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQzt3QkFDdEIsS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUN0RyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFNLE9BQUEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBckIsQ0FBcUIsQ0FBQyxDQUFDO3dCQUN6RSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ3ZDLHFCQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxFQUFILENBQUcsQ0FBQyxFQUFBOzt3QkFBcEQsU0FBb0QsQ0FBQzt3QkFDckQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQzs7OzthQUMxRCxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0JBQXNCLEVBQUU7Ozs7O3dCQUNuQixNQUFNLEdBQUc7NEJBQ2IsR0FBRyxFQUFFLEdBQUc7NEJBQ1IsTUFBTSxFQUFFLFlBQVksQ0FBQyxHQUFHOzRCQUN4QixPQUFPLEVBQUUsRUFBRTs0QkFDWCxLQUFLLEVBQUU7Z0NBQ0wsS0FBSyxFQUFFLENBQUM7NkJBQ1Q7eUJBQ0YsQ0FBQzt3QkFDRixjQUFjLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQzt3QkFDdEIsS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUNsRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFNLE9BQUEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBckIsQ0FBcUIsQ0FBQyxDQUFDO3dCQUN6RSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ3ZDLHFCQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxFQUFILENBQUcsQ0FBQyxFQUFBOzt3QkFBaEQsU0FBZ0QsQ0FBQzt3QkFDakQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7OzthQUN0RCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6ImxpYi9yZXF1ZXN0L2Rpc3BhdGNoLnNwZWMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4IGJ5IEZpbGVzdGFjay5cbiAqIFNvbWUgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgbm9jayBmcm9tICdub2NrJztcbmltcG9ydCB7IERpc3BhdGNoIH0gZnJvbSAnLi9kaXNwYXRjaCc7XG5pbXBvcnQgeyBIdHRwQWRhcHRlciB9IGZyb20gJy4vYWRhcHRlcnMvaHR0cCc7XG5pbXBvcnQgeyBGc0h0dHBNZXRob2QgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEZzUmVxdWVzdEVycm9yLCBGc1JlcXVlc3RFcnJvckNvZGUgfSBmcm9tICcuL2Vycm9yJztcblxuamVzdC5tb2NrKCcuL2FkYXB0ZXJzL2h0dHAnKTtcblxuZGVzY3JpYmUoJ1JlcXVlc3QvRGlzcGF0Y2gnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICB9KTtcblxuICBjb25zdCBhZGFwdGVyID0gbmV3IEh0dHBBZGFwdGVyKCk7XG4gIGNvbnN0IHVybCA9ICdodHRwczovL2ZpbGVzdGFjay5jb20nO1xuICBjb25zdCBjb25maWdCYXNlID0ge1xuICAgIHVybDogdXJsLFxuICAgIG1ldGhvZDogRnNIdHRwTWV0aG9kLkdFVCxcbiAgfTtcbiAgbGV0IGZzUmVzcG9uc2VCYXNlID0ge1xuICAgIHN0YXR1czogNDAwLFxuICAgIHN0YXR1c1RleHQ6ICdlcnJvcicsXG4gICAgaGVhZGVyczogbnVsbCxcbiAgICBkYXRhOiBudWxsLFxuICAgIGNvbmZpZzogY29uZmlnQmFzZSxcbiAgfTtcblxuICBkZXNjcmliZSgnZGlzcGF0Y2ggcmVxdWVzdCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiByZXEnLCBhc3luYyAoKSA9PiB7XG4gICAgICBqZXN0LnNweU9uKGFkYXB0ZXIsICdyZXF1ZXN0JykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgZGF0YToge30sXG4gICAgICAgIGNvbmZpZzoge30sXG4gICAgICAgIHN0YXR1c1RleHQ6ICcnXG4gICAgICB9KSk7XG4gICAgICBjb25zdCBkaXNwYXRjaCA9IG5ldyBEaXNwYXRjaChhZGFwdGVyKTtcbiAgICAgIGNvbnN0IHJlcSA9IHsgdXJsLCBtZXRob2Q6IEZzSHR0cE1ldGhvZC5HRVQsIGhlYWRlcnM6IHt9IH07XG4gICAgICBhd2FpdCBkaXNwYXRjaC5yZXF1ZXN0KHJlcSk7XG4gICAgICBleHBlY3QoYWRhcHRlci5yZXF1ZXN0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChyZXEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGlzcGF0Y2ggcmVxdWVzdCBjYXRjaCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBjb25maWcgYmFzZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEZzUmVxdWVzdEVycm9yKCdlcnJvciBtc2cnLCBjb25maWdCYXNlLCBmc1Jlc3BvbnNlQmFzZSk7XG4gICAgICBqZXN0LnNweU9uKGFkYXB0ZXIsICdyZXF1ZXN0JykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFByb21pc2UucmVqZWN0KGVycm9yKSk7XG4gICAgICBjb25zdCBkaXNwYXRjaCA9IG5ldyBEaXNwYXRjaChhZGFwdGVyKTtcbiAgICAgIGF3YWl0IGRpc3BhdGNoLnJlcXVlc3QoY29uZmlnQmFzZSkuY2F0Y2goZXJyID0+IGVycik7XG4gICAgICBleHBlY3QoYWRhcHRlci5yZXF1ZXN0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChjb25maWdCYXNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvbmZpZyBiYXNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgZnNSZXNwb25zZUJhc2Uuc3RhdHVzID0gNTAwO1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRnNSZXF1ZXN0RXJyb3IoJ2Vycm9yIG1zZycsIGNvbmZpZ0Jhc2UsIGZzUmVzcG9uc2VCYXNlLCBGc1JlcXVlc3RFcnJvckNvZGUuTkVUV09SSyk7XG4gICAgICBqZXN0LnNweU9uKGFkYXB0ZXIsICdyZXF1ZXN0JykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFByb21pc2UucmVqZWN0KGVycm9yKSk7XG4gICAgICBjb25zdCBkaXNwYXRjaCA9IG5ldyBEaXNwYXRjaChhZGFwdGVyKTtcbiAgICAgIGF3YWl0IGRpc3BhdGNoLnJlcXVlc3QoY29uZmlnQmFzZSkuY2F0Y2goZXJyID0+IGVycik7XG4gICAgICBleHBlY3QoYWRhcHRlci5yZXF1ZXN0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChjb25maWdCYXNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvbmZpZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIG1ldGhvZDogRnNIdHRwTWV0aG9kLkdFVCxcbiAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgIHJldHJ5OiB7XG4gICAgICAgICAgcmV0cnk6IDMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgZnNSZXNwb25zZUJhc2Uuc3RhdHVzID0gNTAwO1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRnNSZXF1ZXN0RXJyb3IoJ2Vycm9yIG1zZycsIGNvbmZpZywgZnNSZXNwb25zZUJhc2UsIEZzUmVxdWVzdEVycm9yQ29kZS5ORVRXT1JLKTtcbiAgICAgIGplc3Quc3B5T24oYWRhcHRlciwgJ3JlcXVlc3QnKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZWplY3QoZXJyb3IpKTtcbiAgICAgIGNvbnN0IGRpc3BhdGNoID0gbmV3IERpc3BhdGNoKGFkYXB0ZXIpO1xuICAgICAgYXdhaXQgZGlzcGF0Y2gucmVxdWVzdChjb25maWcpLmNhdGNoKGVyciA9PiBlcnIpO1xuICAgICAgZXhwZWN0KGFkYXB0ZXIucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoY29uZmlnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==