netwerk/test/unit/test_idnservice.js

changeset 0
6474c204b198
     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 +}

mercurial