147 lines
9.2 KiB
TypeScript
147 lines
9.2 KiB
TypeScript
import {indexURLTemplateList, isPDF, isURLInIndexedList, isURLMatched} from '../../../src/utils/url';
|
|
|
|
describe('Domain utilities', () => {
|
|
test('URL match', () => {
|
|
expect(isURLMatched('https://www.example.com/', '*')).toEqual(true);
|
|
expect(isURLMatched('https://www.example.com/', '*.*')).toEqual(true);
|
|
expect(isURLMatched('https://www.example.com/', '*.*.*')).toEqual(true);
|
|
expect(isURLMatched('https://www.example.com/', '*.*.*.*')).toEqual(false);
|
|
|
|
expect(isURLMatched('https://www.example.com/page/1', 'example.com')).toEqual(true);
|
|
expect(isURLMatched('https://www.failure.com/page/1', 'example.com')).toEqual(false);
|
|
expect(isURLMatched('https://xyz.example.com/page/1', 'example.com')).toEqual(false);
|
|
expect(isURLMatched('https://xyz.www.example.com/page/1', 'example.com')).toEqual(false);
|
|
|
|
expect(isURLMatched('https://xyz.example.com/page/1', '*.example.com')).toEqual(true);
|
|
expect(isURLMatched('https://abc.xyz.example.com/page/1', '*.example.com')).toEqual(true);
|
|
expect(isURLMatched('https://xyz.failure.com/page/1', '*.example.com')).toEqual(false);
|
|
|
|
expect(isURLMatched('https://www.example.com/page/1', 'example.com/page')).toEqual(true);
|
|
expect(isURLMatched('https://www.example.com/fail/1', 'example.com/page')).toEqual(false);
|
|
|
|
expect(isURLMatched('https://example.com/page/1', '^example.com')).toEqual(true);
|
|
expect(isURLMatched('https://www.example.com/page/1', '^example.com')).toEqual(false);
|
|
|
|
expect(isURLMatched('https://www.example.com/', 'example.com$')).toEqual(true);
|
|
expect(isURLMatched('https://www.example.com/page/1', 'example.com$')).toEqual(false);
|
|
|
|
expect(isURLMatched('https://www.example.de/', 'example.*')).toEqual(true);
|
|
expect(isURLMatched('https://www.failure.com/', 'example.*')).toEqual(false);
|
|
|
|
expect(isURLMatched('https://www.example.co.uk/', 'example.*.*')).toEqual(true);
|
|
expect(isURLMatched('https://www.example.com/', 'example.*.*')).toEqual(false);
|
|
|
|
expect(isURLMatched('https://www.example.com/path/long/enough', 'example.com/path/*')).toEqual(true);
|
|
expect(isURLMatched('https://www.failure.com/fail/long/enough', 'example.com/path/*')).toEqual(false);
|
|
|
|
expect(isURLMatched('http://localhost:8080/', 'localhost:8080')).toEqual(true);
|
|
expect(isURLMatched('http://localhost:1024/', 'localhost:8080')).toEqual(false);
|
|
|
|
expect(isURLMatched('http://localhost:8080/', 'localhost:*')).toEqual(true);
|
|
expect(isURLMatched('http://172.168.0.100:8080/', 'localhost:*')).toEqual(false);
|
|
|
|
expect(isURLMatched('http://www.example.com/page/1', 'http://*')).toEqual(true);
|
|
expect(isURLMatched('https://www.example.com/page/1', 'http://*')).toEqual(false);
|
|
|
|
expect(isURLMatched('file:///C:/My%20Documents/balance.xlsx', 'file:///C:')).toEqual(true);
|
|
expect(isURLMatched('file:///D:/Bin/cat.gif', 'file:///C:')).toEqual(false);
|
|
|
|
expect(isURLMatched('https://www.example.com/page/1', '/www\.ex.*\.com/')).toEqual(true);
|
|
expect(isURLMatched('https://www.failure.com/page/1', '/www\.ex.*\.com/')).toEqual(false);
|
|
|
|
expect(isURLMatched('https://[2001:0DB8:AC10:FE01::200E]/', '[2001:0DB8:AC10:FE01::200E]')).toEqual(true);
|
|
expect(isURLMatched('https://[2001:0DB8:AC10:FE02::200E]/', '[2001:0DB8:AC10:FE01::200E]')).toEqual(false);
|
|
expect(isURLMatched('https://[2001:0DB8:AC10:FE01::200E]:8080/', '[2001:0DB8:AC10:FE01::200E]:8080')).toEqual(true);
|
|
expect(isURLMatched('https://[2001:0DB8:AC10:FE02::200E]:1024/', '[2001:0DB8:AC10:FE01::200E]:8080')).toEqual(false);
|
|
});
|
|
|
|
test('URL is PDF', () => {
|
|
expect(isPDF('https://www.google.com/file.pdf')).toBe(true);
|
|
expect(isPDF('https://www.google.com/file.pdf?id=2')).toBe(true);
|
|
expect(isPDF('https://www.google.com/file.pdf/resource')).toBe(false);
|
|
expect(isPDF('https://www.google.com/resource?file=file.pdf')).toBe(false);
|
|
expect(isPDF('https://www.google.com/very/good/hidden/folder/pdf#file.pdf')).toBe(false);
|
|
expect(isPDF('https://fi.wikipedia.org/wiki/Tiedosto:ExtIPA_chart_(2015).pdf?uselang=en')).toBe(false);
|
|
expect(isPDF('https://commons.wikimedia.org/wiki/File:ExtIPA_chart_(2015).pdf')).toBe(false);
|
|
expect(isPDF('https://upload.wikimedia.org/wikipedia/commons/5/56/ExtIPA_chart_(2015).pdf')).toBe(true);
|
|
});
|
|
|
|
test('URL list index', () => {
|
|
const simplePatterns = [
|
|
'apple.com',
|
|
'google.com',
|
|
];
|
|
let indexed = indexURLTemplateList(simplePatterns);
|
|
expect(isURLInIndexedList('https://apple.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.apple.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://google.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.google.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.google.co.uk/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.google.com/maps', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://mail.google.com/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.example.com/', indexed)).toEqual(false);
|
|
|
|
const wildcardPatterns = [
|
|
'apple.com',
|
|
'google.*',
|
|
'*.example.com',
|
|
];
|
|
indexed = indexURLTemplateList(wildcardPatterns);
|
|
expect(isURLInIndexedList('https://apple.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.apple.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://google.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.google.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.google.co.uk/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.google.com/maps', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://mail.google.com/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://example.com/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.example.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://test.example.com/', indexed)).toEqual(true);
|
|
|
|
const pathPatterns = [
|
|
'apple.com',
|
|
'google.*/maps',
|
|
];
|
|
indexed = indexURLTemplateList(pathPatterns);
|
|
expect(isURLInIndexedList('https://apple.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.apple.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://google.com/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.google.com/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.google.co.uk/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.google.com/maps', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.google.com/maps/edit', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.google.co.uk/maps', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.google.com/mail', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://mail.google.com/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.example.com/', indexed)).toEqual(false);
|
|
|
|
const mixedPatterns = [
|
|
'apple.com',
|
|
'google.*/maps',
|
|
'google.*.*/maps',
|
|
'*.example.com',
|
|
'office.com/*/edit',
|
|
'mail.google.*/mail',
|
|
];
|
|
indexed = indexURLTemplateList(mixedPatterns);
|
|
expect(isURLInIndexedList('https://apple.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.apple.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://google.com/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.google.com/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.google.co.uk/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.google.com/maps', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.google.co.uk/maps', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.google.com/maps/edit', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.google.com/mail', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://mail.google.com/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://mail.google.com/mail/u/0/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://example.com/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.example.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://test.example.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://long.test.example.com/', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.office.com/excel/', indexed)).toEqual(false);
|
|
expect(isURLInIndexedList('https://www.office.com/excel/edit', indexed)).toEqual(true);
|
|
expect(isURLInIndexedList('https://www.office.com/excel/edit/2000', indexed)).toEqual(true);
|
|
});
|
|
});
|