diff --git a/resources/static/common/js/modules/interaction_data.js b/resources/static/common/js/modules/interaction_data.js index 11379e4df87faddcb1909f8e6bab23b66614c06e..fef84018e484fd4d7efb34f11a480925cec57b9a 100644 --- a/resources/static/common/js/modules/interaction_data.js +++ b/resources/static/common/js/modules/interaction_data.js @@ -79,7 +79,11 @@ BrowserID.Modules.InteractionData = (function() { user_confirmed: "user.user_confirmed", email_staged: "user.email_staged", email_confirmed: "user.email_confrimed", - notme: "user.logout" + notme: "user.logout", + enter_password: "authenticate.enter_password", + password_submit: "authenticate.password_submitted", + authentication_success: "authenticate.password_success", + authentication_fail: "authenticate.password_fail" }; function getKPIName(msg, data) { @@ -204,7 +208,7 @@ BrowserID.Modules.InteractionData = (function() { self.initialEventStream = null; self.samplesBeingStored = true; - + } function indexOfEvent(eventStream, eventName) { diff --git a/resources/static/dialog/js/misc/helpers.js b/resources/static/dialog/js/misc/helpers.js index ea2157153159bbc700989f3e730b1c07ab0c21e9..4c3f150a0706a3d028c443aeec2e664465a875dd 100644 --- a/resources/static/dialog/js/misc/helpers.js +++ b/resources/static/dialog/js/misc/helpers.js @@ -62,9 +62,14 @@ function authenticateUser(email, pass, callback) { var self=this; + self.publish("password_submit"); user.authenticate(email, pass, function (authenticated) { - if (!authenticated) { + if (authenticated) { + self.publish("authentication_success"); + } + else { + self.publish("authentication_fail"); tooltip.showTooltip("#cannot_authenticate"); } complete(callback, authenticated); diff --git a/resources/static/test/cases/dialog/js/misc/helpers.js b/resources/static/test/cases/dialog/js/misc/helpers.js index edc1fa98a8a5417630559085b2218cc2ee9a66fc..5e1a5638d7276f88beca53442d84c81072622457 100644 --- a/resources/static/test/cases/dialog/js/misc/helpers.js +++ b/resources/static/test/cases/dialog/js/misc/helpers.js @@ -18,6 +18,8 @@ mediator = bid.Mediator, errorCB, expectedError = testHelpers.expectedXHRFailure, + expectedMessage = testHelpers.expectedMessage, + unexpectedMessage = testHelpers.unexpectedMessage, badError = testHelpers.unexpectedXHRFailure; var controllerMock = { @@ -29,22 +31,7 @@ } }; - function expectedMessage(message, expectedFields) { - mediator.subscribe(message, function(m, info) { - equal(m, message, "correct message: " + message); - - testHelpers.testObjectValuesEqual(info, expectedFields); - }); - } - - - function unexpectedMessage(message) { - mediator.subscribe(message, function(m, info) { - ok(false, "close should have never been called"); - }); - } - - module("resources/helpers", { + module("dialog/js/misc/helpers", { setup: function() { testHelpers.setup(); errorCB = null; @@ -78,10 +65,12 @@ xhr.useResult("ajaxError"); storage.addEmail("registered@testuser.com", {}); - dialogHelpers.getAssertion.call(controllerMock, "registered@testuser.com", testHelpers.unexpectedSuccess); + dialogHelpers.getAssertion.call(controllerMock, "registered@testuser.com", testHelpers.expectedFailure); }); asyncTest("authenticateUser happy case", function() { + expectedMessage("password_submit"); + expectedMessage("authentication_success"); dialogHelpers.authenticateUser.call(controllerMock, "testuser@testuser.com", "password", function(authenticated) { equal(authenticated, true, "user is authenticated"); start(); @@ -90,6 +79,8 @@ asyncTest("authenticateUser invalid credentials", function() { xhr.useResult("invalid"); + expectedMessage("password_submit"); + expectedMessage("authentication_fail"); dialogHelpers.authenticateUser.call(controllerMock, "testuser@testuser.com", "password", function(authenticated) { equal(authenticated, false, "user is not authenticated"); start(); @@ -100,6 +91,7 @@ errorCB = expectedError; xhr.useResult("ajaxError"); + expectedMessage("password_submit"); dialogHelpers.authenticateUser.call(controllerMock, "testuser@testuser.com", "password", testHelpers.unexpectedSuccess); }); @@ -209,7 +201,7 @@ }); asyncTest("resetPassword happy case", function() { - expectedMessage("password_reset", { + expectedMessage("reset_password_staged", { email: "registered@testuser.com" }); diff --git a/resources/static/test/testHelpers/helpers.js b/resources/static/test/testHelpers/helpers.js index 66868076a8c8cd477b25b2db0e5e1e6023595037..c9f9329442d808d31b1e158ccb23c079519d1bd1 100644 --- a/resources/static/test/testHelpers/helpers.js +++ b/resources/static/test/testHelpers/helpers.js @@ -27,7 +27,7 @@ BrowserID.TestHelpers = (function() { if(calls[msg]) { throw msg + " triggered more than once"; } - calls[msg] = true; + calls[msg] = info || true; cb && cb.apply(null, arguments); })); @@ -112,13 +112,43 @@ BrowserID.TestHelpers = (function() { register: register, isTriggered: function(message) { - return calls[message]; + return message in calls; }, - testTriggered: function(message) { - equal(calls[message], true, message + " was triggered"); + testTriggered: function(message, expectedFields) { + ok(message in calls, message + " was triggered"); + if (expectedFields) this.testObjectValuesEqual(calls[message], expectedFields); }, + expectedMessage: function(message, expectedFields) { + // keep track of the original start function. When the start function is + // called, call the proxy start function and then the original start + // function. This allows proxy start functions to be chained and multiple + // expectedMessages to be called. + start = function(origStart) { + TestHelpers.testTriggered(message, expectedFields); + start = origStart; + start(); + }.bind(null, start); + + register(message); + }, + + unexpectedMessage: function(message) { + // keep track of the original start function. When the start function is + // called, call the proxy start function and then the original start + // function. This allows proxy start functions to be chained and multiple + // expectedMessages to be called. + start = function(origStart) { + equal(TestHelpers.isTriggered(message), false, message + " was not triggered"); + start = origStart; + start(); + + }.bind(null, start); + register(message); + }, + + errorVisible: function() { return screens.error.visible; },