diff --git a/resources/static/dialog/js/modules/actions.js b/resources/static/dialog/js/modules/actions.js index 02c6b5748c5eb989656bf8de8e61429172742e91..cca38668e7fb4b24e054c4bc3ccd8646e4b17ade 100644 --- a/resources/static/dialog/js/modules/actions.js +++ b/resources/static/dialog/js/modules/actions.js @@ -17,18 +17,19 @@ BrowserID.Modules.Actions = (function() { onsuccess, onerror; - function startService(name, options) { + function startService(name, options, reported_service_name) { + mediator.publish("service", { name: reported_service_name || name }); + // Only one service outside of the main dialog allowed. if(runningService) { serviceManager.stop(runningService); } + var module = serviceManager.start(name, options); if(module) { runningService = name; } - mediator.publish("service", { name: name }); - return module; } @@ -98,7 +99,7 @@ BrowserID.Modules.Actions = (function() { }, doResetPassword: function(info) { - startService("set_password", _.extend(info, { password_reset: true })); + startService("set_password", _.extend(info, { password_reset: true }), "reset_password"); }, doStageResetPassword: function(info) { diff --git a/resources/static/test/cases/dialog/js/modules/actions.js b/resources/static/test/cases/dialog/js/modules/actions.js index 7c44e045bcdeaa795310336ccc2db0452eea215b..db8682217aa149659dfc14b55b68b8782902e6c0 100644 --- a/resources/static/test/cases/dialog/js/modules/actions.js +++ b/resources/static/test/cases/dialog/js/modules/actions.js @@ -9,6 +9,7 @@ var bid = BrowserID, user = bid.User, storage = bid.Storage, + mediator = bid.Mediator, controller, el, testHelpers = bid.TestHelpers, @@ -19,17 +20,25 @@ controller.start(config); } - function testActionStartsModule(actionName, actionOptions, expectedModule) { + function testActionStartsModule(actionName, actionOptions, expectedModule, expectedServiceName) { createController({ ready: function() { - var error; + var error, + reportedServiceName; + + // Check that KPI service reporting is acting as expected. + mediator.subscribe("service", function(msg, data) { + reportedServiceName = data.name; + }); + try { controller[actionName](actionOptions); } catch(e) { error = e; } - equal(error, "module not registered for " + expectedModule, "correct service started"); + equal(error, "module not registered for " + expectedModule, "correct module started"); + equal(reportedServiceName, expectedServiceName || expectedModule, "correct service name"); start(); } }); @@ -116,7 +125,7 @@ }); asyncTest("doResetPassword - call the set_password controller with reset_password true", function() { - testActionStartsModule('doResetPassword', { email: TEST_EMAIL }, "set_password"); + testActionStartsModule('doResetPassword', { email: TEST_EMAIL }, "set_password", "reset_password"); }); asyncTest("doStageResetPassword - trigger reset_password_staged", function() {