From 02f1a9077b40ffc534a7282ad0e8203e94a1ebd4 Mon Sep 17 00:00:00 2001
From: Shane Tomlinson <stomlinson@mozilla.com>
Date: Sat, 30 Jun 2012 18:17:13 +0100
Subject: [PATCH] Fix the front end tests not completing.

The changes to wait for entropy from the backend were not expected on the front end tests.  Now before trying to get a certificate for a primary, make sure "session_context" has been called.
---
 .../js/modules/provision_primary_user.js      | 61 +++++++++++--------
 resources/static/test/mocks/provisioning.js   |  4 +-
 2 files changed, 37 insertions(+), 28 deletions(-)

diff --git a/resources/static/test/cases/dialog/js/modules/provision_primary_user.js b/resources/static/test/cases/dialog/js/modules/provision_primary_user.js
index f5464f916..9a54c32b0 100644
--- a/resources/static/test/cases/dialog/js/modules/provision_primary_user.js
+++ b/resources/static/test/cases/dialog/js/modules/provision_primary_user.js
@@ -10,6 +10,7 @@
       bid = BrowserID,
       storage = bid.Storage,
       user = bid.User,
+      network = bid.Network,
       register = bid.TestHelpers.register,
       xhr = bid.Mocks.xhr,
       mediator = bid.Mediator,
@@ -55,47 +56,53 @@
   });
 
   asyncTest("create controller with all fields specified, user authenticated with primary - expected user provisioned", function() {
-    provisioning.setStatus(provisioning.AUTHENTICATED);
+    network.withContext(function() {
+      provisioning.setStatus(provisioning.AUTHENTICATED);
 
-    mediator.subscribe("primary_user_provisioned", function(msg, info) {
-      ok(info.assertion, "assertion available");
-      equal(info.email, "unregistered@testuser.com", "email available");
-      start();
-    });
+      mediator.subscribe("primary_user_provisioned", function(msg, info) {
+        ok(info.assertion, "assertion available");
+        equal(info.email, "unregistered@testuser.com", "email available");
+        start();
+      });
 
-    createController({
-      email: "unregistered@testuser.com",
-      auth: "https://auth_url",
-      prov: "https://prov_url"
+      createController({
+        email: "unregistered@testuser.com",
+        auth: "https://auth_url",
+        prov: "https://prov_url"
+      });
     });
   });
 
   asyncTest("create controller with all fields specified, user not authenticated with primary - expected user must authenticate", function() {
-    provisioning.setStatus(provisioning.NOT_AUTHENTICATED);
+    network.withContext(function() {
+      provisioning.setStatus(provisioning.NOT_AUTHENTICATED);
 
-    mediator.subscribe("primary_user_unauthenticated", function(msg, info) {
-      equal(info.auth_url, "https://auth_url", "primary information fetched");
-      start();
-    });
+      mediator.subscribe("primary_user_unauthenticated", function(msg, info) {
+        equal(info.auth_url, "https://auth_url", "primary information fetched");
+        start();
+      });
 
-    createController({
-      email: "unregistered@testuser.com",
-      auth: "https://auth_url",
-      prov: "https://prov_url"
+      createController({
+        email: "unregistered@testuser.com",
+        auth: "https://auth_url",
+        prov: "https://prov_url"
+      });
     });
   });
 
   asyncTest("create controller with missing auth/prov, user authenticated with primary - expected to request provisioning info from backend, user provisioned", function() {
-    xhr.useResult("primary");
-    provisioning.setStatus(provisioning.AUTHENTICATED);
+    network.withContext(function() {
+      xhr.useResult("primary");
+      provisioning.setStatus(provisioning.AUTHENTICATED);
 
-    mediator.subscribe("primary_user_provisioned", function(msg, info) {
-      equal(info.email, "unregistered@testuser.com", "user is provisioned after requesting info from backend");
-      start();
-    });
+      mediator.subscribe("primary_user_provisioned", function(msg, info) {
+        equal(info.email, "unregistered@testuser.com", "user is provisioned after requesting info from backend");
+        start();
+      });
 
-    createController({
-      email: "unregistered@testuser.com"
+      createController({
+        email: "unregistered@testuser.com"
+      });
     });
   });
 }());
diff --git a/resources/static/test/mocks/provisioning.js b/resources/static/test/mocks/provisioning.js
index a752881df..c6413958b 100644
--- a/resources/static/test/mocks/provisioning.js
+++ b/resources/static/test/mocks/provisioning.js
@@ -34,11 +34,13 @@ BrowserID.Mocks.Provisioning = (function() {
       if (cb) cb();
     }
     else if(newStatus === Provisioning.AUTHENTICATED) {
-      if (!keypair)
+      if (!keypair) {
         jwcrypto.generateKeypair({algorithm: "DS", keysize: 256}, function(err, kp) {
           keypair = kp;
           if (cb) cb();
         });
+      }
+      else if (cb) cb();
     }
   };
 
-- 
GitLab