filestack-js
Version:
Official JavaScript library for Filestack
60 lines (58 loc) • 8.34 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 { shouldRetry } from './shouldRetry';
import { FsRequestErrorCode, FsRequestError } from '../error';
var testResponse = function (code) {
if (code === void 0) { code = 200; }
return ({
status: code,
statusText: 'test',
headers: {},
data: {},
config: {},
});
};
describe('Request/Helpers/shouldRetry', function () {
describe('shouldRetry', function () {
it('should retry on network error', function () {
expect(shouldRetry(new FsRequestError('', null, testResponse(), FsRequestErrorCode.NETWORK))).toEqual(true);
});
it('should retry on server error', function () {
expect(shouldRetry(new FsRequestError('', null, testResponse(), FsRequestErrorCode.SERVER))).toEqual(true);
});
it('should retry on server error', function () {
expect(shouldRetry(new FsRequestError('', null, testResponse(), FsRequestErrorCode.TIMEOUT))).toEqual(true);
});
it('should retry on request 5xx code', function () {
// @ts-ignore
expect(shouldRetry(new FsRequestError('', null, testResponse(504), FsRequestErrorCode.OTHER))).toEqual(true);
});
it('should not retry on 4xx codes', function () {
// @ts-ignore
expect(shouldRetry(new FsRequestError('', null, testResponse(404), FsRequestErrorCode.REQUEST))).toEqual(false);
});
it('should not retry on request error', function () {
// @ts-ignore
expect(shouldRetry(new FsRequestError('', null, testResponse(), FsRequestErrorCode.REQUEST))).toEqual(false);
});
it('should not retry on request aborted', function () {
// @ts-ignore
expect(shouldRetry(new FsRequestError('', null, testResponse(), FsRequestErrorCode.ABORTED))).toEqual(false);
});
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC9oZWxwZXJzL3Nob3VsZFJldHJ5LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzlELElBQU0sWUFBWSxHQUFHLFVBQUMsSUFBa0I7SUFBbEIscUJBQUEsRUFBQSxVQUFrQjtJQUFpQixPQUFBLENBQUM7UUFDeEQsTUFBTSxFQUFFLElBQUk7UUFDWixVQUFVLEVBQUUsTUFBTTtRQUNsQixPQUFPLEVBQUUsRUFBRTtRQUNYLElBQUksRUFBRSxFQUFFO1FBQ1IsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0FBTnVELENBTXZELENBQUM7QUFFSCxRQUFRLENBQUMsNkJBQTZCLEVBQUU7SUFDdEMsUUFBUSxDQUFDLGFBQWEsRUFBRTtRQUN0QixFQUFFLENBQUMsK0JBQStCLEVBQUU7WUFDbEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUU7WUFDakMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0csQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUU7WUFDakMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0NBQWtDLEVBQUU7WUFDckMsYUFBYTtZQUNiLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrQkFBK0IsRUFBRTtZQUNsQyxhQUFhO1lBQ2IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1DQUFtQyxFQUFFO1lBQ3RDLGFBQWE7WUFDYixNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRTtZQUN4QyxhQUFhO1lBQ2IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0csQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6ImxpYi9yZXF1ZXN0L2hlbHBlcnMvc2hvdWxkUmV0cnkuc3BlYy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTggYnkgRmlsZXN0YWNrXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgc2hvdWxkUmV0cnkgfSBmcm9tICcuL3Nob3VsZFJldHJ5JztcbmltcG9ydCB7IEZzUmVxdWVzdEVycm9yQ29kZSwgRnNSZXF1ZXN0RXJyb3IgfSBmcm9tICcuLi9lcnJvcic7XG5pbXBvcnQgeyBGc1Jlc3BvbnNlIH0gZnJvbSAnLi8uLi90eXBlcyc7XG5cbmNvbnN0IHRlc3RSZXNwb25zZSA9IChjb2RlOiBudW1iZXIgPSAyMDApOiBGc1Jlc3BvbnNlID0+ICh7XG4gIHN0YXR1czogY29kZSxcbiAgc3RhdHVzVGV4dDogJ3Rlc3QnLFxuICBoZWFkZXJzOiB7fSxcbiAgZGF0YToge30sXG4gIGNvbmZpZzoge30sXG59KTtcblxuZGVzY3JpYmUoJ1JlcXVlc3QvSGVscGVycy9zaG91bGRSZXRyeScsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3Nob3VsZFJldHJ5JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0cnkgb24gbmV0d29yayBlcnJvcicsICgpID0+IHtcbiAgICAgIGV4cGVjdChzaG91bGRSZXRyeShuZXcgRnNSZXF1ZXN0RXJyb3IoJycsIG51bGwsIHRlc3RSZXNwb25zZSgpLCBGc1JlcXVlc3RFcnJvckNvZGUuTkVUV09SSykpKS50b0VxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXRyeSBvbiBzZXJ2ZXIgZXJyb3InLCAoKSA9PiB7XG4gICAgICBleHBlY3Qoc2hvdWxkUmV0cnkobmV3IEZzUmVxdWVzdEVycm9yKCcnLCBudWxsLCB0ZXN0UmVzcG9uc2UoKSwgRnNSZXF1ZXN0RXJyb3JDb2RlLlNFUlZFUikpKS50b0VxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXRyeSBvbiBzZXJ2ZXIgZXJyb3InLCAoKSA9PiB7XG4gICAgICBleHBlY3Qoc2hvdWxkUmV0cnkobmV3IEZzUmVxdWVzdEVycm9yKCcnLCBudWxsLCB0ZXN0UmVzcG9uc2UoKSwgRnNSZXF1ZXN0RXJyb3JDb2RlLlRJTUVPVVQpKSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0cnkgb24gcmVxdWVzdCA1eHggY29kZScsICgpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGV4cGVjdChzaG91bGRSZXRyeShuZXcgRnNSZXF1ZXN0RXJyb3IoJycsIG51bGwsIHRlc3RSZXNwb25zZSg1MDQpLCBGc1JlcXVlc3RFcnJvckNvZGUuT1RIRVIpKSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IHJldHJ5IG9uIDR4eCBjb2RlcycsICgpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGV4cGVjdChzaG91bGRSZXRyeShuZXcgRnNSZXF1ZXN0RXJyb3IoJycsIG51bGwsIHRlc3RSZXNwb25zZSg0MDQpLCBGc1JlcXVlc3RFcnJvckNvZGUuUkVRVUVTVCkpKS50b0VxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IHJldHJ5IG9uIHJlcXVlc3QgZXJyb3InLCAoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBleHBlY3Qoc2hvdWxkUmV0cnkobmV3IEZzUmVxdWVzdEVycm9yKCcnLCBudWxsLCB0ZXN0UmVzcG9uc2UoKSwgRnNSZXF1ZXN0RXJyb3JDb2RlLlJFUVVFU1QpKSkudG9FcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCByZXRyeSBvbiByZXF1ZXN0IGFib3J0ZWQnLCAoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBleHBlY3Qoc2hvdWxkUmV0cnkobmV3IEZzUmVxdWVzdEVycm9yKCcnLCBudWxsLCB0ZXN0UmVzcG9uc2UoKSwgRnNSZXF1ZXN0RXJyb3JDb2RlLkFCT1JURUQpKSkudG9FcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=