2021-06-03 18:58:57 +02:00
|
|
|
import { Utils } from 'jslib-common/misc/utils';
|
2018-04-23 19:03:47 +02:00
|
|
|
|
|
|
|
describe('Utils Service', () => {
|
2018-10-14 04:21:54 +02:00
|
|
|
describe('getDomain', () => {
|
|
|
|
it('should fail for invalid urls', () => {
|
|
|
|
expect(Utils.getDomain(null)).toBeNull();
|
|
|
|
expect(Utils.getDomain(undefined)).toBeNull();
|
|
|
|
expect(Utils.getDomain(' ')).toBeNull();
|
|
|
|
expect(Utils.getDomain('https://bit!:"_&ward.com')).toBeNull();
|
|
|
|
expect(Utils.getDomain('bitwarden')).toBeNull();
|
|
|
|
});
|
|
|
|
|
2020-01-25 13:52:51 +01:00
|
|
|
it('should fail for data urls', () => {
|
|
|
|
expect(Utils.getDomain('data:image/jpeg;base64,AAA')).toBeNull();
|
|
|
|
});
|
|
|
|
|
2018-10-14 04:21:54 +02:00
|
|
|
it('should handle urls without protocol', () => {
|
|
|
|
expect(Utils.getDomain('bitwarden.com')).toBe('bitwarden.com');
|
|
|
|
expect(Utils.getDomain('wrong://bitwarden.com')).toBe('bitwarden.com');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should handle valid urls', () => {
|
|
|
|
expect(Utils.getDomain('https://bitwarden')).toBe('bitwarden');
|
|
|
|
expect(Utils.getDomain('https://bitwarden.com')).toBe('bitwarden.com');
|
|
|
|
expect(Utils.getDomain('http://bitwarden.com')).toBe('bitwarden.com');
|
|
|
|
expect(Utils.getDomain('http://vault.bitwarden.com')).toBe('bitwarden.com');
|
2019-03-27 19:46:34 +01:00
|
|
|
expect(Utils.getDomain('https://user:password@bitwarden.com:8080/password/sites?and&query#hash'))
|
|
|
|
.toBe('bitwarden.com');
|
2018-10-14 04:21:54 +02:00
|
|
|
expect(Utils.getDomain('https://bitwarden.unknown')).toBe('bitwarden.unknown');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should support localhost and IP', () => {
|
|
|
|
expect(Utils.getDomain('https://localhost')).toBe('localhost');
|
|
|
|
expect(Utils.getDomain('https://192.168.1.1')).toBe('192.168.1.1');
|
|
|
|
});
|
2021-06-22 22:00:14 +02:00
|
|
|
|
|
|
|
it('should reject invalid hostnames', () => {
|
|
|
|
expect(Utils.getDomain('https://mywebsite.com$.mywebsite.com')).toBeNull();
|
|
|
|
expect(Utils.getDomain('https://mywebsite.com!.mywebsite.com')).toBeNull();
|
|
|
|
});
|
2018-10-14 04:21:54 +02:00
|
|
|
});
|
|
|
|
|
2018-04-23 19:03:47 +02:00
|
|
|
describe('getHostname', () => {
|
|
|
|
it('should fail for invalid urls', () => {
|
|
|
|
expect(Utils.getHostname(null)).toBeNull();
|
|
|
|
expect(Utils.getHostname(undefined)).toBeNull();
|
|
|
|
expect(Utils.getHostname(' ')).toBeNull();
|
|
|
|
expect(Utils.getHostname('https://bit!:"_&ward.com')).toBeNull();
|
|
|
|
expect(Utils.getHostname('bitwarden')).toBeNull();
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should handle valid urls', () => {
|
|
|
|
expect(Utils.getHostname('bitwarden.com')).toBe('bitwarden.com');
|
|
|
|
expect(Utils.getHostname('https://bitwarden.com')).toBe('bitwarden.com');
|
|
|
|
expect(Utils.getHostname('http://bitwarden.com')).toBe('bitwarden.com');
|
|
|
|
expect(Utils.getHostname('http://vault.bitwarden.com')).toBe('vault.bitwarden.com');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should support localhost and IP', () => {
|
|
|
|
expect(Utils.getHostname('https://localhost')).toBe('localhost');
|
|
|
|
expect(Utils.getHostname('https://192.168.1.1')).toBe('192.168.1.1');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('newGuid', () => {
|
|
|
|
it('should create a valid guid', () => {
|
|
|
|
const validGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
|
|
expect(Utils.newGuid()).toMatch(validGuid);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|