diff options
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/test')
-rw-r--r-- | data/extensions/https-everywhere@eff.org/test/.eslintrc | 6 | ||||
-rw-r--r-- | data/extensions/https-everywhere@eff.org/test/example.rulesets.gz | bin | 131 -> 0 bytes | |||
-rw-r--r-- | data/extensions/https-everywhere@eff.org/test/incognito_test.js | 59 | ||||
-rw-r--r-- | data/extensions/https-everywhere@eff.org/test/rules_test.js | 219 | ||||
-rw-r--r-- | data/extensions/https-everywhere@eff.org/test/testing_utils.js | 29 | ||||
-rw-r--r-- | data/extensions/https-everywhere@eff.org/test/update_test.js | 69 |
6 files changed, 0 insertions, 382 deletions
diff --git a/data/extensions/https-everywhere@eff.org/test/.eslintrc b/data/extensions/https-everywhere@eff.org/test/.eslintrc deleted file mode 100644 index 8a30eba..0000000 --- a/data/extensions/https-everywhere@eff.org/test/.eslintrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "env": { - "node": true, - "mocha": true - } -} diff --git a/data/extensions/https-everywhere@eff.org/test/example.rulesets.gz b/data/extensions/https-everywhere@eff.org/test/example.rulesets.gz Binary files differdeleted file mode 100644 index 4018117..0000000 --- a/data/extensions/https-everywhere@eff.org/test/example.rulesets.gz +++ /dev/null diff --git a/data/extensions/https-everywhere@eff.org/test/incognito_test.js b/data/extensions/https-everywhere@eff.org/test/incognito_test.js deleted file mode 100644 index 75eede4..0000000 --- a/data/extensions/https-everywhere@eff.org/test/incognito_test.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict' - -const expect = require('chai').expect, - tu = require('./testing_utils'), - incognito = require('../background-scripts/incognito'); - -describe('incognito.js', function() { - beforeEach(function() { - tu.stubber([ - ['chrome.windows.onCreated.addListener', tu.Mock()], - ['chrome.windows.onRemoved.addListener', tu.Mock()], - ['chrome.windows.getAll', tu.Mock()], - ]); - }); - - describe('onIncognitoDestruction', function() { - beforeEach(function() { - incognito.state.incognito_session_exists = false; - this.callbackCalled = false; - this.callback = () => this.callbackCalled = true; - this.instance = incognito.onIncognitoDestruction(this.callback); - }) - - it('no incognito session by default', function() { - expect(incognito.state.incognito_session_exists).to.be.false; - }) - - it('with no incognito, callback not called', async function() { - incognito.state.incognito_session_exists = false; - - await this.instance.detect_incognito_destruction(); - - expect(this.callbackCalled).to.be.false; - }); - - it('with incognitos still open, callback not called', async function() { - incognito.state.incognito_session_exists = true; - chrome.windows.getAll = func => func([{incognito: true}]); - - await this.instance.detect_incognito_destruction(); - - expect(this.callbackCalled, 'not called').to.be.false; - }); - - it('callback called when last incognito closed', async function() { - incognito.state.incognito_session_exists = true; - chrome.windows.getAll = func => func([]); - - await this.instance.detect_incognito_destruction(); - expect(incognito.state.incognito_session_exists, 'constant changed').to.be.false; - expect(this.callbackCalled).to.be.true; - }); - - it('detects when an incognito window is created', function() { - this.instance.detect_incognito_creation({incognito: true}); - expect(incognito.state.incognito_session_exists, 'constant changed').to.be.true; - }) - }); -}); diff --git a/data/extensions/https-everywhere@eff.org/test/rules_test.js b/data/extensions/https-everywhere@eff.org/test/rules_test.js deleted file mode 100644 index b859e69..0000000 --- a/data/extensions/https-everywhere@eff.org/test/rules_test.js +++ /dev/null @@ -1,219 +0,0 @@ -'use strict' - -const assert = require('chai').assert, - rules = require('../background-scripts/rules'); - -const Rule = rules.Rule, - RuleSet = rules.RuleSet, - RuleSets = rules.RuleSets, - getRule = rules.getRule; - - -describe('rules.js', function() { - let test_str = 'test'; - - describe('nullIterable', function() { - it('is iterable zero times and is size 0', function() { - let count = 0; - for (let _ of rules.nullIterable) { // eslint-disable-line no-unused-vars - count += 1; - } - assert.strictEqual(count, 0); - assert.strictEqual(rules.nullIterable.size, 0); - assert.isEmpty(rules.nullIterable); - }); - }); - - describe('Rule', function() { - it('constructs trivial rule', function() { - let rule = new Rule('^http:', 'https:'); - assert.equal(rule.to, rules.trivial_rule.to); - assert.deepEqual(rule.from_c, rules.trivial_rule.from_c); - }); - }); - - describe('getRule', function() { - it('returns trivial rule object', function() { - let trivial = rules.trivial_rule; - let rule = getRule('^http:', 'https:'); - assert.equal(rule, trivial); - }); - }); - - describe('RuleSet', function() { - beforeEach(function() { - this.ruleset = new RuleSet('set_name', true, 'note'); - }); - - describe('#apply', function() { - it('excludes excluded uris', function() { - this.ruleset.exclusions = new RegExp(test_str); - assert.isNull(this.ruleset.apply(test_str)); - }); - - it('rewrites uris', function() { - let rule = new Rule('^http:', 'https:'); - this.ruleset.rules.push(rule); - assert.equal(this.ruleset.apply('http://example.com/'), 'https://example.com/'); - }); - - it('does nothing when empty', function() { - assert.isNull(this.ruleset.apply('http://example.com/')); - }); - }); - - describe('#isEquivalentTo', function() { - let inputs = ['a', 'b', 'c']; - - it('not equivalent with different input', function() { - let rs = new RuleSet(...inputs); - assert.isFalse( - rs.isEquivalentTo(new RuleSet('e', 'f', 'g')) - ); - }); - it('not equivalent with different exclusions', function() { - let rs_a = new RuleSet(...inputs), - rs_b = new RuleSet(...inputs); - rs_a.exclusions = new RegExp('foo'); - rs_b.exclusions = new RegExp('bar'); - - assert.isFalse(rs_a.isEquivalentTo(rs_b)); - }); - - it('not equivalent with different rules', function() { - let rs_a = new RuleSet(...inputs), - rs_b = new RuleSet(...inputs); - rs_a.rules.push(new Rule('a', 'a')); - rs_b.rules.push(new Rule('b', 'b')); - - assert.isFalse(rs_a.isEquivalentTo(rs_b)); - }); - - it('equivalent to self', function() { - let rs = new RuleSet(...inputs); - assert.isTrue(rs.isEquivalentTo(rs)); - }); - }); - }) - - describe('RuleSets', function() { - let rules_json = [{ - name: "Freerangekitten.com", - rule: [{ - to: "https:", - from: "^http:" - }], - target: ["freerangekitten.com", "www.freerangekitten.com"], - exclusion: ["foo", "bar"] - }]; - - beforeEach(function() { - this.rsets = new RuleSets(); - }); - - describe('#addFromJson', function() { - it('can add a rule', function() { - this.rsets.addFromJson(rules_json); - assert.isTrue(this.rsets.targets.has('freerangekitten.com')); - }); - - it('parses exclusions', function() { - this.rsets.addFromJson(rules_json); - let rs = [...this.rsets.targets.get('freerangekitten.com')][0]; - assert.strictEqual(rs.exclusions.source, "foo|bar"); - }); - }); - - describe('#rewriteURI', function() { - it('rewrites host added from json', function() { - let host = 'freerangekitten.com'; - this.rsets.addFromJson(rules_json); - - let newuri = this.rsets.rewriteURI('http://' + host + '/', host); - - assert.strictEqual(newuri, 'https://' + host + '/', 'protocol changed to https') - }); - - it('does not rewrite unknown hosts', function() { - assert.isNull(this.rsets.rewriteURI('http://unknown.com/', 'unknown.com')); - }); - - it('does not rewrite excluded URLs', function() { - this.rsets.addFromJson(rules_json); - assert.isNull(this.rsets.rewriteURI('http://freerangekitten.com/foo', 'freerangekitten.com')); - assert.isNull(this.rsets.rewriteURI('http://www.freerangekitten.com/bar', 'freerangekitten.com')); - - let newuri = this.rsets.rewriteURI('http://freerangekitten.com/baz', 'freerangekitten.com'); - assert.strictEqual(newuri, 'https://freerangekitten.com/baz', 'protocol changed to https'); - }); - }); - - describe('#potentiallyApplicableRulesets', function() { - let host = 'example.com', - value = [host]; - - it('returns nothing when empty', function() { - assert.isEmpty(this.rsets.potentiallyApplicableRulesets(host)); - }); - - it('returns nothing for malformed hosts', function() { - assert.isEmpty(this.rsets.potentiallyApplicableRulesets('....')); - }); - - it('returns nothing for empty hosts', function() { - assert.isEmpty(this.rsets.potentiallyApplicableRulesets('')); - }); - - it('returns cached rulesets', function() { - this.rsets.ruleCache.set(host, value); - assert.deepEqual(this.rsets.potentiallyApplicableRulesets(host), value); - }); - - it('caches results', function() { - this.rsets.targets.set(host, value); - - assert.isEmpty(this.rsets.ruleCache); - this.rsets.potentiallyApplicableRulesets(host); - assert.isTrue(this.rsets.ruleCache.has(host)); - }); - - describe('wildcard matching', function() { - - it('no wildcard', function() { - let target = host; - this.rsets.targets.set(target, value); - - let result = this.rsets.potentiallyApplicableRulesets(target), - expected = new Set(value); - - assert.deepEqual(result, expected); - }); - - it('matches left hand side wildcards', function() { - let target = '*.' + host; - this.rsets.targets.set(target, value); - - let res1 = this.rsets.potentiallyApplicableRulesets('sub.' + host); - assert.deepEqual(res1, new Set(value), 'default case'); - - let res2 = this.rsets.potentiallyApplicableRulesets(host); - assert.isEmpty(res2, 'wildcard does not match parent domains'); - - let res3 = this.rsets.potentiallyApplicableRulesets('moresub.sub.' + host); - assert.deepEqual(res3, new Set(value), 'wildcard matches sub domains'); - }); - - it('matches middle wildcards', function() { - let target = 'sub.*.' + host; - this.rsets.targets.set(target, value); - - let res1 = this.rsets.potentiallyApplicableRulesets('sub.star.' + host); - assert.deepEqual(res1, new Set(value), 'default case'); - - let res2 = this.rsets.potentiallyApplicableRulesets('sub.foo.bar.' + host); - assert.isEmpty(res2, new Set(value), 'only matches one label'); - }); - }); - }); - }); -}) diff --git a/data/extensions/https-everywhere@eff.org/test/testing_utils.js b/data/extensions/https-everywhere@eff.org/test/testing_utils.js deleted file mode 100644 index eddfadb..0000000 --- a/data/extensions/https-everywhere@eff.org/test/testing_utils.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict' - -function Mock() { - let out = function() { - out.calledWith = Array.from(arguments); - } - return out; -} - -function stub(name, value) { - let parts = name.split('.'), - last = parts.pop(), - part = global; - parts.forEach(partName => { - if (!part.hasOwnProperty(partName)) { - part[partName] = {}; - } - part = part[partName]; - }); - part[last] = value; -} - -function stubber(namesValues) { - namesValues.forEach(nameValue => { - stub(...nameValue); - }); -} - -Object.assign(exports, {Mock, stub, stubber}); diff --git a/data/extensions/https-everywhere@eff.org/test/update_test.js b/data/extensions/https-everywhere@eff.org/test/update_test.js deleted file mode 100644 index 56ba04f..0000000 --- a/data/extensions/https-everywhere@eff.org/test/update_test.js +++ /dev/null @@ -1,69 +0,0 @@ -'use strict' - -const assert = require('chai').assert, - update = require('../background-scripts/update'), - chrome = require("sinon-chrome"), - util = require('../background-scripts/util'), - atob = require("atob"), - TextDecoder = require('text-encoding').TextDecoder, - sinon = require('sinon'); - -const fs = require('fs'), - { update_channels } = require('../background-scripts/update_channels'), - pako = require('../external/pako-1.0.5/pako_inflate.min.js'); - -util.setDefaultLogLevel(util.WARN); - -describe('update.js', function() { - const example_rulesets_gz = fs.readFileSync(__dirname + '/example.rulesets.gz'); - - describe('applyStoredRulesets', function() { - beforeEach(() => { - chrome.flush(); - if(util.loadExtensionFile.restore){ util.loadExtensionFile.restore(); } - }); - - it('applies compressed rulesets from chrome.storage', function(done) { - let apply_promises = []; - - for(let update_channel of update_channels){ - const key = 'rulesets: ' + update_channel.name; - chrome.storage.local.get.withArgs(key).yields({[key]: example_rulesets_gz}); - } - - update.applyStoredRulesets({addFromJson: response => { - apply_promises.push(new Promise(resolve => { - assert.isArray(response); - assert.equal(response[0].name, "Example.com"); - resolve(); - })); - - if(apply_promises.length == update_channels.length){ - Promise.all(apply_promises).then(() => done()); - } - }}); - - }); - - it('applies rulesets from local extension file', function(done) { - for(let update_channel of update_channels){ - const key = 'rulesets: ' + update_channel.name; - chrome.storage.local.get.withArgs(key).yields({}); - } - - const example_rulesets_byte_array = pako.inflate(atob(example_rulesets_gz)); - const example_rulesets = new TextDecoder("utf-8").decode(example_rulesets_byte_array); - const example_rulesets_json = JSON.parse(example_rulesets); - - sinon.stub(util, "loadExtensionFile").returns(example_rulesets_json.rulesets); - - update.applyStoredRulesets({addFromJson: response => { - assert.isArray(response); - assert.equal(response[0].name, "Example.com"); - done(); - }}); - }); - - }); - -}) |