From 75417f5e3d32645859d94cec82255dc130ec4a2e Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 18:55:34 +0200 Subject: Adding upstream version 2020.10.7. Signed-off-by: Daniel Baumann --- src/tests/tests/baseDomain.js | 255 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 src/tests/tests/baseDomain.js (limited to 'src/tests/tests/baseDomain.js') 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 , * 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 . + */ + +/* 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]); + } +}); + +}()); -- cgit v1.2.3