summaryrefslogtreecommitdiffstats
path: root/extensions/cookie/test/unit/test_cookies_profile_close.js
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/cookie/test/unit/test_cookies_profile_close.js')
-rw-r--r--extensions/cookie/test/unit/test_cookies_profile_close.js92
1 files changed, 92 insertions, 0 deletions
diff --git a/extensions/cookie/test/unit/test_cookies_profile_close.js b/extensions/cookie/test/unit/test_cookies_profile_close.js
new file mode 100644
index 000000000..bae6e3a59
--- /dev/null
+++ b/extensions/cookie/test/unit/test_cookies_profile_close.js
@@ -0,0 +1,92 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Test that the cookie APIs behave sanely after 'profile-before-change'.
+
+var test_generator = do_run_test();
+
+function run_test() {
+ do_test_pending();
+ test_generator.next();
+}
+
+function finish_test() {
+ do_execute_soon(function() {
+ test_generator.close();
+ do_test_finished();
+ });
+}
+
+function do_run_test() {
+ // Set up a profile.
+ let profile = do_get_profile();
+
+ // Allow all cookies.
+ Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
+
+ // Start the cookieservice.
+ Services.cookies;
+
+ // Set a cookie.
+ let uri = NetUtil.newURI("http://foo.com");
+ Services.cookies.setCookieString(uri, null, "oh=hai; max-age=1000", null);
+ let enumerator = Services.cookiemgr.enumerator;
+ do_check_true(enumerator.hasMoreElements());
+ let cookie = enumerator.getNext();
+ do_check_false(enumerator.hasMoreElements());
+
+ // Fire 'profile-before-change'.
+ do_close_profile();
+
+ // Check that the APIs behave appropriately.
+ do_check_eq(Services.cookies.getCookieString(uri, null), null);
+ do_check_eq(Services.cookies.getCookieStringFromHttp(uri, null, null), null);
+ Services.cookies.setCookieString(uri, null, "oh2=hai", null);
+ Services.cookies.setCookieStringFromHttp(uri, null, null, "oh3=hai", null, null);
+ do_check_eq(Services.cookies.getCookieString(uri, null), null);
+
+ do_check_throws(function() {
+ Services.cookiemgr.removeAll();
+ }, Cr.NS_ERROR_NOT_AVAILABLE);
+
+ do_check_throws(function() {
+ Services.cookiemgr.enumerator;
+ }, Cr.NS_ERROR_NOT_AVAILABLE);
+
+ do_check_throws(function() {
+ Services.cookiemgr.add("foo.com", "", "oh4", "hai", false, false, false, 0, {});
+ }, Cr.NS_ERROR_NOT_AVAILABLE);
+
+ do_check_throws(function() {
+ Services.cookiemgr.remove("foo.com", "", "oh4", false, {});
+ }, Cr.NS_ERROR_NOT_AVAILABLE);
+
+ do_check_throws(function() {
+ let file = profile.clone();
+ file.append("cookies.txt");
+ Services.cookiemgr.importCookies(file);
+ }, Cr.NS_ERROR_NOT_AVAILABLE);
+
+ do_check_throws(function() {
+ Services.cookiemgr.cookieExists(cookie);
+ }, Cr.NS_ERROR_NOT_AVAILABLE);
+
+ do_check_throws(function() {
+ Services.cookies.countCookiesFromHost("foo.com");
+ }, Cr.NS_ERROR_NOT_AVAILABLE);
+
+ do_check_throws(function() {
+ Services.cookies.getCookiesFromHost("foo.com", {});
+ }, Cr.NS_ERROR_NOT_AVAILABLE);
+
+ // Wait for the database to finish closing.
+ new _observer(test_generator, "cookie-db-closed");
+ yield;
+
+ // Load the profile and check that the API is available.
+ do_load_profile();
+ do_check_true(Services.cookiemgr.cookieExists(cookie));
+
+ finish_test();
+}
+