mirror of
https://github.com/Kong/insomnia
synced 2024-11-08 14:49:53 +00:00
113 lines
4.0 KiB
JavaScript
113 lines
4.0 KiB
JavaScript
|
import certificateUrlParse from '../certificate-url-parse';
|
||
|
import {parse as urlParse} from 'url';
|
||
|
|
||
|
describe('certificateUrlParse', () => {
|
||
|
it('should return the result of url.parse if no wildcard paths are supplied', () => {
|
||
|
const url = 'https://www.example.org:80/some/resources?query=1&other=2#myfragment';
|
||
|
const expected = urlParse(url);
|
||
|
expect(certificateUrlParse(url)).toEqual(expected);
|
||
|
});
|
||
|
|
||
|
it('should return the correct hostname if a single wildcard is present', () => {
|
||
|
const protocol = 'https';
|
||
|
const host = 'www.exam*ple.org';
|
||
|
const port = '123';
|
||
|
const path = '/some/resources';
|
||
|
const query = 'query=1&other=2';
|
||
|
const fragment = 'myfragment';
|
||
|
|
||
|
const url = `${protocol}://${host}:${port}${path}?${query}#${fragment}`;
|
||
|
expect(certificateUrlParse(url).hostname).toEqual(host);
|
||
|
});
|
||
|
|
||
|
it('should return the correct hostname if multiple wildcards are present', () => {
|
||
|
const protocol = 'https';
|
||
|
const host = 'www.e*xamp*le.or*g';
|
||
|
const port = '123';
|
||
|
const path = '/some/resources';
|
||
|
const query = 'query=1&other=2';
|
||
|
const fragment = 'myfragment';
|
||
|
|
||
|
const url = `${protocol}://${host}:${port}${path}?${query}#${fragment}`;
|
||
|
expect(certificateUrlParse(url).hostname).toEqual(host);
|
||
|
});
|
||
|
|
||
|
it('should return the correct hostname if a wildcard prefix is present', () => {
|
||
|
const protocol = 'https';
|
||
|
const host = '*.example.org';
|
||
|
const port = '123';
|
||
|
const path = '/some/resources';
|
||
|
const query = 'query=1&other=2';
|
||
|
const fragment = 'myfragment';
|
||
|
|
||
|
const url = `${protocol}://${host}:${port}${path}?${query}#${fragment}`;
|
||
|
expect(certificateUrlParse(url).hostname).toEqual(host);
|
||
|
});
|
||
|
|
||
|
it('should return the correct hostname if a wildcard suffix is present', () => {
|
||
|
const protocol = 'https';
|
||
|
const host = 'www.example.*';
|
||
|
const port = '123';
|
||
|
const path = '/some/resources';
|
||
|
const query = 'query=1&other=2';
|
||
|
const fragment = 'myfragment';
|
||
|
|
||
|
const url = `${protocol}://${host}:${port}${path}?${query}#${fragment}`;
|
||
|
expect(certificateUrlParse(url).hostname).toEqual(host);
|
||
|
});
|
||
|
|
||
|
it('should return a host of null if no protocol is provided for a wildcard hostname', () => {
|
||
|
const host = 'www.example.*';
|
||
|
const path = '/some/resources';
|
||
|
const query = 'query=1&other=2';
|
||
|
const fragment = 'myfragment';
|
||
|
|
||
|
const url = `${host}${path}?${query}#${fragment}`;
|
||
|
expect(certificateUrlParse(url).hostname).toEqual(null);
|
||
|
});
|
||
|
|
||
|
it('should return the correct host if basic auth is included', () => {
|
||
|
const protocol = 'https';
|
||
|
const user = 'myuser';
|
||
|
const password = 'mypass';
|
||
|
const host = 'www.example.*';
|
||
|
const path = '/some/resources';
|
||
|
const query = 'query=1&other=2';
|
||
|
const fragment = 'myfragment';
|
||
|
|
||
|
const url = `${protocol}://${user}:${password}@${host}${path}?${query}#${fragment}`;
|
||
|
expect(certificateUrlParse(url).hostname).toEqual(host);
|
||
|
});
|
||
|
|
||
|
it('should return the correct host if the path contains an @ symbol', () => {
|
||
|
const protocol = 'https';
|
||
|
const host = 'www.example.*';
|
||
|
const path = '/@some/resources';
|
||
|
const query = 'query=1&other=2';
|
||
|
const fragment = 'myfragment';
|
||
|
|
||
|
const url = `${protocol}://${host}${path}?${query}#${fragment}`;
|
||
|
expect(certificateUrlParse(url).hostname).toEqual(host);
|
||
|
});
|
||
|
|
||
|
it('should return the correct non-hostname properties for wildcard paths', () => {
|
||
|
const protocol = 'https';
|
||
|
const user = 'myuser';
|
||
|
const password = 'mypass';
|
||
|
const nonWildcardHost = 'www.example.';
|
||
|
const host = 'www.example.*';
|
||
|
const port = '123';
|
||
|
const path = '/some/resources';
|
||
|
const query = 'query=1&other=2';
|
||
|
const fragment = 'myfragment';
|
||
|
|
||
|
const url = `${protocol}://${user}:${password}@${host}:${port}${path}?${query}#${fragment}`;
|
||
|
const nonWildcardUrl = `${protocol}://${user}:${password}@${nonWildcardHost}:${port}${path}?${query}#${fragment}`;
|
||
|
const expected = urlParse(nonWildcardUrl);
|
||
|
expected.hostname = host;
|
||
|
expected.href = url;
|
||
|
expected.host = `${host}:${port}`;
|
||
|
expect(certificateUrlParse(url)).toEqual(expected);
|
||
|
});
|
||
|
});
|