summaryrefslogtreecommitdiff
path: root/data/extensions/https-everywhere@eff.org/test/rules_test.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/test/rules_test.js')
-rw-r--r--data/extensions/https-everywhere@eff.org/test/rules_test.js56
1 files changed, 36 insertions, 20 deletions
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() {