summaryrefslogtreecommitdiffstats
path: root/browser/components/uitour/test/browser_fxa.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/uitour/test/browser_fxa.js')
-rw-r--r--browser/components/uitour/test/browser_fxa.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/browser/components/uitour/test/browser_fxa.js b/browser/components/uitour/test/browser_fxa.js
new file mode 100644
index 000000000..36ac45a62
--- /dev/null
+++ b/browser/components/uitour/test/browser_fxa.js
@@ -0,0 +1,68 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
+
+XPCOMUtils.defineLazyModuleGetter(this, "fxAccounts",
+ "resource://gre/modules/FxAccounts.jsm");
+
+var gTestTab;
+var gContentAPI;
+var gContentWindow;
+
+function test() {
+ UITourTest();
+}
+
+registerCleanupFunction(function*() {
+ yield signOut();
+ gFxAccounts.updateAppMenuItem();
+});
+
+var tests = [
+ taskify(function* test_highlight_accountStatus_loggedOut() {
+ let userData = yield fxAccounts.getSignedInUser();
+ is(userData, null, "Not logged in initially");
+ yield showMenuPromise("appMenu");
+ yield showHighlightPromise("accountStatus");
+ let highlight = document.getElementById("UITourHighlightContainer");
+ is(highlight.getAttribute("targetName"), "accountStatus", "Correct highlight target");
+ }),
+
+ taskify(function* test_highlight_accountStatus_loggedIn() {
+ yield setSignedInUser();
+ let userData = yield fxAccounts.getSignedInUser();
+ isnot(userData, null, "Logged in now");
+ gFxAccounts.updateAppMenuItem(); // Causes a leak
+ yield showMenuPromise("appMenu");
+ yield showHighlightPromise("accountStatus");
+ let highlight = document.getElementById("UITourHighlightContainer");
+ is(highlight.popupBoxObject.anchorNode.id, "PanelUI-fxa-avatar", "Anchored on avatar");
+ is(highlight.getAttribute("targetName"), "accountStatus", "Correct highlight target");
+ }),
+];
+
+// Helpers copied from browser_aboutAccounts.js
+// watch out - these will fire observers which if you aren't careful, may
+// interfere with the tests.
+function setSignedInUser(data) {
+ if (!data) {
+ data = {
+ email: "foo@example.com",
+ uid: "1234@lcip.org",
+ assertion: "foobar",
+ sessionToken: "dead",
+ kA: "beef",
+ kB: "cafe",
+ verified: true
+ };
+ }
+ return fxAccounts.setSignedInUser(data);
+}
+
+function signOut() {
+ // we always want a "localOnly" signout here...
+ return fxAccounts.signOut(true);
+}