filestack-js
Version:
Official JavaScript library for Filestack
90 lines (88 loc) • 13 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 { parse, normalizeHeaders, set, normalizeName } from './headers';
describe('Request/Helpers/Headers', function () {
describe('parse headers', function () {
it('should return empty object', function () {
expect(parse(null)).toEqual({});
});
it('headers with : should return empty object ', function () {
var headers = ':';
expect(parse(headers)).toEqual({});
});
it('should return object with from filestack.com', function () {
var headers = 'from:filestack.com\nfrom:filestack.com';
expect(parse(headers)).toEqual({ from: 'filestack.com' });
});
it('should return set-cookies false', function () {
var headers = 'set-cookie:false';
expect(parse(headers)).toEqual({ 'set-cookie': ['false'] });
});
it('should concat multiple set-cookie headers into array', function () {
var headers = 'set-cookie:test1\nset-cookie:test2\nset-cookie:test3';
expect(parse(headers)).toEqual({ 'set-cookie': ['test1', 'test2', 'test3'] });
});
it('should concat multiple not ignored headers into string', function () {
var headers = 'testheader:test1\ntestheader:test2\ntestheader:test3';
expect(parse(headers)).toEqual({ 'testheader': 'test1, test2, test3' });
});
});
describe('normalize headers', function () {
it('normalize headers should return empty object', function () {
// @ts-ignore
expect(normalizeHeaders()).toEqual({});
});
it('normalize headers with set-cookies false, should return false', function () {
var _a;
var data = (_a = {}, _a['set-cookies'] = 'false', _a);
expect(normalizeHeaders(data)).toEqual({ 'Set-Cookies': 'false' });
});
});
describe('set headers', function () {
it('should set correct headers to object', function () {
expect(set({}, 'set-cookies', 'value')).toEqual({ 'Set-Cookies': 'value' });
});
it('should set value on empty object if setIFExists is enabled', function () {
expect(set({}, 'name', 'value', true)).toEqual({ Name: 'value' });
});
it('should overwrite value if setIFExists is enabled', function () {
var h = {
name: 'test',
};
expect(set(h, 'name', 'value', true)).toEqual({ Name: 'value' });
});
it('should not overwrite value if setIFExists is disabled', function () {
var h = {
name: 'test',
};
expect(set(h, 'name', 'value', false)).toEqual({ name: 'test' });
});
it('should allow to add header to not empty object', function () {
var data = { 'www-authenticate': '' };
expect(set(data, 'name', 'value')).toEqual({ Name: 'value', 'www-authenticate': '' });
});
});
describe('normalize name', function () {
it('should return string to equal WWW-Authenticate', function () {
expect(normalizeName('www-authenticate')).toEqual('WWW-Authenticate');
});
it('should return Content-Type', function () {
expect(normalizeName('content-type')).toBe('Content-Type');
});
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC9oZWxwZXJzL2hlYWRlcnMuc3BlYy5icm93c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4RSxRQUFRLENBQUMseUJBQXlCLEVBQUU7SUFFbEMsUUFBUSxDQUFDLGVBQWUsRUFBRTtRQUN4QixFQUFFLENBQUMsNEJBQTRCLEVBQUU7WUFDL0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRTtZQUMvQyxJQUFNLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDcEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRTtZQUNqRCxJQUFNLE9BQU8sR0FBRyx3Q0FBd0MsQ0FBQztZQUN6RCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUU7WUFDcEMsSUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7WUFDbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzREFBc0Qs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QkFBZ0IsRUFBRTtRQUN6QixFQUFFLENBQUMsZ0RBQWdELEVBQUU7WUFDbkQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNEJBQTRCLEVBQUU7WUFDL0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoibGliL3JlcXVlc3QvaGVscGVycy9oZWFkZXJzLnNwZWMuYnJvd3Nlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTggYnkgRmlsZXN0YWNrXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgcGFyc2UsIG5vcm1hbGl6ZUhlYWRlcnMsIHNldCwgbm9ybWFsaXplTmFtZSB9IGZyb20gJy4vaGVhZGVycyc7XG5cbmRlc2NyaWJlKCdSZXF1ZXN0L0hlbHBlcnMvSGVhZGVycycsICgpID0+IHtcblxuICBkZXNjcmliZSgncGFyc2UgaGVhZGVycycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBleHBlY3QocGFyc2UobnVsbCkpLnRvRXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hlYWRlcnMgd2l0aCA6IHNob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0ICcsICgpID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSAnOic7XG4gICAgICBleHBlY3QocGFyc2UoaGVhZGVycykpLnRvRXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gb2JqZWN0IHdpdGggZnJvbSBmaWxlc3RhY2suY29tJywgKCkgPT4ge1xuICAgICAgY29uc3QgaGVhZGVycyA9ICdmcm9tOmZpbGVzdGFjay5jb21cXG5mcm9tOmZpbGVzdGFjay5jb20nO1xuICAgICAgZXhwZWN0KHBhcnNlKGhlYWRlcnMpKS50b0VxdWFsKHsgZnJvbTogJ2ZpbGVzdGFjay5jb20nIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gc2V0LWNvb2tpZXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCBoZWFkZXJzID0gJ3NldC1jb29raWU6ZmFsc2UnO1xuICAgICAgZXhwZWN0KHBhcnNlKGhlYWRlcnMpKS50b0VxdWFsKHsgJ3NldC1jb29raWUnOiBbJ2ZhbHNlJ10gfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbmNhdCBtdWx0aXBsZSBzZXQtY29va2llIGhlYWRlcnMgaW50byBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSAnc2V0LWNvb2tpZTp0ZXN0MVxcbnNldC1jb29raWU6dGVzdDJcXG5zZXQtY29va2llOnRlc3QzJztcbiAgICAgIGV4cGVjdChwYXJzZShoZWFkZXJzKSkudG9FcXVhbCh7ICdzZXQtY29va2llJzogWyd0ZXN0MScsICd0ZXN0MicsICd0ZXN0MyddIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb25jYXQgbXVsdGlwbGUgbm90IGlnbm9yZWQgaGVhZGVycyBpbnRvIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSAndGVzdGhlYWRlcjp0ZXN0MVxcbnRlc3RoZWFkZXI6dGVzdDJcXG50ZXN0aGVhZGVyOnRlc3QzJztcbiAgICAgIGV4cGVjdChwYXJzZShoZWFkZXJzKSkudG9FcXVhbCh7ICd0ZXN0aGVhZGVyJzogJ3Rlc3QxLCB0ZXN0MiwgdGVzdDMnIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbm9ybWFsaXplIGhlYWRlcnMnLCAoKSA9PiB7XG4gICAgaXQoJ25vcm1hbGl6ZSBoZWFkZXJzIHNob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZXhwZWN0KG5vcm1hbGl6ZUhlYWRlcnMoKSkudG9FcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICBpdCgnbm9ybWFsaXplIGhlYWRlcnMgd2l0aCBzZXQtY29va2llcyBmYWxzZSwgc2hvdWxkIHJldHVybiBmYWxzZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7IFsnc2V0LWNvb2tpZXMnXTogJ2ZhbHNlJyB9O1xuICAgICAgZXhwZWN0KG5vcm1hbGl6ZUhlYWRlcnMoZGF0YSkpLnRvRXF1YWwoeyAnU2V0LUNvb2tpZXMnOiAnZmFsc2UnIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2V0IGhlYWRlcnMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgY29ycmVjdCBoZWFkZXJzIHRvIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChzZXQoe30sICdzZXQtY29va2llcycsICd2YWx1ZScpKS50b0VxdWFsKHsgJ1NldC1Db29raWVzJzogJ3ZhbHVlJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2V0IHZhbHVlIG9uIGVtcHR5IG9iamVjdCBpZiBzZXRJRkV4aXN0cyBpcyBlbmFibGVkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHNldCh7fSwgJ25hbWUnLCAndmFsdWUnLCB0cnVlKSkudG9FcXVhbCh7IE5hbWU6ICd2YWx1ZScgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG92ZXJ3cml0ZSB2YWx1ZSBpZiBzZXRJRkV4aXN0cyBpcyBlbmFibGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgaCA9IHtcbiAgICAgICAgbmFtZTogJ3Rlc3QnLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KHNldChoLCAnbmFtZScsICd2YWx1ZScsIHRydWUpKS50b0VxdWFsKHsgTmFtZTogJ3ZhbHVlJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IG92ZXJ3cml0ZSB2YWx1ZSBpZiBzZXRJRkV4aXN0cyBpcyBkaXNhYmxlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGggPSB7XG4gICAgICAgIG5hbWU6ICd0ZXN0JyxcbiAgICAgIH07XG5cbiAgICAgIGV4cGVjdChzZXQoaCwgJ25hbWUnLCAndmFsdWUnLCBmYWxzZSkpLnRvRXF1YWwoeyBuYW1lOiAndGVzdCcgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IHRvIGFkZCBoZWFkZXIgdG8gbm90IGVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7ICd3d3ctYXV0aGVudGljYXRlJzogJycgfTtcblxuICAgICAgZXhwZWN0KHNldChkYXRhLCAnbmFtZScsICd2YWx1ZScpKS50b0VxdWFsKHsgTmFtZTogJ3ZhbHVlJywgJ3d3dy1hdXRoZW50aWNhdGUnOiAnJyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ25vcm1hbGl6ZSBuYW1lJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHN0cmluZyB0byBlcXVhbCBXV1ctQXV0aGVudGljYXRlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KG5vcm1hbGl6ZU5hbWUoJ3d3dy1hdXRoZW50aWNhdGUnKSkudG9FcXVhbCgnV1dXLUF1dGhlbnRpY2F0ZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gQ29udGVudC1UeXBlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KG5vcm1hbGl6ZU5hbWUoJ2NvbnRlbnQtdHlwZScpKS50b0JlKCdDb250ZW50LVR5cGUnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==