1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/netwerk/test/unit/test_idnservice.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,56 @@ 1.4 +// Tests nsIIDNService 1.5 + 1.6 +var reference = [ 1.7 + // The 3rd element indicates whether the second element 1.8 + // is ACE-encoded 1.9 + ["asciihost", "asciihost", false], 1.10 + ["b\u00FCcher", "xn--bcher-kva", true] 1.11 + ]; 1.12 + 1.13 +function run_test() { 1.14 + var idnService = Components.classes["@mozilla.org/network/idn-service;1"] 1.15 + .getService(Components.interfaces.nsIIDNService); 1.16 + 1.17 + for (var i = 0; i < reference.length; ++i) { 1.18 + dump("Testing " + reference[i] + "\n"); 1.19 + // We test the following: 1.20 + // - Converting UTF-8 to ACE and back gives us the expected answer 1.21 + // - Converting the ASCII string UTF-8 -> ACE leaves the string unchanged 1.22 + // - isACE returns true when we expect it to (third array elem true) 1.23 + do_check_eq(idnService.convertUTF8toACE(reference[i][0]), reference[i][1]); 1.24 + do_check_eq(idnService.convertUTF8toACE(reference[i][1]), reference[i][1]); 1.25 + do_check_eq(idnService.convertACEtoUTF8(reference[i][1]), reference[i][0]); 1.26 + do_check_eq(idnService.isACE(reference[i][1]), reference[i][2]); 1.27 + } 1.28 + 1.29 + // add an IDN whitelist pref 1.30 + var pbi = Components.classes["@mozilla.org/preferences-service;1"] 1.31 + .getService(Components.interfaces.nsIPrefBranch); 1.32 + pbi.setBoolPref("network.IDN.whitelist.es", true); 1.33 + 1.34 + // After bug 722299, set network.IDN.restriction_profile to "ASCII" in 1.35 + // order not to change the behaviour of non-whitelisted TLDs 1.36 + var oldProfile = pbi.getCharPref("network.IDN.restriction_profile", "moderate"); 1.37 + pbi.setCharPref("network.IDN.restriction_profile", "ASCII"); 1.38 + 1.39 + // check convertToDisplayIDN against the whitelist 1.40 + var isASCII = {}; 1.41 + do_check_eq(idnService.convertToDisplayIDN("b\u00FCcher.es", isASCII), "b\u00FCcher.es"); 1.42 + do_check_eq(isASCII.value, false); 1.43 + do_check_eq(idnService.convertToDisplayIDN("xn--bcher-kva.es", isASCII), "b\u00FCcher.es"); 1.44 + do_check_eq(isASCII.value, false); 1.45 + do_check_eq(idnService.convertToDisplayIDN("b\u00FCcher.uk", isASCII), "xn--bcher-kva.uk"); 1.46 + do_check_eq(isASCII.value, true); 1.47 + do_check_eq(idnService.convertToDisplayIDN("xn--bcher-kva.uk", isASCII), "xn--bcher-kva.uk"); 1.48 + do_check_eq(isASCII.value, true); 1.49 + 1.50 + // check ACE TLD's are handled by the whitelist 1.51 + pbi.setBoolPref("network.IDN.whitelist.xn--k-dha", true); 1.52 + do_check_eq(idnService.convertToDisplayIDN("test.\u00FCk", isASCII), "test.\u00FCk"); 1.53 + do_check_eq(isASCII.value, false); 1.54 + do_check_eq(idnService.convertToDisplayIDN("test.xn--k-dha", isASCII), "test.\u00FCk"); 1.55 + do_check_eq(isASCII.value, false); 1.56 + 1.57 + // reset pref to default 1.58 + pbi.setCharPref("network.IDN.restriction_profile", oldProfile); 1.59 +}