summaryrefslogtreecommitdiffstats
path: root/devtools/client/storage/test/browser_storage_values.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/storage/test/browser_storage_values.js')
-rw-r--r--devtools/client/storage/test/browser_storage_values.js165
1 files changed, 165 insertions, 0 deletions
diff --git a/devtools/client/storage/test/browser_storage_values.js b/devtools/client/storage/test/browser_storage_values.js
new file mode 100644
index 000000000..920ce350e
--- /dev/null
+++ b/devtools/client/storage/test/browser_storage_values.js
@@ -0,0 +1,165 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Test to verify that the values shown in sidebar are correct
+
+// Format: [
+// <id of the table item to click> or <id array for tree item to select> or
+// null do click nothing,
+// null to skip checking value in variables view or a key value pair object
+// which will be asserted to exist in the storage sidebar,
+// true if the check is to be made in the parsed value section
+// ]
+
+"use strict";
+
+const LONG_WORD = "a".repeat(1000);
+
+const testCases = [
+ ["cs2", [
+ {name: "cs2", value: "sessionCookie"},
+ {name: "cs2.Path", value: "/"},
+ {name: "cs2.HostOnly", value: "false"},
+ {name: "cs2.HttpOnly", value: "false"},
+ {name: "cs2.Domain", value: ".example.org"},
+ {name: "cs2.Expires", value: "Session"},
+ {name: "cs2.Secure", value: "false"},
+ ]],
+ ["c1", [
+ {name: "c1", value: JSON.stringify(["foo", "Bar", {foo: "Bar"}])},
+ {name: "c1.Path", value: "/browser"},
+ {name: "c1.HostOnly", value: "true"},
+ {name: "c1.HttpOnly", value: "false"},
+ {name: "c1.Domain", value: "test1.example.org"},
+ {name: "c1.Expires", value: new Date(2000000000000).toUTCString()},
+ {name: "c1.Secure", value: "false"},
+ ]],
+ [null, [
+ {name: "c1", value: "Array"},
+ {name: "c1.0", value: "foo"},
+ {name: "c1.1", value: "Bar"},
+ {name: "c1.2", value: "Object"},
+ {name: "c1.2.foo", value: "Bar"},
+ ], true],
+ ["c_encoded", [
+ {name: "c_encoded", value: encodeURIComponent(JSON.stringify({foo: {foo1: "bar"}}))}
+ ]],
+ [null, [
+ {name: "c_encoded", value: "Object"},
+ {name: "c_encoded.foo", value: "Object"},
+ {name: "c_encoded.foo.foo1", value: "bar"}
+ ], true],
+ [["localStorage", "http://test1.example.org"]],
+ ["ls2", [
+ {name: "ls2", value: "foobar-2"}
+ ]],
+ ["ls1", [
+ {name: "ls1", value: JSON.stringify({
+ es6: "for", the: "win", baz: [0, 2, 3, {
+ deep: "down",
+ nobody: "cares"
+ }]})}
+ ]],
+ [null, [
+ {name: "ls1", value: "Object"},
+ {name: "ls1.es6", value: "for"},
+ {name: "ls1.the", value: "win"},
+ {name: "ls1.baz", value: "Array"},
+ {name: "ls1.baz.0", value: "0"},
+ {name: "ls1.baz.1", value: "2"},
+ {name: "ls1.baz.2", value: "3"},
+ {name: "ls1.baz.3", value: "Object"},
+ {name: "ls1.baz.3.deep", value: "down"},
+ {name: "ls1.baz.3.nobody", value: "cares"},
+ ], true],
+ ["ls3", [
+ {name: "ls3", "value": "http://foobar.com/baz.php"}
+ ]],
+ [null, [
+ {name: "ls3", "value": "http://foobar.com/baz.php", dontMatch: true}
+ ], true],
+ [["sessionStorage", "http://test1.example.org"]],
+ ["ss1", [
+ {name: "ss1", value: "This#is#an#array"}
+ ]],
+ [null, [
+ {name: "ss1", value: "Array"},
+ {name: "ss1.0", value: "This"},
+ {name: "ss1.1", value: "is"},
+ {name: "ss1.2", value: "an"},
+ {name: "ss1.3", value: "array"},
+ ], true],
+ ["ss2", [
+ {name: "ss2", value: "Array"},
+ {name: "ss2.0", value: "This"},
+ {name: "ss2.1", value: "is"},
+ {name: "ss2.2", value: "another"},
+ {name: "ss2.3", value: "array"},
+ ], true],
+ ["ss3", [
+ {name: "ss3", value: "Object"},
+ {name: "ss3.this", value: "is"},
+ {name: "ss3.an", value: "object"},
+ {name: "ss3.foo", value: "bar"},
+ ], true],
+ ["ss4", [
+ {name: "ss4", value: "Array"},
+ {name: "ss4.0", value: ""},
+ {name: "ss4.1", value: "array"},
+ {name: "ss4.2", value: ""},
+ {name: "ss4.3", value: "with"},
+ {name: "ss4.4", value: "empty"},
+ {name: "ss4.5", value: "items"},
+ ], true],
+ ["ss5", [
+ {name: "ss5", value: "Array"},
+ {name: "ss5.0", value: LONG_WORD},
+ {name: "ss5.1", value: LONG_WORD},
+ {name: "ss5.2", value: LONG_WORD},
+ {name: "ss5.3", value: `${LONG_WORD}&${LONG_WORD}`},
+ {name: "ss5.4", value: `${LONG_WORD}&${LONG_WORD}`},
+ ], true],
+ [["indexedDB", "http://test1.example.org", "idb1", "obj1"]],
+ [1, [
+ {name: 1, value: JSON.stringify({id: 1, name: "foo", email: "foo@bar.com"})}
+ ]],
+ [null, [
+ {name: "1.id", value: "1"},
+ {name: "1.name", value: "foo"},
+ {name: "1.email", value: "foo@bar.com"},
+ ], true],
+ [["indexedDB", "http://test1.example.org", "idb1", "obj2"]],
+ [1, [
+ {name: 1, value: JSON.stringify({
+ id2: 1, name: "foo", email: "foo@bar.com", extra: "baz"
+ })}
+ ]],
+ [null, [
+ {name: "1.id2", value: "1"},
+ {name: "1.name", value: "foo"},
+ {name: "1.email", value: "foo@bar.com"},
+ {name: "1.extra", value: "baz"},
+ ], true]
+];
+
+add_task(function* () {
+ yield openTabAndSetupStorage(MAIN_DOMAIN + "storage-complex-values.html");
+
+ gUI.tree.expandAll();
+
+ for (let item of testCases) {
+ info("clicking for item " + item);
+
+ if (Array.isArray(item[0])) {
+ yield selectTreeItem(item[0]);
+ continue;
+ } else if (item[0]) {
+ yield selectTableItem(item[0]);
+ }
+
+ yield findVariableViewProperties(item[1], item[2]);
+ }
+
+ yield finishTests();
+});