diff options
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/test')
-rw-r--r-- | data/extensions/https-everywhere@eff.org/test/example.rulesets.gz | bin | 0 -> 131 bytes | |||
-rw-r--r-- | data/extensions/https-everywhere@eff.org/test/incognito_test.js | 2 | ||||
-rw-r--r-- | data/extensions/https-everywhere@eff.org/test/rules_test.js | 56 | ||||
-rw-r--r-- | data/extensions/https-everywhere@eff.org/test/update_test.js | 69 |
4 files changed, 106 insertions, 21 deletions
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 differnew file mode 100644 index 0000000..4018117 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/test/example.rulesets.gz diff --git a/data/extensions/https-everywhere@eff.org/test/incognito_test.js b/data/extensions/https-everywhere@eff.org/test/incognito_test.js index 4005515..75eede4 100644 --- a/data/extensions/https-everywhere@eff.org/test/incognito_test.js +++ b/data/extensions/https-everywhere@eff.org/test/incognito_test.js @@ -2,7 +2,7 @@ const expect = require('chai').expect, tu = require('./testing_utils'), - incognito = require('../incognito'); + incognito = require('../background-scripts/incognito'); describe('incognito.js', function() { beforeEach(function() { diff --git a/data/extensions/https-everywhere@eff.org/test/rules_test.js b/data/extensions/https-everywhere@eff.org/test/rules_test.js index eaa7889..b859e69 100644 --- a/data/extensions/https-everywhere@eff.org/test/rules_test.js +++ b/data/extensions/https-everywhere@eff.org/test/rules_test.js @@ -1,12 +1,12 @@ 'use strict' const assert = require('chai').assert, - rules = require('../rules'); + rules = require('../background-scripts/rules'); -const Exclusion = rules.Exclusion, - Rule = rules.Rule, +const Rule = rules.Rule, RuleSet = rules.RuleSet, - RuleSets = rules.RuleSets; + RuleSets = rules.RuleSets, + getRule = rules.getRule; describe('rules.js', function() { @@ -24,18 +24,19 @@ describe('rules.js', function() { }); }); - describe('Exclusion', function() { - it('constructs', function() { - let exclusion = new Exclusion(test_str); - assert.isTrue(exclusion.pattern_c.test(test_str), true); - }); - }); - describe('Rule', function() { it('constructs trivial rule', function() { let rule = new Rule('^http:', 'https:'); - assert.equal(rule.to, rules.trivial_rule_to); - assert.equal(rule.from_c, rules.trivial_rule_from_c); + 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); }); }); @@ -46,7 +47,7 @@ describe('rules.js', function() { describe('#apply', function() { it('excludes excluded uris', function() { - this.ruleset.exclusions = [new Exclusion(test_str)]; + this.ruleset.exclusions = new RegExp(test_str); assert.isNull(this.ruleset.apply(test_str)); }); @@ -73,8 +74,8 @@ describe('rules.js', function() { it('not equivalent with different exclusions', function() { let rs_a = new RuleSet(...inputs), rs_b = new RuleSet(...inputs); - rs_a.exclusions = [new Exclusion('foo')]; - rs_b.exclusions = [new Exclusion('bar')]; + rs_a.exclusions = new RegExp('foo'); + rs_b.exclusions = new RegExp('bar'); assert.isFalse(rs_a.isEquivalentTo(rs_b)); }); @@ -102,7 +103,8 @@ describe('rules.js', function() { to: "https:", from: "^http:" }], - target: ["freerangekitten.com", "www.freerangekitten.com"] + target: ["freerangekitten.com", "www.freerangekitten.com"], + exclusion: ["foo", "bar"] }]; beforeEach(function() { @@ -112,9 +114,14 @@ describe('rules.js', function() { 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() { @@ -125,11 +132,20 @@ describe('rules.js', function() { 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() { diff --git a/data/extensions/https-everywhere@eff.org/test/update_test.js b/data/extensions/https-everywhere@eff.org/test/update_test.js new file mode 100644 index 0000000..56ba04f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/test/update_test.js @@ -0,0 +1,69 @@ +'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(); + }}); + }); + + }); + +}) |