summaryrefslogtreecommitdiffstats
path: root/src/tests/tests/baseDomain.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/tests/baseDomain.js')
-rw-r--r--src/tests/tests/baseDomain.js255
1 files changed, 255 insertions, 0 deletions
diff --git a/src/tests/tests/baseDomain.js b/src/tests/tests/baseDomain.js
new file mode 100644
index 0000000..b39d757
--- /dev/null
+++ b/src/tests/tests/baseDomain.js
@@ -0,0 +1,255 @@
+/* * This file is part of Adblock Plus <http://adblockplus.org/>, * Copyright (C) 2006-2013 Eyeo GmbH *
+ * Adblock Plus is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * Adblock Plus is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* global
+extractHostFromURL:false,
+getBaseDomain: false,
+ipAddressToNumber: false,
+isPrivateDomain:false,
+isThirdParty:false,
+URI:false,
+*/
+
+(function () {
+
+QUnit.module("URL/host tools");
+
+QUnit.test("Host name extraction", function (assert) {
+ var tests = [
+ [null, ""],
+ ["/foo/bar", ""],
+ ["http://example.com/", "example.com"],
+ ["http://example.com:8000/", "example.com"],
+ ["http://foo:bar@example.com:8000/foo:bar/bas", "example.com"],
+ ["ftp://example.com/", "example.com"],
+ ["http://1.2.3.4:8000/", "1.2.3.4"],
+ ["http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]/", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
+ ["http://[2001::7334]:8000/test@foo.example.com/bar", "2001::7334"],
+ ];
+
+ for (var i = 0; i < tests.length; i++) {
+ assert.equal(extractHostFromURL(tests[i][0]), tests[i][1], tests[i][0]);
+ }
+});
+
+QUnit.test("Invalid URI recognition", function (assert) {
+ var tests = [
+ null,
+ "",
+ "http:",
+ "http:foo.bar/",
+ "http://foo.bar"
+ ];
+ for (var i = 0; i < tests.length; i++) {
+ assert.raises(function() { // eslint-disable-line no-loop-func
+ return new URI(tests[i]);
+ }, Error, "Invalid URI recognition.");
+ }
+});
+
+QUnit.test("URI parsing", function (assert) {
+ var tests = [
+ ["http://example.com/", {
+ scheme: "http",
+ host: "example.com",
+ asciiHost: "example.com",
+ hostPort: "example.com",
+ port: -1,
+ path: "/",
+ prePath: "http://example.com"
+ }],
+ ["http://example.com:8000/", {
+ scheme: "http",
+ host: "example.com",
+ asciiHost: "example.com",
+ hostPort: "example.com:8000",
+ port: 8000,
+ path: "/",
+ prePath: "http://example.com:8000"
+ }],
+ ["http://foo:bar@\u0440\u043E\u0441\u0441\u0438\u044F.\u0440\u0444:8000/foo:bar/bas", {
+ scheme: "http",
+ host: "\u0440\u043E\u0441\u0441\u0438\u044F.\u0440\u0444",
+ asciiHost: "xn--h1alffa9f.xn--p1ai",
+ hostPort: "\u0440\u043E\u0441\u0441\u0438\u044F.\u0440\u0444:8000",
+ port: 8000,
+ path: "/foo:bar/bas",
+ prePath: "http://foo:bar@\u0440\u043E\u0441\u0441\u0438\u044F.\u0440\u0444:8000"
+ }],
+ ["ftp://m\xFCller.de/", {
+ scheme: "ftp",
+ host: "m\xFCller.de",
+ asciiHost: "xn--mller-kva.de",
+ hostPort: "m\xFCller.de",
+ port: -1,
+ path: "/",
+ prePath: "ftp://m\xFCller.de"
+ }],
+ ["http://1.2.3.4:8000/", {
+ scheme: "http",
+ host: "1.2.3.4",
+ asciiHost: "1.2.3.4",
+ hostPort: "1.2.3.4:8000",
+ port: 8000,
+ path: "/",
+ prePath: "http://1.2.3.4:8000"
+ }],
+ ["http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]/", {
+ scheme: "http",
+ host: "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
+ asciiHost: "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
+ hostPort: "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]",
+ port: -1,
+ path: "/",
+ prePath: "http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]"
+ }],
+ ["http://[2001::7334]:8000/test@foo.example.com/bar", {
+ scheme: "http",
+ host: "2001::7334",
+ asciiHost: "2001::7334",
+ hostPort: "[2001::7334]:8000",
+ port: 8000,
+ path: "/test@foo.example.com/bar",
+ prePath: "http://[2001::7334]:8000"
+ }],
+ ["filesystem:http://example.com/temporary/myfile.png", {
+ scheme: "filesystem:http",
+ host: "example.com",
+ asciiHost: "example.com",
+ hostPort: "example.com",
+ port: -1,
+ path: "/temporary/myfile.png",
+ prePath: "filesystem:http://example.com"
+ }],
+ ["blob:https://www.daringgourmet.com/69587cd0-01e1-417b-819d-8e2ecbefc1f9", {
+ scheme: "blob:https",
+ host: "www.daringgourmet.com",
+ asciiHost: "www.daringgourmet.com",
+ hostPort: "www.daringgourmet.com",
+ port: -1,
+ path: "/69587cd0-01e1-417b-819d-8e2ecbefc1f9",
+ prePath: "blob:https://www.daringgourmet.com"
+ }],
+ ];
+
+ for (var i = 0; i < tests.length; i++) {
+ var url = tests[i][0];
+ var uri = new URI(url);
+ assert.equal(uri.spec, url, "URI(" + url + ").spec");
+ for (var k in tests[i][1]) {
+ assert.equal(uri[k], tests[i][1][k], "URI(" + url + ")." + k);
+ }
+ }
+});
+
+QUnit.test("Determining base domain", function (assert) {
+ var tests = [
+ ["com", "com"],
+ ["example.com", "example.com"],
+ ["www.example.com", "example.com"],
+ ["www.example.com.", "example.com"],
+ ["www.example.co.uk", "example.co.uk"],
+ ["www.example.co.uk.", "example.co.uk"],
+ ["www.example.bl.uk", "bl.uk"],
+ ["foo.bar.example.co.uk", "example.co.uk"],
+ ["1.2.3.4.com", "4.com"],
+ ["1.2.3.4.bg", "3.4.bg"],
+ ["1.2.3.4", "1.2.3.4"],
+ ["1.2.0x3.0x4", "1.2.0x3.0x4"],
+ ["1.2.3", "2.3"],
+ ["1.2.0x3g.0x4", "0x3g.0x4"],
+ ["2001:0db8:85a3:0000:0000:8a2e:0370:7334", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
+ ["2001::7334", "2001::7334"],
+ ["::ffff:1.2.3.4", "::ffff:1.2.3.4"],
+ ["foo.bar.2001::7334", "bar.2001::7334"],
+ ["test.xn--e1aybc.xn--p1ai", "тест.рф"],
+ ];
+
+ for (var i = 0; i < tests.length; i++) {
+ assert.equal(getBaseDomain(tests[i][0]), tests[i][1], tests[i][0]);
+ }
+});
+
+QUnit.test("Converting IP address to number checks", function (assert) {
+ var testResults = {
+ "127.0.0.1": 2130706433,
+ "8.8.8.8": 134744072,
+ "192.168.0.1": 3232235521,
+ "256.0.0.1": 0,
+ "privacybadger.org": 0,
+ };
+
+ for (var ip in testResults) {
+ // Ignore object properties.
+ if (!testResults.hasOwnProperty(ip)) {
+ continue;
+ }
+
+ assert.equal(ipAddressToNumber(ip), testResults[ip], ip);
+ }
+});
+
+QUnit.test("Private domain checks", function (assert) {
+ var testResults = {
+ localhost: true,
+ "126.0.0.13": false,
+ "127.0.0.1": true,
+ "128.0.2.27": false,
+ "9.4.201.150": false,
+ "10.3.0.99": true,
+ "11.240.84.107": false,
+ "171.20.103.65": false,
+ "172.15.2.0": false,
+ "172.16.25.30": true,
+ "172.31.16.2": true,
+ "172.32.3.4": false,
+ "173.28.86.211": false,
+ "191.168.33.41": false,
+ "192.167.101.111": false,
+ "192.168.1.5": true,
+ "192.169.204.154": false,
+ "193.168.28.139": false,
+ "privacybadger.org": false,
+ };
+
+ for (var domain in testResults) {
+ // Ignore object properties.
+ if (!testResults.hasOwnProperty(domain)) {
+ continue;
+ }
+
+ assert.equal(isPrivateDomain(domain), testResults[domain], domain);
+ }
+});
+
+QUnit.test("Third party checks", function (assert) {
+ var tests = [
+ ["foo", "foo", false],
+ ["foo", "bar", true],
+ ["foo.com", "bar.com", true],
+ ["foo.com", "foo.com", false],
+ ["foo.com", "www.foo.com", false],
+ ["foo.example.com", "bar.example.com", false],
+ ["foo.uk", "bar.uk", true],
+ ["foo.co.uk", "bar.co.uk", true],
+ ["foo.example.co.uk", "bar.example.co.uk", false],
+ ["1.2.3.4", "2.2.3.4", true],
+ ];
+
+ for (var i = 0; i < tests.length; i++) {
+ assert.equal(isThirdParty(tests[i][0], tests[i][1]), tests[i][2], tests[i][0] + " and " + tests[i][1]);
+ }
+});
+
+}());