'use strict'; require('../common'); describe('Prompt', function () { // TODO: this does not test the prompt() fallback, since that isn't available // in nodejs -> replace the prompt in the "page" template with a modal describe('requestPassword & getPassword', function () { this.timeout(30000); before(function () { $.PrivateBin.Model.reset(); cleanup(); }); jsc.property( 'returns the password fed into the dialog', 'string', function (password) { password = password.replace(/\r+/g, ''); var clean = jsdom('', {url: 'ftp://example.com/?0'}); $('body').html( '<div id="passwordmodal" class="modal fade" role="dialog">' + '<div class="modal-dialog"><div class="modal-content">' + '<div class="modal-body"><form id="passwordform" role="form">' + '<div class="form-group"><input id="passworddecrypt" ' + 'type="password" class="form-control" placeholder="Enter ' + 'password"></div><button type="submit">Decrypt</button>' + '</form></div></div></div></div>' ); $.PrivateBin.Model.init(); $.PrivateBin.Prompt.init(); $.PrivateBin.Prompt.requestPassword(); $('#passworddecrypt').val(password); $('#passwordform').submit(); var result = $.PrivateBin.Prompt.getPassword(); $.PrivateBin.Model.reset(); clean(); return result === password; } ); }); });