diff --git a/browserid/static/dialog/resources/user.js b/browserid/static/dialog/resources/user.js index 75a3d51a8bb7810dac8f5f3e2efc2f88095eb845..468c0519b54f58ee2c1ff5e0d5b49d9e03c223fd 100644 --- a/browserid/static/dialog/resources/user.js +++ b/browserid/static/dialog/resources/user.js @@ -120,7 +120,7 @@ BrowserID.User = (function() { setTimeout(poll, 3000); } else if (onFailure) { - onFailure(); + onFailure(status); } }); }; diff --git a/browserid/static/dialog/test/qunit/user_unit_test.js b/browserid/static/dialog/test/qunit/user_unit_test.js index 9d2ea978fbf19616199d93b2bbd97c5f08a8d213..019f05f6ea4e708066c5bb0473e4c369019b626d 100644 --- a/browserid/static/dialog/test/qunit/user_unit_test.js +++ b/browserid/static/dialog/test/qunit/user_unit_test.js @@ -227,26 +227,49 @@ steal.plugins("jquery", "funcunit/qunit").then("/dialog/resources/user", functio stop(); }); - test("waitForUserValidation with success response", function() { - lib.waitForUserValidation("testuser@testuser.com", function() { - ok(true); + /** + * The next three tests use the mock network harness. The tests are testing + * the polling action and whether `waitForUserValidation` reacts as expected + * to the various network responses. The network harness simulates multiple + * calls to `checkUserRegistration`, attempting to simulate real use + * interaction to verify the email address, the first call to + * `checkUserRegistration` returns `pending`, the second returns the value + * stored in `registrationResponse`. + */ + test("waitForUserValidation with `complete` response", function() { + lib.waitForUserValidation("testuser@testuser.com", function(status) { + equal(status, "complete", "complete response expected"); start(); }, failure("waitForUserValidation failure")); stop(); }); - test("waitForUserValidation with mustAuth response", function() { + test("waitForUserValidation with `mustAuth` response", function() { registrationResponse = "mustAuth"; - lib.waitForUserValidation("testuser@testuser.com", function() { - ok(true); + lib.waitForUserValidation("testuser@testuser.com", function(status) { + equal(status, "mustAuth", "mustAuth response expected"); start(); }, failure("waitForUserValidation failure")); stop(); }); + test("waitForUserValidation with `noRegistration` response", function() { + registrationResponse = "noRegistration"; + + lib.waitForUserValidation("baduser@testuser.com", function(status) { + ok(false, "not expecting success") + start(); + }, function(status) { + ok(status, "noRegistration", "noRegistration response causes failure"); + start(); + }); + + stop(); + }); + test("setPassword", function() { lib.setPassword("password", function() { // XXX fill this in. @@ -417,15 +440,48 @@ steal.plugins("jquery", "funcunit/qunit").then("/dialog/resources/user", functio }); - test("waitForEmailValidation", function() { - lib.waitForEmailValidation("testemail@testemail.com", function() { - ok(true); + /** + * The next three tests use the mock network harness. The tests are testing + * the polling action and whether `waitForEmailValidation` reacts as expected + * to the various network responses. The network harness simulates multiple + * calls to `checkEmailRegistration`, attempting to simulate real use + * interaction to verify the email address, the first call to + * `checkEmailRegistration` returns `pending`, the second returns the value + * stored in `registrationResponse`. + */ + test("waitForEmailValidation `complete` response", function() { + lib.waitForEmailValidation("testemail@testemail.com", function(status) { + equal(status, "complete", "complete response expected"); + start(); + }, failure("waitForEmailValidation failure")); + + stop(); + }); + + test("waitForEmailValidation `mustAuth` response", function() { + registrationResponse = "mustAuth"; + + lib.waitForEmailValidation("testemail@testemail.com", function(status) { + equal(status, "mustAuth", "mustAuth response expected"); start(); }, failure("waitForEmailValidation failure")); stop(); }); + test("waitForEmailValidation with `noRegistration` response", function() { + registrationResponse = "noRegistration"; + + lib.waitForEmailValidation("baduser@testuser.com", function(status) { + ok(false, "not expecting success") + start(); + }, function(status) { + ok(status, "noRegistration", "noRegistration response causes failure"); + start(); + }); + + stop(); + }); test("syncEmailKeypair with successful sync", function() { syncValid = true;