mirror of
https://github.com/wassname/talk.git
synced 2026-06-30 06:14:52 +08:00
117 lines
4.1 KiB
JavaScript
117 lines
4.1 KiB
JavaScript
const expect = require('chai').expect;
|
|
const DomainList = require('../../../services/domain_list');
|
|
const SettingsService = require('../../../services/settings');
|
|
|
|
describe('services.DomainList', () => {
|
|
const domainLists = {
|
|
whitelist: ['nytimes.com', 'wapo.com'],
|
|
};
|
|
|
|
let domainList = new DomainList();
|
|
const settings = {
|
|
id: '1',
|
|
moderation: 'PRE',
|
|
domainlist: { whitelist: ['nytimes.com', 'wapo.com'] },
|
|
};
|
|
|
|
beforeEach(() => SettingsService.init(settings));
|
|
|
|
describe('#init', () => {
|
|
before(() => domainList.upsert(domainLists));
|
|
|
|
it('has entries', () => {
|
|
expect(domainList.lists.whitelist).to.not.be.empty;
|
|
});
|
|
});
|
|
|
|
describe('#parseURL', () => {
|
|
it('parses the domain correctly', () => {
|
|
[
|
|
['http://google.ca/test', 'google.ca'],
|
|
['http://google.ca:80/test', 'google.ca'],
|
|
['https://google.ca/test', 'google.ca'],
|
|
['https://google.ca:443/test', 'google.ca'],
|
|
['//google.ca/test', 'google.ca'],
|
|
['//google.ca:80/test', 'google.ca'],
|
|
['//google.ca:443/test', 'google.ca'],
|
|
['google.ca/test', 'google.ca'],
|
|
['google.ca:80/test', 'google.ca'],
|
|
['google.ca:443/test', 'google.ca'],
|
|
['http://google.ca/', 'google.ca'],
|
|
['http://google.ca:80/', 'google.ca'],
|
|
['https://google.ca/', 'google.ca'],
|
|
['https://google.ca:443/', 'google.ca'],
|
|
['//google.ca/', 'google.ca'],
|
|
['//google.ca:80/', 'google.ca'],
|
|
['//google.ca:443/', 'google.ca'],
|
|
['google.ca/', 'google.ca'],
|
|
['google.ca:80/', 'google.ca'],
|
|
['google.ca:443/', 'google.ca'],
|
|
['google.ca', 'google.ca'],
|
|
['http://google.ca', 'google.ca'],
|
|
['http://google.ca:80', 'google.ca'],
|
|
['https://google.ca', 'google.ca'],
|
|
['https://google.ca:443', 'google.ca'],
|
|
['//google.ca', 'google.ca'],
|
|
['//google.ca:80', 'google.ca'],
|
|
['//google.ca:443', 'google.ca'],
|
|
['google.ca', 'google.ca'],
|
|
['google.ca:80', 'google.ca'],
|
|
['google.ca:443', 'google.ca'],
|
|
['http://google.Ca/test', 'google.ca'],
|
|
['http://google.ca:80/test', 'google.ca'],
|
|
['https://google.Ca/test', 'google.ca'],
|
|
['https://google.ca:443/test', 'google.ca'],
|
|
['//google.Ca/test', 'google.ca'],
|
|
['//google.Ca:80/test', 'google.ca'],
|
|
['//google.Ca:443/test', 'google.ca'],
|
|
['google.Ca/test', 'google.ca'],
|
|
['google.ca:80/test', 'google.ca'],
|
|
['google.ca:443/test', 'google.ca'],
|
|
['http://Google.ca/', 'google.ca'],
|
|
['http://google.Ca:80/', 'google.ca'],
|
|
['https://Google.ca/', 'google.ca'],
|
|
['https://google.Ca:443/', 'google.ca'],
|
|
['//Google.ca/', 'google.ca'],
|
|
['//google.Ca:80/', 'google.ca'],
|
|
['//google.Ca:443/', 'google.ca'],
|
|
['Google.ca/', 'google.ca'],
|
|
['google.Ca:80/', 'google.ca'],
|
|
['google.Ca:443/', 'google.ca'],
|
|
['Google.ca', 'google.ca'],
|
|
['http://Google.ca', 'google.ca'],
|
|
['http://google.Ca:80', 'google.ca'],
|
|
['https://Google.ca', 'google.ca'],
|
|
['https://google.Ca:443', 'google.ca'],
|
|
['//Google.ca', 'google.ca'],
|
|
['//google.Ca:80', 'google.ca'],
|
|
['//google.Ca:443', 'google.ca'],
|
|
['Google.ca', 'google.ca'],
|
|
['google.Ca:80', 'google.ca'],
|
|
['google.Ca:443', 'google.ca'],
|
|
].forEach(([domain, hostname]) => {
|
|
expect(
|
|
DomainList.parseURL(domain),
|
|
`domain ${domain} should be parsed as ${hostname}`
|
|
).to.equal(hostname);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('#match', () => {
|
|
const whiteList = DomainList.parseList(domainLists['whitelist']);
|
|
|
|
it('does match on an included domain', () => {
|
|
['http://wapo.com', 'nytimes.com'].forEach(domain => {
|
|
expect(domainList.match(whiteList, domain)).to.be.true;
|
|
});
|
|
});
|
|
|
|
it('does not match on a not included domain', () => {
|
|
['badsite.com', 'www.badsite.com', 'otherexample.com'].forEach(domain => {
|
|
expect(domainList.match(whiteList, domain)).to.be.false;
|
|
});
|
|
});
|
|
});
|
|
});
|