forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			147 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "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);
 | |
|   }
 | |
| }
 | 
