summaryrefslogtreecommitdiffstats
path: root/dom/quota/test/xpcshell/test_originMismatch.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/quota/test/xpcshell/test_originMismatch.js')
-rw-r--r--dom/quota/test/xpcshell/test_originMismatch.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/dom/quota/test/xpcshell/test_originMismatch.js b/dom/quota/test/xpcshell/test_originMismatch.js
new file mode 100644
index 0000000000..23186977b2
--- /dev/null
+++ b/dom/quota/test/xpcshell/test_originMismatch.js
@@ -0,0 +1,75 @@
+/**
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+/**
+ * This test is mainly to verify that temporary storage initialization should
+ * succeed while there is an origin directory that has an inconsistency between
+ * its directory name and the origin name in its directory metadata file.
+ */
+
+async function testSteps() {
+ const packages = ["originMismatch_profile", "defaultStorageDirectory_shared"];
+
+ info("Clearing");
+
+ let request = clear();
+ await requestFinished(request);
+
+ info("Verifying storage");
+
+ verifyStorage(packages, "beforeInstall");
+
+ info("Installing package");
+
+ // The profile contains:
+ // - storage.sqlite (v2_3)
+ // (A) Verify we are okay while the directory that we want to restore has
+ // already existed.
+ // - storage/default/http+++www.example.com/.metadata-v2
+ // (origin: http://www.example.com.)
+ // - storage/default/http+++www.example.com/cache/.padding
+ // - storage/default/http+++www.example.com./
+ // (B) Verify restoring origin directory succeed.
+ // - storage/default/http+++www.example.org/.metadata-v2
+ // (origin: http://www.example.org.)
+ // - storage/default/http+++www.example.org/cache/.padding
+ //
+ // ToDo: Test case like:
+ // - storage/default/http+++www.example.org(1)/.metadata-v2
+ // (origin: http://www.example.org)
+ // - storage/default/http+++www.example.org/
+ //
+ // - storage/default/http+++www.foo.com/.metadata-v2
+ // (origin: http://www.bar.com)
+ installPackages(packages);
+
+ info("Verifying storage");
+
+ verifyStorage(packages, "afterInstall");
+
+ info("Initializing storage");
+
+ request = init();
+ await requestFinished(request);
+
+ // ToDo: Remove this code once we support unknown directories in respository
+ // (bug 1594075).
+ let invalidDir = getRelativeFile("storage/default/invalid+++example.com");
+ invalidDir.remove(true);
+ invalidDir = getRelativeFile("storage/temporary/invalid+++example.com");
+ invalidDir.remove(true);
+
+ info("Initializing temporary storage");
+
+ request = initTemporaryStorage();
+ await requestFinished(request);
+
+ info("Verifying storage");
+
+ verifyStorage(packages, "afterInitTemporaryStorage");
+
+ request = clear();
+ await requestFinished(request);
+}