summaryrefslogtreecommitdiffstats
path: root/toolkit/modules/tests/xpcshell/test_MatchURLFilters.js
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2020-02-25 15:07:00 -0500
committerMatt A. Tobin <email@mattatobin.com>2020-02-25 15:07:00 -0500
commit0ddd00f1959c78ce37c14fef3c83401408fca3bf (patch)
treed408e02767c86cf8aac3acbb86722b03c77ede6f /toolkit/modules/tests/xpcshell/test_MatchURLFilters.js
parent20f0905b33cbb18d1caa80c55e2f552c2e18957b (diff)
downloadUXP-0ddd00f1959c78ce37c14fef3c83401408fca3bf.tar
UXP-0ddd00f1959c78ce37c14fef3c83401408fca3bf.tar.gz
UXP-0ddd00f1959c78ce37c14fef3c83401408fca3bf.tar.lz
UXP-0ddd00f1959c78ce37c14fef3c83401408fca3bf.tar.xz
UXP-0ddd00f1959c78ce37c14fef3c83401408fca3bf.zip
Issue #439 - Remove tests from toolkit/
Diffstat (limited to 'toolkit/modules/tests/xpcshell/test_MatchURLFilters.js')
-rw-r--r--toolkit/modules/tests/xpcshell/test_MatchURLFilters.js396
1 files changed, 0 insertions, 396 deletions
diff --git a/toolkit/modules/tests/xpcshell/test_MatchURLFilters.js b/toolkit/modules/tests/xpcshell/test_MatchURLFilters.js
deleted file mode 100644
index 52e03a6cc..000000000
--- a/toolkit/modules/tests/xpcshell/test_MatchURLFilters.js
+++ /dev/null
@@ -1,396 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-Components.utils.import("resource://gre/modules/MatchPattern.jsm");
-Components.utils.import("resource://gre/modules/Services.jsm");
-
-function createTestFilter({url, filters}) {
- let m = new MatchURLFilters(filters);
- return m.matches(url);
-}
-
-function expectPass({url, filters}) {
- ok(createTestFilter({url, filters}),
- `Expected match: ${JSON.stringify(filters)}, ${url}`);
-}
-
-function expectFail({url, filters}) {
- ok(!createTestFilter({url, filters}),
- `Expected no match: ${JSON.stringify(filters)}, ${url}`);
-}
-
-function expectThrow({url, filters, exceptionMessageContains}) {
- let logData = {filters, url};
-
- Assert.throws(
- () => {
- createTestFilter({url, filters});
- },
- exceptionMessageContains,
- `Check received exception for expected message: ${JSON.stringify(logData)}`
- );
-}
-
-add_task(function* test_match_url_filters() {
- const shouldPass = true;
- const shouldFail = true;
- const shouldThrow = true;
-
- var testCases = [
- // Empty, undefined and null filters.
- {shouldThrow, exceptionMessageContains: "filters array should not be empty",
- filters: [], url: "http://mozilla.org", },
- {shouldThrow, exceptionMessageContains: "filters should be an array",
- filters: undefined, url: "http://mozilla.org"},
- {shouldThrow, exceptionMessageContains: "filters should be an array",
- filters: null, url: "http://mozilla.org"},
-
- // Wrong formats (in a real webextension this will be blocked by the schema validation).
- {shouldThrow, exceptionMessageContains: "filters should be an array", filters: {},
- url: "http://mozilla.org"},
- {shouldThrow, exceptionMessageContains: "filters should be an array",
- filters: {nonExistentCriteria: true}, url: "http://mozilla.org", },
- {shouldPass, filters: [{nonExistentCriteria: true}], url: "http://mozilla.org"},
-
- // Schemes filter over various url schemes.
- {shouldPass, filters: [{schemes: ["http"]}], url: "http://mozilla.org"},
- {shouldPass, filters: [{schemes: ["https"]}], url: "https://mozilla.org"},
- {shouldPass, filters: [{schemes: ["ftp"]}], url: "ftp://fake/ftp/url"},
- {shouldPass, filters: [{schemes: ["about"]}], url: "about:blank"},
- {shouldPass, filters: [{schemes: ["data"]}], url: "data:,testDataURL"},
- {shouldFail, filters: [{schemes: ["http"]}], url: "ftp://fake/ftp/url"},
-
- // Multiple schemes: pass when at least one scheme matches.
- {shouldPass, filters: [{schemes: ["https", "about"]}], url: "https://mozilla.org"},
- {shouldPass, filters: [{schemes: ["about", "https"]}], url: "https://mozilla.org"},
- {shouldFail, filters: [{schemes: ["about", "http"]}], url: "https://mozilla.org"},
-
- // Port filter: standard (implicit) ports.
- {shouldPass, filters: [{ports: [443]}], url: "https://mozilla.org"},
- {shouldPass, filters: [{ports: [80]}], url: "http://mozilla.org"},
- {shouldPass, filters: [{ports: [21]}], url: "ftp://ftp.mozilla.org"},
-
- // Port filter: schemes without a default port.
- {shouldFail, filters: [{ports: [-1]}], url: "about:blank"},
- {shouldFail, filters: [{ports: [-1]}], url: "data:,testDataURL"},
-
- {shouldFail, filters: [{ports: [[1, 65535]]}], url: "about:blank"},
- {shouldFail, filters: [{ports: [[1, 65535]]}], url: "data:,testDataURL"},
-
- // Host filters (hostEquals, hostContains, hostPrefix, hostSuffix): schemes with an host.
- {shouldFail, filters: [{hostEquals: ""}], url: "https://mozilla.org"},
- {shouldPass, filters: [{hostEquals: null}], url: "https://mozilla.org"},
- {shouldPass, filters: [{hostEquals: "mozilla.org"}], url: "https://mozilla.org"},
- {shouldFail, filters: [{hostEquals: "mozilla.com"}], url: "https://mozilla.org"},
- // NOTE: trying at least once another valid protocol.
- {shouldPass, filters: [{hostEquals: "mozilla.org"}], url: "ftp://mozilla.org"},
- {shouldFail, filters: [{hostEquals: "mozilla.com"}], url: "ftp://mozilla.org"},
- {shouldPass, filters: [{hostEquals: "mozilla.org"}], url: "https://mozilla.org:8888"},
-
- {shouldPass, filters: [{hostContains: "moz"}], url: "https://mozilla.org"},
- // NOTE: an implicit '.' char is inserted into the host.
- {shouldPass, filters: [{hostContains: ".moz"}], url: "https://mozilla.org"},
- {shouldFail, filters: [{hostContains: "com"}], url: "https://mozilla.org"},
- {shouldPass, filters: [{hostContains: ""}], url: "https://mozilla.org"},
- {shouldPass, filters: [{hostContains: null}], url: "https://mozilla.org"},
-
- {shouldPass, filters: [{hostPrefix: "moz"}], url: "https://mozilla.org"},
- {shouldFail, filters: [{hostPrefix: "org"}], url: "https://mozilla.org"},
- {shouldPass, filters: [{hostPrefix: ""}], url: "https://mozilla.org"},
- {shouldPass, filters: [{hostPrefix: null}], url: "https://mozilla.org"},
-
- {shouldPass, filters: [{hostSuffix: ".org"}], url: "https://mozilla.org"},
- {shouldFail, filters: [{hostSuffix: "moz"}], url: "https://mozilla.org"},
- {shouldPass, filters: [{hostSuffix: ""}], url: "https://mozilla.org"},
- {shouldPass, filters: [{hostSuffix: null}], url: "https://mozilla.org"},
- {shouldPass, filters: [{hostSuffix: "lla.org"}], url: "https://mozilla.org:8888"},
-
- // hostEquals: urls without an host.
- // TODO: should we explicitly cover hostContains, hostPrefix, hostSuffix for
- // these sub-cases?
- {shouldFail, filters: [{hostEquals: "blank"}], url: "about:blank"},
- {shouldFail, filters: [{hostEquals: "blank"}], url: "about://blank"},
- {shouldFail, filters: [{hostEquals: "testDataURL"}], url: "data:,testDataURL"},
- {shouldPass, filters: [{hostEquals: ""}], url: "about:blank"},
- {shouldPass, filters: [{hostEquals: ""}], url: "about://blank"},
- {shouldPass, filters: [{hostEquals: ""}], url: "data:,testDataURL"},
-
- // Path filters (pathEquals, pathContains, pathPrefix, pathSuffix).
- {shouldFail, filters: [{pathEquals: ""}], url: "https://mozilla.org/test/path"},
- {shouldPass, filters: [{pathEquals: null}], url: "https://mozilla.org/test/path"},
- {shouldPass, filters: [{pathEquals: "/test/path"}], url: "https://mozilla.org/test/path"},
- {shouldFail, filters: [{pathEquals: "/wrong/path"}], url: "https://mozilla.org/test/path"},
- {shouldPass, filters: [{pathEquals: "/test/path"}], url: "https://mozilla.org:8888/test/path"},
- // NOTE: trying at least once another valid protocol
- {shouldPass, filters: [{pathEquals: "/test/path"}], url: "ftp://mozilla.org/test/path"},
- {shouldFail, filters: [{pathEquals: "/wrong/path"}], url: "ftp://mozilla.org/test/path"},
-
- {shouldPass, filters: [{pathContains: "st/"}], url: "https://mozilla.org/test/path"},
- {shouldPass, filters: [{pathContains: "/test"}], url: "https://mozilla.org/test/path"},
- {shouldFail, filters: [{pathContains: "org"}], url: "https://mozilla.org/test/path"},
- {shouldPass, filters: [{pathContains: ""}], url: "https://mozilla.org/test/path"},
- {shouldPass, filters: [{pathContains: null}], url: "https://mozilla.org/test/path"},
- {shouldFail, filters: [{pathContains: "param"}], url: "https://mozilla.org:8888/test/path?param=1"},
- {shouldFail, filters: [{pathContains: "ref"}], url: "https://mozilla.org:8888/test/path#ref"},
- {shouldPass, filters: [{pathContains: "st/pa"}], url: "https://mozilla.org:8888/test/path"},
-
- {shouldPass, filters: [{pathPrefix: "/te"}], url: "https://mozilla.org/test/path"},
- {shouldFail, filters: [{pathPrefix: "org/"}], url: "https://mozilla.org/test/path"},
- {shouldPass, filters: [{pathPrefix: ""}], url: "https://mozilla.org/test/path"},
- {shouldPass, filters: [{pathPrefix: null}], url: "https://mozilla.org/test/path"},
-
- {shouldPass, filters: [{pathSuffix: "/path"}], url: "https://mozilla.org/test/path"},
- {shouldFail, filters: [{pathSuffix: "th/"}], url: "https://mozilla.org/test/path"},
- {shouldPass, filters: [{pathSuffix: ""}], url: "https://mozilla.org/test/path"},
- {shouldPass, filters: [{pathSuffix: null}], url: "https://mozilla.org/test/path"},
- {shouldFail, filters: [{pathSuffix: "p=1"}], url: "https://mozilla.org:8888/test/path?p=1"},
- {shouldFail, filters: [{pathSuffix: "ref"}], url: "https://mozilla.org:8888/test/path#ref"},
-
- // Query filters (queryEquals, queryContains, queryPrefix, querySuffix).
- {shouldFail, filters: [{queryEquals: ""}], url: "https://mozilla.org/?param=val"},
- {shouldPass, filters: [{queryEquals: null}], url: "https://mozilla.org/?param=val"},
- {shouldPass, filters: [{queryEquals: "param=val"}], url: "https://mozilla.org/?param=val"},
- {shouldFail, filters: [{queryEquals: "?param=val"}], url: "https://mozilla.org/?param=val"},
- {shouldFail, filters: [{queryEquals: "/path?param=val"}], url: "https://mozilla.org/path?param=val"},
-
- // NOTE: about scheme urls cannot be matched by query.
- {shouldFail, filters: [{queryEquals: "param=val"}], url: "about:blank?param=val"},
- {shouldFail, filters: [{queryEquals: "param"}], url: "ftp://mozilla.org?param=val"},
-
- {shouldPass, filters: [{queryContains: "ram"}], url: "https://mozilla.org/?param=val"},
- {shouldPass, filters: [{queryContains: "=val"}], url: "https://mozilla.org/?param=val"},
- {shouldFail, filters: [{queryContains: "?param"}], url: "https://mozilla.org/?param=val"},
- {shouldFail, filters: [{queryContains: "path"}], url: "https://mozilla.org/path/?p=v#ref"},
- {shouldPass, filters: [{queryContains: ""}], url: "https://mozilla.org/?param=val"},
- {shouldPass, filters: [{queryContains: null}], url: "https://mozilla.org/?param=val"},
-
- {shouldPass, filters: [{queryPrefix: "param"}], url: "https://mozilla.org/?param=val"},
- {shouldFail, filters: [{queryPrefix: "p="}], url: "https://mozilla.org/?param=val"},
- {shouldFail, filters: [{queryPrefix: "path"}], url: "https://mozilla.org/path?param=val"},
- {shouldPass, filters: [{queryPrefix: ""}], url: "https://mozilla.org/?param=val"},
- {shouldPass, filters: [{queryPrefix: null}], url: "https://mozilla.org/?param=val"},
-
- {shouldPass, filters: [{querySuffix: "=val"}], url: "https://mozilla.org/?param=val"},
- {shouldFail, filters: [{querySuffix: "=wrong"}], url: "https://mozilla.org/?param=val"},
- {shouldPass, filters: [{querySuffix: ""}], url: "https://mozilla.org/?param=val"},
- {shouldPass, filters: [{querySuffix: null}], url: "https://mozilla.org/?param=val"},
-
- // URL filters (urlEquals, urlContains, urlPrefix, urlSuffix).
- {shouldFail, filters: [{urlEquals: ""}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlEquals: null}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlEquals: "https://mozilla.org/?p=v#ref"}],
- url: "https://mozilla.org/?p=v#ref"},
- {shouldFail, filters: [{urlEquals: "https://mozilla.org/?p=v#ref2"}],
- url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlEquals: "about:blank?p=v#ref"}], url: "about:blank?p=v#ref"},
- {shouldPass, filters: [{urlEquals: "ftp://mozilla.org?p=v#ref"}],
- url: "ftp://mozilla.org?p=v#ref"},
-
- {shouldPass, filters: [{urlContains: "org/?p"}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlContains: "=v#ref"}], url: "https://mozilla.org/?p=v#ref"},
- {shouldFail, filters: [{urlContains: "ftp"}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlContains: ""}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlContains: null}], url: "https://mozilla.org/?p=v#ref"},
-
- {shouldPass, filters: [{urlPrefix: "http"}], url: "https://mozilla.org/?p=v#ref"},
- {shouldFail, filters: [{urlPrefix: "moz"}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlPrefix: ""}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlPrefix: null}], url: "https://mozilla.org/?p=v#ref"},
-
- {shouldPass, filters: [{urlSuffix: "#ref"}], url: "https://mozilla.org/?p=v#ref"},
- {shouldFail, filters: [{urlSuffix: "=wrong"}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlSuffix: ""}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlSuffix: null}], url: "https://mozilla.org/?p=v#ref"},
-
- // More url filters: urlMatches.
- {shouldPass, filters: [{urlMatches: ".*://mozilla"}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlMatches: ".*://mozilla"}], url: "ftp://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlMatches: ".*://.*/\?p"}], url: "ftp://mozilla.org/?p=v#ref"},
- // NOTE: urlMatches should not match the url without the ref.
- {shouldFail, filters: [{urlMatches: "v#ref$"}], url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{urlMatches: "^ftp"}], url: "ftp://mozilla.org/?p=v#ref"},
-
- // More url filters: originAndPathMatches.
- {shouldPass, filters: [{originAndPathMatches: ".*://mozilla"}],
- url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{originAndPathMatches: ".*://mozilla"}],
- url: "ftp://mozilla.org/?p=v#ref"},
- // NOTE: urlMatches should not match the url without the query and the ref.
- {shouldFail, filters: [{originAndPathMatches: ".*://.*/\?p"}],
- url: "ftp://mozilla.org/?p=v#ref"},
- {shouldFail, filters: [{originAndPathMatches: "v#ref$"}],
- url: "https://mozilla.org/?p=v#ref"},
- {shouldPass, filters: [{originAndPathMatches: "^ftp"}],
- url: "ftp://mozilla.org/?p=v#ref"},
-
- // Filter with all criteria: all matches, none matches, some matches.
-
- // All matches.
- {shouldPass, filters: [
- {
- schemes: ["https", "http"],
- ports: [443, 80],
- hostEquals: "www.mozilla.org",
- hostContains: ".moz",
- hostPrefix: "www",
- hostSuffix: "org",
- pathEquals: "/sub/path",
- pathContains: "b/p",
- pathPrefix: "/sub",
- pathSuffix: "/path",
- queryEquals: "p=v",
- queryContains: "1=",
- queryPrefix: "p1",
- querySuffix: "=v",
- urlEquals: "https://www.mozilla.org/sub/path?p1=v#ref",
- urlContains: "org/sub",
- urlPrefix: "https://moz",
- urlSuffix: "#ref",
- urlMatches: "v#ref$",
- originAndPathMatches: ".*://moz.*/"
- },
- ], url: "https://www.mozilla.org/sub/path?p1=v#ref"},
- // None matches.
- {shouldFail, filters: [
- {
- schemes: ["http"],
- ports: [80],
- hostEquals: "mozilla.com",
- hostContains: "www.moz",
- hostPrefix: "www",
- hostSuffix: "com",
- pathEquals: "/wrong/path",
- pathContains: "g/p",
- pathPrefix: "/wrong",
- pathSuffix: "/wrong",
- queryEquals: "p2=v",
- queryContains: "2=",
- queryPrefix: "p2",
- querySuffix: "=value",
- urlEquals: "http://mozilla.com/sub/path?p1=v#ref",
- urlContains: "com/sub",
- urlPrefix: "http://moz",
- urlSuffix: "#ref2",
- urlMatches: "value#ref2$",
- originAndPathMatches: ".*://moz.*com/"
- },
- ], url: "https://mozilla.org/sub/path?p1=v#ref"},
- // Some matches
- {shouldFail, filters: [
- {
- schemes: ["https"],
- ports: [80],
- hostEquals: "mozilla.com",
- hostContains: "www.moz",
- hostPrefix: "www",
- hostSuffix: "com",
- pathEquals: "/wrong/path",
- pathContains: "g/p",
- pathPrefix: "/wrong",
- pathSuffix: "/wrong",
- queryEquals: "p2=v",
- queryContains: "2=",
- queryPrefix: "p2",
- querySuffix: "=value",
- urlEquals: "http://mozilla.com/sub/path?p1=v#ref",
- urlContains: "com/sub",
- urlPrefix: "http://moz",
- urlSuffix: "#ref2",
- urlMatches: "value#ref2$",
- originAndPathMatches: ".*://moz.*com/"
- },
- ], url: "https://mozilla.org/sub/path?p1=v#ref"},
-
- // Filter with multiple filters: all matches, some matches, none matches.
-
- // All matches.
- {shouldPass, filters: [
- {schemes: ["https", "http"]},
- {ports: [443, 80]},
- {hostEquals: "www.mozilla.org"},
- {hostContains: ".moz"},
- {hostPrefix: "www"},
- {hostSuffix: "org"},
- {pathEquals: "/sub/path"},
- {pathContains: "b/p"},
- {pathPrefix: "/sub"},
- {pathSuffix: "/path"},
- {queryEquals: "p=v"},
- {queryContains: "1="},
- {queryPrefix: "p1"},
- {querySuffix: "=v"},
- {urlEquals: "https://www.mozilla.org/sub/path?p1=v#ref"},
- {urlContains: "org/sub"},
- {urlPrefix: "https://moz"},
- {urlSuffix: "#ref"},
- {urlMatches: "v#ref$"},
- {originAndPathMatches: ".*://moz.*/"},
- ], url: "https://www.mozilla.org/sub/path?p1=v#ref"},
-
- // None matches.
- {shouldFail, filters: [
- {schemes: ["http"]},
- {ports: [80]},
- {hostEquals: "mozilla.com"},
- {hostContains: "www.moz"},
- {hostPrefix: "www"},
- {hostSuffix: "com"},
- {pathEquals: "/wrong/path"},
- {pathContains: "g/p"},
- {pathPrefix: "/wrong"},
- {pathSuffix: "/wrong"},
- {queryEquals: "p2=v"},
- {queryContains: "2="},
- {queryPrefix: "p2"},
- {querySuffix: "=value"},
- {urlEquals: "http://mozilla.com/sub/path?p1=v#ref"},
- {urlContains: "com/sub"},
- {urlPrefix: "http://moz"},
- {urlSuffix: "#ref2"},
- {urlMatches: "value#ref2$"},
- {originAndPathMatches: ".*://moz.*com/"},
- ], url: "https://mozilla.org/sub/path?p1=v#ref"},
-
- // Some matches.
- {shouldPass, filters: [
- {schemes: ["https"]},
- {ports: [80]},
- {hostEquals: "mozilla.com"},
- {hostContains: "www.moz"},
- {hostPrefix: "www"},
- {hostSuffix: "com"},
- {pathEquals: "/wrong/path"},
- {pathContains: "g/p"},
- {pathPrefix: "/wrong"},
- {pathSuffix: "/wrong"},
- {queryEquals: "p2=v"},
- {queryContains: "2="},
- {queryPrefix: "p2"},
- {querySuffix: "=value"},
- {urlEquals: "http://mozilla.com/sub/path?p1=v#ref"},
- {urlContains: "com/sub"},
- {urlPrefix: "http://moz"},
- {urlSuffix: "#ref2"},
- {urlMatches: "value#ref2$"},
- {originAndPathMatches: ".*://moz.*com/"},
- ], url: "https://mozilla.org/sub/path?p1=v#ref"},
- ];
-
- // Run all the the testCases defined above.
- for (let currentTest of testCases) {
- let {
- exceptionMessageContains,
- url, filters,
- } = currentTest;
-
- if (currentTest.shouldThrow) {
- expectThrow({url, filters, exceptionMessageContains})
- } else if (currentTest.shouldFail) {
- expectFail({url, filters});
- } else {
- expectPass({url, filters});
- }
- }
-});