2017-12-15 14:20:51 +08:00
|
|
|
'use strict';
|
2018-01-06 16:26:10 +08:00
|
|
|
require('../common');
|
2017-12-15 14:20:51 +08:00
|
|
|
|
|
|
|
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 () {
|
2018-05-01 02:01:38 +08:00
|
|
|
$.PrivateBin.Model.reset();
|
2017-12-15 14:20:51 +08:00
|
|
|
cleanup();
|
|
|
|
});
|
|
|
|
|
|
|
|
jsc.property(
|
|
|
|
'returns the password fed into the dialog',
|
|
|
|
'string',
|
|
|
|
function (password) {
|
|
|
|
password = password.replace(/\r+/g, '');
|
2018-05-01 02:01:38 +08:00
|
|
|
var clean = jsdom('', {url: 'ftp://example.com/?0'});
|
2017-12-15 14:20:51 +08:00
|
|
|
$('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>' +
|
2018-05-01 02:01:38 +08:00
|
|
|
'</form></div></div></div></div>'
|
2017-12-15 14:20:51 +08:00
|
|
|
);
|
|
|
|
$.PrivateBin.Model.init();
|
|
|
|
$.PrivateBin.Prompt.init();
|
|
|
|
$.PrivateBin.Prompt.requestPassword();
|
|
|
|
$('#passworddecrypt').val(password);
|
|
|
|
$('#passwordform').submit();
|
|
|
|
var result = $.PrivateBin.Prompt.getPassword();
|
2018-05-01 02:01:38 +08:00
|
|
|
$.PrivateBin.Model.reset();
|
2017-12-15 14:20:51 +08:00
|
|
|
clean();
|
2018-01-06 14:17:33 +08:00
|
|
|
return result === password;
|
2017-12-15 14:20:51 +08:00
|
|
|
}
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|