summaryrefslogtreecommitdiffstats
path: root/modules/libpref/test/unit/test_backupPrefFile.js
diff options
context:
space:
mode:
Diffstat (limited to 'modules/libpref/test/unit/test_backupPrefFile.js')
-rw-r--r--modules/libpref/test/unit/test_backupPrefFile.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/modules/libpref/test/unit/test_backupPrefFile.js b/modules/libpref/test/unit/test_backupPrefFile.js
new file mode 100644
index 0000000000..6624443e7c
--- /dev/null
+++ b/modules/libpref/test/unit/test_backupPrefFile.js
@@ -0,0 +1,46 @@
+/* Any copyright is dedicated to the Public Domain.
+http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests that we can create a backup of the preferences state to
+ * a file asynchronously.
+ */
+add_task(async function test_backupPrefFile() {
+ // Create a backup of the preferences state to a file.
+ Services.prefs.setBoolPref("test.backup", true);
+
+ let backupFilePath = PathUtils.join(PathUtils.tempDir, "prefs-backup.js");
+ let backupFile = await IOUtils.getFile(backupFilePath);
+ await Services.prefs.backupPrefFile(backupFile);
+
+ // Verify that the backup file was created and contains the expected content.
+ let backupContent = await IOUtils.read(backupFilePath, { encoding: "utf-8" });
+
+ let sawTestValue = false;
+
+ // Now parse the backup file and verify that it contains the expected
+ // preference value. We'll not worry about any of the other preferences.
+ let observer = {
+ onStringPref() {},
+ onIntPref() {},
+ onBoolPref(kind, name, value, _isSticky, _isLocked) {
+ if (name == "test.backup" && value) {
+ sawTestValue = true;
+ }
+ },
+ onError(message) {
+ Assert.ok(false, "Error while parsing backup file: " + message);
+ },
+ };
+ Services.prefs.parsePrefsFromBuffer(backupContent, observer);
+
+ Assert.ok(
+ sawTestValue,
+ "The backup file contains the expected preference value."
+ );
+
+ // Clean up the backup file.
+ await IOUtils.remove(backupFilePath);
+});