diff --git a/browserid/static/dialog/resources/validation.js b/browserid/static/dialog/resources/validation.js index 12b3d5c0d17120311d0572635ed4f254b2476766..371f60e4c539dfe3620507eae56ecca511510486 100644 --- a/browserid/static/dialog/resources/validation.js +++ b/browserid/static/dialog/resources/validation.js @@ -31,10 +31,48 @@ BrowserID.Validation = (function() { var valid = validateEmail(email); if (valid) { - if (!password) { - tooltip.showTooltip("#password_required"); - valid = false; - } + valid = passwordExists(password); + } + + return valid; + } + + function passwordExists(password) { + var valid = !!password; + + if (!valid) { + tooltip.showTooltip("#password_required"); + } + + return valid; + } + + function passwordLength(password) { + var valid = password && (password.length >= 8); + + if(!valid) { + tooltip.showTooltip("#password_too_short"); + } + + return valid; + } + + function validationPasswordExists(vpass) { + var valid = !!vpass; + + if(!valid) { + tooltip.showTooltip("#vpassword_required"); + } + + return valid; + } + + function passwordAndValidationPassword(pass, vpass) { + var valid = passwordExists(pass) && passwordLength(pass) && validationPasswordExists(vpass); + + if (valid && pass !== vpass) { + valid = false; + tooltip.showTooltip("#passwords_no_match"); } return valid; @@ -42,7 +80,8 @@ BrowserID.Validation = (function() { return { email: validateEmail, - emailAndPassword: validateEmailAndPassword + emailAndPassword: validateEmailAndPassword, + passwordAndValidationPassword: passwordAndValidationPassword }; }()); diff --git a/browserid/static/dialog/test/qunit/validation_unit_test.js b/browserid/static/dialog/test/qunit/validation_unit_test.js index 380c6d1b1d5cdd9c7382e16ba9599b224907be9b..5a0be014fb44be2d3ead64b13b6f5126a564d17c 100644 --- a/browserid/static/dialog/test/qunit/validation_unit_test.js +++ b/browserid/static/dialog/test/qunit/validation_unit_test.js @@ -138,6 +138,44 @@ steal.plugins("jquery", "funcunit/qunit").then("/dialog/resources/browserid", fu equal(tooltipShown, true, "empty password shows tooltip"); }); + + test("passwordAndValidationPassword with empty password", function() { + var valid = validation.passwordAndValidationPassword("", "password"); + + equal(valid, false, "empty password is invalid"); + equal(tooltipShown, true, "empty password shows tooltip"); + }); + + + test("passwordAndValidationPassword with too short password", function() { + var valid = validation.passwordAndValidationPassword("pass", "password"); + + equal(valid, false, "too short password is invalid"); + equal(tooltipShown, true, "too short password shows tooltip"); + }); + + test("passwordAndValidationPassword with empty validation password", function() { + var valid = validation.passwordAndValidationPassword("password", ""); + + equal(valid, false, "empty validation password is invalid"); + equal(tooltipShown, true, "empty validation password shows tooltip"); + }); + + + test("passwordAndValidationPassword with different validation password", function() { + var valid = validation.passwordAndValidationPassword("password", "pass"); + + equal(valid, false, "different password is invalid"); + equal(tooltipShown, true, "different password shows tooltip"); + }); + + test("passwordAndValidationPassword all valid", function() { + var valid = validation.passwordAndValidationPassword("password", "password"); + + equal(valid, true, "passwords valid"); + equal(tooltipShown, false, "tooltip not shown"); + }); + }); diff --git a/browserid/static/js/pages/verify_email_address.js b/browserid/static/js/pages/verify_email_address.js index d4355614066107055f57fcdc97d5ca1a3a152048..07642d077dc1639d25939d9e7510d3f6abc8a578 100644 --- a/browserid/static/js/pages/verify_email_address.js +++ b/browserid/static/js/pages/verify_email_address.js @@ -45,37 +45,14 @@ $("#signUpForm").remove(); } - function validate(pass, vpass) { - var valid = false; - - if(!pass) { - tooltip.showTooltip("#password_required"); - } - else if(pass.length < 8) { - tooltip.showTooltip("#password_too_short"); - } - else if(!vpass) { - tooltip.showTooltip("#vpassword_required"); - } - else if(pass !== vpass) { - tooltip.showTooltip("#passwords_no_match"); - } - else { - valid = true; - } - - return valid; - } - bid.verifyEmailAddress = function(token) { $("#signUpForm").submit(function(event) { event.preventDefault(); - var email = $("#email").val(), - pass = $("#password").val(), + var pass = $("#password").val(), vpass = $("#vpassword").val(); - var valid = validate(pass, vpass); + var valid = bid.Validation.passwordAndValidationPassword(pass, vpass); if (valid) { bid.Network.completeUserRegistration(token, pass, function onSuccess(registered) {