69e4072f89
* master: (389 commits)
Document "No gems fetched from git repositories" policy [ci skip]
Typos
Small gramatical tweaks
Typos
Added PHP & NPM doc
Use `:empty_project` where possible in request specs
Add caching of droplab ajax requests
Use `:empty_project` where possible in model specs
Revert 3f17f29a
Remove unused js response from refs controller
Add MR id to changelog entry
fixed small mini pipeline graph line glitch
Prevent form to be submitted twice
Fix Error 500 when repositories contain annotated tags pointing to blobs
Fix /explore sorting (trending)
Simplify wording in "adding an image" docs
Remove "official merge window" from CONTRIBUTING.md [ci skip]
Update repository check documentation
Fixed flexbox and wrap issues
Update two_factor_authentication.md
...
77 lines
2.8 KiB
JavaScript
77 lines
2.8 KiB
JavaScript
require('~/lib/utils/common_utils');
|
|
|
|
(() => {
|
|
describe('common_utils', () => {
|
|
describe('gl.utils.parseUrl', () => {
|
|
it('returns an anchor tag with url', () => {
|
|
expect(gl.utils.parseUrl('/some/absolute/url').pathname).toContain('some/absolute/url');
|
|
});
|
|
it('url is escaped', () => {
|
|
// IE11 will return a relative pathname while other browsers will return a full pathname.
|
|
// parseUrl uses an anchor element for parsing an url. With relative urls, the anchor
|
|
// element will create an absolute url relative to the current execution context.
|
|
// The JavaScript test suite is executed at '/' which will lead to an absolute url
|
|
// starting with '/'.
|
|
expect(gl.utils.parseUrl('" test="asf"').pathname).toContain('/%22%20test=%22asf%22');
|
|
});
|
|
});
|
|
|
|
describe('gl.utils.parseUrlPathname', () => {
|
|
beforeEach(() => {
|
|
spyOn(gl.utils, 'parseUrl').and.callFake(url => ({
|
|
pathname: url,
|
|
}));
|
|
});
|
|
it('returns an absolute url when given an absolute url', () => {
|
|
expect(gl.utils.parseUrlPathname('/some/absolute/url')).toEqual('/some/absolute/url');
|
|
});
|
|
it('returns an absolute url when given a relative url', () => {
|
|
expect(gl.utils.parseUrlPathname('some/relative/url')).toEqual('/some/relative/url');
|
|
});
|
|
});
|
|
|
|
describe('gl.utils.getUrlParamsArray', () => {
|
|
it('should return params array', () => {
|
|
expect(gl.utils.getUrlParamsArray() instanceof Array).toBe(true);
|
|
});
|
|
|
|
it('should remove the question mark from the search params', () => {
|
|
const paramsArray = gl.utils.getUrlParamsArray();
|
|
expect(paramsArray[0][0] !== '?').toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('gl.utils.getParameterByName', () => {
|
|
beforeEach(() => {
|
|
window.history.pushState({}, null, '?scope=all&p=2');
|
|
});
|
|
|
|
it('should return valid parameter', () => {
|
|
const value = gl.utils.getParameterByName('scope');
|
|
expect(value).toBe('all');
|
|
});
|
|
|
|
it('should return invalid parameter', () => {
|
|
const value = gl.utils.getParameterByName('fakeParameter');
|
|
expect(value).toBe(null);
|
|
});
|
|
});
|
|
|
|
describe('gl.utils.normalizedHeaders', () => {
|
|
it('should upperCase all the header keys to keep them consistent', () => {
|
|
const apiHeaders = {
|
|
'X-Something-Workhorse': { workhorse: 'ok' },
|
|
'x-something-nginx': { nginx: 'ok' },
|
|
};
|
|
|
|
const normalized = gl.utils.normalizeHeaders(apiHeaders);
|
|
|
|
const WORKHORSE = 'X-SOMETHING-WORKHORSE';
|
|
const NGINX = 'X-SOMETHING-NGINX';
|
|
|
|
expect(normalized[WORKHORSE].workhorse).toBe('ok');
|
|
expect(normalized[NGINX].nginx).toBe('ok');
|
|
});
|
|
});
|
|
});
|
|
})();
|