"use strict";
function run_test() {
var tld = Services.eTLD;
Assert.equal(tld.getPublicSuffixFromHost(
"localhost"),
"localhost");
Assert.equal(tld.getPublicSuffixFromHost(
"localhost."),
"localhost.");
Assert.equal(tld.getPublicSuffixFromHost(
"domain.com"),
"com");
Assert.equal(tld.getPublicSuffixFromHost(
"domain.com."),
"com.");
Assert.equal(tld.getPublicSuffixFromHost(
"domain.co.uk"),
"co.uk");
Assert.equal(tld.getPublicSuffixFromHost(
"domain.co.uk."),
"co.uk.");
Assert.equal(tld.getPublicSuffixFromHost(
"co.uk"),
"co.uk");
Assert.equal(tld.getBaseDomainFromHost(
"domain.co.uk"),
"domain.co.uk");
Assert.equal(tld.getBaseDomainFromHost(
"domain.co.uk."),
"domain.co.uk.");
try {
tld.getPublicSuffixFromHost(
"");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS);
}
try {
tld.getBaseDomainFromHost(
"domain.co.uk", 1);
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS);
}
try {
tld.getBaseDomainFromHost(
"co.uk");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS);
}
try {
tld.getBaseDomainFromHost(
"");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS);
}
try {
tld.getPublicSuffixFromHost(
"1.2.3.4");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
}
try {
tld.getPublicSuffixFromHost(
"2010:836B:4179::836B:4179");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
}
try {
tld.getPublicSuffixFromHost(
"3232235878");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
}
try {
tld.getPublicSuffixFromHost(
"::ffff:192.9.5.5");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
}
try {
tld.getPublicSuffixFromHost(
"::1");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
}
// Check IP addresses with trailing dot as well, Necko sometimes accepts
// those (depending on operating system, see bug 380543)
try {
tld.getPublicSuffixFromHost(
"127.0.0.1.");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
}
try {
tld.getPublicSuffixFromHost(
"::ffff:127.0.0.1.");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_HOST_IS_IP_ADDRESS);
}
// check normalization: output should be consistent with
// nsIURI::GetAsciiHost(), i.e. lowercased and ASCII/ACE encoded
var uri = Services.io.newURI(
"http://b\u00FCcher.co.uk");
Assert.equal(tld.getBaseDomain(uri),
"xn--bcher-kva.co.uk");
Assert.equal(
tld.getBaseDomainFromHost(
"b\u00FCcher.co.uk"),
"xn--bcher-kva.co.uk"
);
Assert.equal(tld.getPublicSuffix(uri),
"co.uk");
Assert.equal(tld.getPublicSuffixFromHost(
"b\u00FCcher.co.uk"),
"co.uk");
// check that malformed hosts are rejected as invalid args
try {
tld.getBaseDomainFromHost(
"domain.co.uk..");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
}
try {
tld.getBaseDomainFromHost(
"domain.co..uk");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
}
try {
tld.getBaseDomainFromHost(
".domain.co.uk");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
}
try {
tld.getBaseDomainFromHost(
".domain.co.uk");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
}
try {
tld.getBaseDomainFromHost(
".");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
}
try {
tld.getBaseDomainFromHost(
"..");
do_throw(
"this should fail");
}
catch (e) {
Assert.equal(e.result, Cr.NS_ERROR_ILLEGAL_VALUE);
}
}