summaryrefslogtreecommitdiff
path: root/data/extensions/https-everywhere@eff.org/test
diff options
context:
space:
mode:
authorRuben Rodriguez <ruben@gnu.org>2018-09-13 20:39:48 -0400
committerRuben Rodriguez <ruben@gnu.org>2018-09-13 21:02:13 -0400
commitd26b319fd6f98517cc3421f10bf18698b953e4d2 (patch)
treebc70c4e472a2eaf514d411dba5067d530e5bbea9 /data/extensions/https-everywhere@eff.org/test
parentc3b304c51a3386ea09527a479a883253ea35243a (diff)
Updated extensions list for v60
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/test')
-rw-r--r--data/extensions/https-everywhere@eff.org/test/example.rulesets.gzbin0 -> 131 bytes
-rw-r--r--data/extensions/https-everywhere@eff.org/test/incognito_test.js2
-rw-r--r--data/extensions/https-everywhere@eff.org/test/rules_test.js56
-rw-r--r--data/extensions/https-everywhere@eff.org/test/update_test.js69
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
new file mode 100644
index 0000000..4018117
--- /dev/null
+++ b/data/extensions/https-everywhere@eff.org/test/example.rulesets.gz
Binary files differ
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();
+ }});
+ });
+
+ });
+
+})