From b86b4680b6c2a3f0cceefaaf7c2e35417ec555df Mon Sep 17 00:00:00 2001 From: Shin'ya UEOKA Date: Sat, 5 Oct 2019 06:39:20 +0000 Subject: Make Blacklist class --- test/shared/SettingData.test.ts | 11 ++--- test/shared/Settings.test.ts | 30 +------------ test/shared/blacklists.test.ts | 49 ---------------------- test/shared/settings/Blacklist.test.ts | 77 ++++++++++++++++++++++++++++++++++ test/shared/utils/re.test.ts | 19 --------- 5 files changed, 85 insertions(+), 101 deletions(-) delete mode 100644 test/shared/blacklists.test.ts create mode 100644 test/shared/settings/Blacklist.test.ts delete mode 100644 test/shared/utils/re.test.ts (limited to 'test/shared') diff --git a/test/shared/SettingData.test.ts b/test/shared/SettingData.test.ts index b5bf70e..4391e73 100644 --- a/test/shared/SettingData.test.ts +++ b/test/shared/SettingData.test.ts @@ -6,6 +6,7 @@ import { expect } from 'chai'; import Keymaps from '../../src/shared/settings/Keymaps'; import Search from '../../src/shared/settings/Search'; import Properties from '../../src/shared/settings/Properties'; +import Blacklist from '../../src/shared/settings/Blacklist' describe('shared/SettingData', () => { describe('FormKeymaps', () => { @@ -64,7 +65,7 @@ describe('shared/SettingData', () => { keymaps: settings.keymaps.toJSON(), search: settings.search.toJSON(), properties: settings.properties.toJSON(), - blacklist: settings.blacklist, + blacklist: settings.blacklist.toJSON(), }).to.deep.equal(JSON.parse(o)); }); }); @@ -84,7 +85,7 @@ describe('shared/SettingData', () => { smoothscroll: false, complete: "sbh" }), - blacklist: [], + blacklist: Blacklist.fromJSON([]), }; let json = JSONTextSettings.fromSettings(o).toJSONText(); @@ -92,7 +93,7 @@ describe('shared/SettingData', () => { keymaps: o.keymaps.toJSON(), search: o.search.toJSON(), properties: o.properties.toJSON(), - blacklist: o.blacklist, + blacklist: o.blacklist.toJSON(), }); }); }); @@ -125,7 +126,7 @@ describe('shared/SettingData', () => { keymaps: settings.keymaps.toJSON(), search: settings.search.toJSON(), properties: settings.properties.toJSON(), - blacklist: settings.blacklist, + blacklist: settings.blacklist.toJSON(), }).to.deep.equal({ keymaps: { 'j': { type: 'scroll.vertically', count: 1 }, @@ -165,7 +166,7 @@ describe('shared/SettingData', () => { smoothscroll: false, complete: "sbh" }), - blacklist: [] + blacklist: Blacklist.fromJSON([]), }; let json = FormSettings.fromSettings(data).toJSON(); diff --git a/test/shared/Settings.test.ts b/test/shared/Settings.test.ts index 6360bab..9688798 100644 --- a/test/shared/Settings.test.ts +++ b/test/shared/Settings.test.ts @@ -2,32 +2,6 @@ import * as settings from '../../src/shared/Settings'; import {expect} from 'chai'; describe('Settings', () => { - - describe('#blacklistValueOf', () => { - it('returns empty array by empty settings', () => { - let blacklist = settings.blacklistValueOf([]); - expect(blacklist).to.be.empty; - }); - - it('returns blacklist by valid settings', () => { - let blacklist = settings.blacklistValueOf([ - "github.com", - "circleci.com", - ]); - - expect(blacklist).to.deep.equal([ - "github.com", - "circleci.com", - ]); - }); - - it('throws a TypeError by invalid settings', () => { - expect(() => settings.blacklistValueOf(null)).to.throw(TypeError); - expect(() => settings.blacklistValueOf({})).to.throw(TypeError); - expect(() => settings.blacklistValueOf([1,2,3])).to.throw(TypeError); - }); - }); - describe('#valueOf', () => { it('returns settings by valid settings', () => { let x = settings.valueOf({ @@ -46,7 +20,7 @@ describe('Settings', () => { keymaps: x.keymaps.toJSON(), search: x.search.toJSON(), properties: x.properties.toJSON(), - blacklist: x.blacklist, + blacklist: x.blacklist.toJSON(), }).to.deep.equal({ keymaps: {}, search: { @@ -70,7 +44,7 @@ describe('Settings', () => { expect(value.properties.toJSON()).to.not.be.empty; expect(value.search.defaultEngine).to.be.a('string'); expect(value.search.engines).to.be.an('object'); - expect(value.blacklist).to.be.empty; + expect(value.blacklist.toJSON()).to.be.empty; }); it('throws a TypeError with an unknown field', () => { diff --git a/test/shared/blacklists.test.ts b/test/shared/blacklists.test.ts deleted file mode 100644 index 289ea0f..0000000 --- a/test/shared/blacklists.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { includes } from 'shared/blacklists'; - -describe("shared/blacklist", () => { - it('matches by *', () => { - let blacklist = ['*']; - - expect(includes(blacklist, 'https://github.com/abc')).to.be.true; - }) - - it('matches by hostname', () => { - let blacklist = ['github.com']; - - expect(includes(blacklist, 'https://github.com')).to.be.true; - expect(includes(blacklist, 'https://gist.github.com')).to.be.false; - expect(includes(blacklist, 'https://github.com/ueokande')).to.be.true; - expect(includes(blacklist, 'https://github.org')).to.be.false; - expect(includes(blacklist, 'https://google.com/search?q=github.org')).to.be.false; - }) - - it('matches by hostname with wildcard', () => { - let blacklist = ['*.github.com']; - - expect(includes(blacklist, 'https://github.com')).to.be.false; - expect(includes(blacklist, 'https://gist.github.com')).to.be.true; - }) - - it('matches by path', () => { - let blacklist = ['github.com/abc']; - - expect(includes(blacklist, 'https://github.com/abc')).to.be.true; - expect(includes(blacklist, 'https://github.com/abcdef')).to.be.false; - expect(includes(blacklist, 'https://gist.github.com/abc')).to.be.false; - }) - - it('matches by path with wildcard', () => { - let blacklist = ['github.com/abc*']; - - expect(includes(blacklist, 'https://github.com/abc')).to.be.true; - expect(includes(blacklist, 'https://github.com/abcdef')).to.be.true; - expect(includes(blacklist, 'https://gist.github.com/abc')).to.be.false; - }) - - it('matches address and port', () => { - let blacklist = ['127.0.0.1:8888']; - - expect(includes(blacklist, 'http://127.0.0.1:8888/')).to.be.true; - expect(includes(blacklist, 'http://127.0.0.1:8888/hello')).to.be.true; - }) -}); diff --git a/test/shared/settings/Blacklist.test.ts b/test/shared/settings/Blacklist.test.ts new file mode 100644 index 0000000..fbacf5d --- /dev/null +++ b/test/shared/settings/Blacklist.test.ts @@ -0,0 +1,77 @@ +import Blacklist from '../../../src/shared/settings/Blacklist'; +import { expect } from 'chai'; + +describe('Blacklist', () => { + describe('fromJSON', () => { + it('returns empty array by empty settings', () => { + let blacklist = Blacklist.fromJSON([]); + expect(blacklist.toJSON()).to.be.empty; + }); + + it('returns blacklist by valid settings', () => { + let blacklist = Blacklist.fromJSON([ + 'github.com', + 'circleci.com', + ]); + + expect(blacklist.toJSON()).to.deep.equal([ + 'github.com', + 'circleci.com', + ]); + }); + + it('throws a TypeError by invalid settings', () => { + expect(() => Blacklist.fromJSON(null)).to.throw(TypeError); + expect(() => Blacklist.fromJSON({})).to.throw(TypeError); + expect(() => Blacklist.fromJSON([1,2,3])).to.throw(TypeError); + }); + }); + + describe('#includes', () => { + it('matches by *', () => { + let blacklist = new Blacklist(['*']); + + expect(blacklist.includes('https://github.com/abc')).to.be.true; + }); + + it('matches by hostname', () => { + let blacklist = new Blacklist(['github.com']); + + expect(blacklist.includes('https://github.com')).to.be.true; + expect(blacklist.includes('https://gist.github.com')).to.be.false; + expect(blacklist.includes('https://github.com/ueokande')).to.be.true; + expect(blacklist.includes('https://github.org')).to.be.false; + expect(blacklist.includes('https://google.com/search?q=github.org')).to.be.false; + }); + + it('matches by hostname with wildcard', () => { + let blacklist = new Blacklist(['*.github.com']); + + expect(blacklist.includes('https://github.com')).to.be.false; + expect(blacklist.includes('https://gist.github.com')).to.be.true; + }) + + it('matches by path', () => { + let blacklist = new Blacklist(['github.com/abc']); + + expect(blacklist.includes('https://github.com/abc')).to.be.true; + expect(blacklist.includes('https://github.com/abcdef')).to.be.false; + expect(blacklist.includes('https://gist.github.com/abc')).to.be.false; + }) + + it('matches by path with wildcard', () => { + let blacklist = new Blacklist(['github.com/abc*']); + + expect(blacklist.includes('https://github.com/abc')).to.be.true; + expect(blacklist.includes('https://github.com/abcdef')).to.be.true; + expect(blacklist.includes('https://gist.github.com/abc')).to.be.false; + }) + + it('matches address and port', () => { + let blacklist = new Blacklist(['127.0.0.1:8888']); + + expect(blacklist.includes('http://127.0.0.1:8888/')).to.be.true; + expect(blacklist.includes('http://127.0.0.1:8888/hello')).to.be.true; + }) + }) +}); diff --git a/test/shared/utils/re.test.ts b/test/shared/utils/re.test.ts deleted file mode 100644 index d12ceb7..0000000 --- a/test/shared/utils/re.test.ts +++ /dev/null @@ -1,19 +0,0 @@ -import * as re from 'shared/utils/re'; - -describe("re util", () => { - it('matches by pattern', () => { - let regex = re.fromWildcard('*.example.com/*'); - expect('foo.example.com/bar').to.match(regex); - expect('foo.example.com').not.to.match(regex); - expect('example.com/bar').not.to.match(regex); - - regex = re.fromWildcard('example.com/*') - expect('example.com/foo').to.match(regex); - expect('example.com/').to.match(regex); - - regex = re.fromWildcard('example.com/*bar') - expect('example.com/foobar').to.match(regex); - expect('example.com/bar').to.match(regex); - expect('example.com/foobarfoo').not.to.match(regex); - }) -}); -- cgit v1.2.3