Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: test/url.js

Issue 30009560: Noissue - Rename lib/domain.js to lib/url.js (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore/
Patch Set: Add tests for domainSuffixes Created Feb. 19, 2019, 2:36 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/url.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/url.js
===================================================================
rename from test/domain.js
rename to test/url.js
--- a/test/domain.js
+++ b/test/url.js
@@ -19,29 +19,30 @@
// Only starting NodeJS 10 that URL is in the global space.
const {URL} = require("url");
const {createSandbox} = require("./_common");
const publicSuffixes = require("../data/publicSuffixList.json");
let normalizeHostname = null;
+let domainSuffixes = null;
let isThirdParty = null;
-let getDomain = null;
+let getBaseDomain = null;
exports.setUp = function(callback)
{
let sandboxedRequire = createSandbox({
extraExports: {
- domain: ["getDomain"]
+ domain: ["getBaseDomain"]
}
});
(
- {normalizeHostname, isThirdParty,
- getDomain} = sandboxedRequire("../lib/domain")
+ {normalizeHostname, domainSuffixes, isThirdParty,
+ getBaseDomain} = sandboxedRequire("../lib/url")
);
callback();
};
function hostnameToURL(hostname)
{
return new URL("http://" + hostname);
@@ -82,16 +83,57 @@
test.equal(normalizeHostname("2001:0db8:85a3:0000:0000:8a2e:0370:7334."),
"2001:0db8:85a3:0000:0000:8a2e:0370:7334");
test.equal(normalizeHostname("2001:0DB8:85A3:0000:0000:8A2E:0370:7334"),
"2001:0db8:85a3:0000:0000:8a2e:0370:7334");
test.done();
};
+exports.testDomainSuffixes = function(test)
+{
+ test.deepEqual([...domainSuffixes("localhost")], ["localhost"]);
+ test.deepEqual([...domainSuffixes("example.com")], ["example.com", "com"]);
+ test.deepEqual([...domainSuffixes("www.example.com")],
+ ["www.example.com", "example.com", "com"]);
+ test.deepEqual([...domainSuffixes("www.example.co.in")],
+ ["www.example.co.in", "example.co.in", "co.in", "in"]);
+
+ // With blank.
+ test.deepEqual([...domainSuffixes("localhost", true)], ["localhost", ""]);
+ test.deepEqual([...domainSuffixes("example.com", true)],
+ ["example.com", "com", ""]);
+ test.deepEqual([...domainSuffixes("www.example.com", true)],
+ ["www.example.com", "example.com", "com", ""]);
+ test.deepEqual([...domainSuffixes("www.example.co.in", true)],
+ ["www.example.co.in", "example.co.in", "co.in", "in", ""]);
+
+ // Quirks and edge cases.
+ test.deepEqual([...domainSuffixes("")], []);
+ test.deepEqual([...domainSuffixes(".")], ["."]);
+ test.deepEqual([...domainSuffixes(".localhost")],
+ [".localhost", "localhost"]);
+ test.deepEqual([...domainSuffixes(".example.com")],
+ [".example.com", "example.com", "com"]);
+ test.deepEqual([...domainSuffixes("localhost.")],
+ ["localhost."]);
+ test.deepEqual([...domainSuffixes("example.com.")],
+ ["example.com.", "com."]);
+ test.deepEqual([...domainSuffixes("..localhost")],
+ ["..localhost", ".localhost", "localhost"]);
+ test.deepEqual([...domainSuffixes("..example..com")],
+ ["..example..com", ".example..com", "example..com", ".com",
+ "com"]);
+ test.deepEqual([...domainSuffixes("localhost..")], ["localhost..", "."]);
+ test.deepEqual([...domainSuffixes("example..com..")],
+ ["example..com..", ".com..", "com..", "."]);
+
+ test.done();
+};
+
exports.testIsThirdParty = function(test)
{
testThirdParty(test, "foo", "foo", false, "same domain isn't third-party");
testThirdParty(test, "foo", "bar", true, "different domain is third-party");
testThirdParty(test, "foo.com", "foo.com", false,
"same domain with TLD (.com) isn't third-party");
testThirdParty(test, "foo.com", "bar.com", true,
"same TLD (.com) but different domain is third-party");
@@ -151,17 +193,17 @@
testThirdParty(test, "xn--f-1gaa.com", "f\u00f6\u00f6.com", false,
"same IDN isn't third-party");
testThirdParty(test, "example.com..", "example.com....", false,
"traling dots are ignored");
test.done();
};
-exports.testGetDomain = function(test)
+exports.testGetBaseDomain = function(test)
{
let parts = ["aaa", "bbb", "ccc", "ddd", "eee"];
let levels = 3;
for (let suffix in publicSuffixes)
{
let offset = publicSuffixes[suffix];
@@ -172,40 +214,43 @@
for (let i = 0; i < offset + levels; i++)
{
let hostname = parts.slice(0, i).join(".");
hostname += (hostname ? "." : "") + suffix;
let expected = parts.slice(Math.max(0, i - offset), i).join(".");
expected += (expected ? "." : "") + suffix;
- test.equal(getDomain(hostname), expected,
- `getDomain("${hostname}") == "${expected}"` +
+ test.equal(getBaseDomain(hostname), expected,
+ `getBaseDomain("${hostname}") == "${expected}"` +
` with {suffix: "${suffix}", offset: ${offset}}`);
}
}
// Unknown suffixes.
test.equal(typeof publicSuffixes["localhost"], "undefined");
test.equal(typeof publicSuffixes["localhost.localdomain"], "undefined");
- test.equal(getDomain("localhost"), "localhost");
- test.equal(getDomain("localhost.localdomain"), "localhost.localdomain");
- test.equal(getDomain("mail.localhost.localdomain"), "localhost.localdomain");
- test.equal(getDomain("www.example.localhost.localdomain"),
+ test.equal(getBaseDomain("localhost"), "localhost");
+ test.equal(getBaseDomain("localhost.localdomain"), "localhost.localdomain");
+ test.equal(
+ getBaseDomain("mail.localhost.localdomain"),
+ "localhost.localdomain"
+ );
+ test.equal(getBaseDomain("www.example.localhost.localdomain"),
"localhost.localdomain");
// Unknown suffixes that overlap partly with known suffixes.
test.equal(typeof publicSuffixes["example.com"], "undefined");
test.equal(typeof publicSuffixes["africa.com"], "number");
test.equal(typeof publicSuffixes["compute.amazonaws.com"], "number");
- test.equal(getDomain("example.com"), "example.com");
- test.equal(getDomain("mail.example.com"), "example.com");
- test.equal(getDomain("secure.mail.example.com"), "example.com");
+ test.equal(getBaseDomain("example.com"), "example.com");
+ test.equal(getBaseDomain("mail.example.com"), "example.com");
+ test.equal(getBaseDomain("secure.mail.example.com"), "example.com");
// Cascading offsets.
// If these sanity checks fail, look for other examles of cascading offsets
// from the public suffix list.
test.equal(
typeof publicSuffixes[
"images.example.s3.dualstack.us-east-1.amazonaws.com"
@@ -220,27 +265,32 @@
test.equal(typeof publicSuffixes["dualstack.us-east-1.amazonaws.com"],
"undefined");
test.equal(typeof publicSuffixes["example.us-east-1.amazonaws.com"],
"undefined");
test.equal(publicSuffixes["us-east-1.amazonaws.com"], 1);
test.equal(typeof publicSuffixes["example.amazonaws.com"], "undefined");
test.equal(typeof publicSuffixes["amazonaws.com"], "undefined");
- test.equal(getDomain("images.example.s3.dualstack.us-east-1.amazonaws.com"),
+ test.equal(
+ getBaseDomain("images.example.s3.dualstack.us-east-1.amazonaws.com"),
+ "example.s3.dualstack.us-east-1.amazonaws.com"
+ );
+ test.equal(getBaseDomain("example.s3.dualstack.us-east-1.amazonaws.com"),
"example.s3.dualstack.us-east-1.amazonaws.com");
- test.equal(getDomain("example.s3.dualstack.us-east-1.amazonaws.com"),
- "example.s3.dualstack.us-east-1.amazonaws.com");
- test.equal(getDomain("s3.dualstack.us-east-1.amazonaws.com"),
+ test.equal(getBaseDomain("s3.dualstack.us-east-1.amazonaws.com"),
"s3.dualstack.us-east-1.amazonaws.com");
- test.equal(getDomain("dualstack.us-east-1.amazonaws.com"),
+ test.equal(getBaseDomain("dualstack.us-east-1.amazonaws.com"),
"dualstack.us-east-1.amazonaws.com");
- test.equal(getDomain("example.us-east-1.amazonaws.com"),
+ test.equal(getBaseDomain("example.us-east-1.amazonaws.com"),
"example.us-east-1.amazonaws.com");
- test.equal(getDomain("us-east-1.amazonaws.com"), "us-east-1.amazonaws.com");
- test.equal(getDomain("example.amazonaws.com"), "amazonaws.com");
- test.equal(getDomain("amazonaws.com"), "amazonaws.com");
+ test.equal(
+ getBaseDomain("us-east-1.amazonaws.com"),
+ "us-east-1.amazonaws.com"
+ );
+ test.equal(getBaseDomain("example.amazonaws.com"), "amazonaws.com");
+ test.equal(getBaseDomain("amazonaws.com"), "amazonaws.com");
// Edge case.
- test.equal(getDomain(""), "");
+ test.equal(getBaseDomain(""), "");
test.done();
};
« no previous file with comments | « lib/url.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld