Bug 1058438 - Add additional tests for disabledHost APIs with nonascii characters in URLs. r=MattN draft
authorSaad Quadri <saad@saadquadri.com>
Tue, 09 Aug 2016 10:14:53 -0700
changeset 398744 92c556c14aeee988d30985ac162493e0212b2909
parent 398743 398c07c36a8e7ccf7aad600c0487a71a04cab266
child 398745 9c6ec4ff8b286f79187633134b53819a701ae186
push id25613
push usersaad@saadquadri.com
push dateTue, 09 Aug 2016 17:16:57 +0000
reviewersMattN
bugs1058438
milestone51.0a1
Bug 1058438 - Add additional tests for disabledHost APIs with nonascii characters in URLs. r=MattN MozReview-Commit-ID: EsN6FNCzbLk
toolkit/components/passwordmgr/test/unit/test_disabled_hosts.js
--- a/toolkit/components/passwordmgr/test/unit/test_disabled_hosts.js
+++ b/toolkit/components/passwordmgr/test/unit/test_disabled_hosts.js
@@ -138,20 +138,60 @@ add_task(function test_rememberSignons()
 
   // Clean up.
   Services.logins.setLoginSavingEnabled(hostname2, true);
   LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(),
                                           []);
 });
 
 /**
- * Tests storing disabled hosts containing non-ASCII characters.
+ * Tests storing disabled hosts with non-ASCII characters where IDN is supported.
  */
-add_task(function* test_storage_setLoginSavingEnabled_nonascii()
+add_task(function* test_storage_setLoginSavingEnabled_nonascii_IDN_is_supported()
 {
-  let hostname = "http://" + String.fromCharCode(355) + ".example.com";
+  let hostname = "http://大.net";
+  let encoding = "http://xn--pss.net";
+
+  // Test adding disabled host with nonascii URL (http://大.net).
   Services.logins.setLoginSavingEnabled(hostname, false);
+  yield* LoginTestUtils.reloadData();
+  Assert.equal(Services.logins.getLoginSavingEnabled(hostname), false);
+  Assert.equal(Services.logins.getLoginSavingEnabled(encoding), false);
+  LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(), [hostname]);
 
+  LoginTestUtils.clearData();
+
+  // Test adding disabled host with IDN ("http://xn--pss.net").
+  Services.logins.setLoginSavingEnabled(encoding, false);
   yield* LoginTestUtils.reloadData();
-  LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(),
-                                          [hostname]);
+  Assert.equal(Services.logins.getLoginSavingEnabled(hostname), false);
+  Assert.equal(Services.logins.getLoginSavingEnabled(encoding), false);
+  LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(), [hostname]);
+
   LoginTestUtils.clearData();
 });
+
+/**
+ * Tests storing disabled hosts with non-ASCII characters where IDN is not supported.
+ */
+add_task(function* test_storage_setLoginSavingEnabled_nonascii_IDN_not_supported()
+{
+  let hostname = "http://√.com";
+  let encoding = "http://xn--19g.com";
+
+  // Test adding disabled host with nonascii URL (http://√.com).
+  Services.logins.setLoginSavingEnabled(hostname, false);
+  yield* LoginTestUtils.reloadData();
+  Assert.equal(Services.logins.getLoginSavingEnabled(hostname), false);
+  Assert.equal(Services.logins.getLoginSavingEnabled(encoding), false);
+  LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(), [encoding]);
+
+  LoginTestUtils.clearData();
+
+  // Test adding disabled host with IDN ("http://xn--19g.com").
+  Services.logins.setLoginSavingEnabled(encoding, false);
+  yield* LoginTestUtils.reloadData();
+  Assert.equal(Services.logins.getLoginSavingEnabled(hostname), false);
+  Assert.equal(Services.logins.getLoginSavingEnabled(encoding), false);
+  LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(), [encoding]);
+
+  LoginTestUtils.clearData();
+});