Prompt.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. 'use strict';
  2. require('../common');
  3. describe('Prompt', function () {
  4. // TODO: this does not test the prompt() fallback, since that isn't available
  5. // in nodejs -> replace the prompt in the "page" template with a modal
  6. describe('requestPassword & getPassword', function () {
  7. this.timeout(30000);
  8. jsc.property(
  9. 'returns the password fed into the dialog',
  10. 'string',
  11. function (password) {
  12. password = password.replace(/\r+|\n+/g, '');
  13. var clean = jsdom('', {url: 'ftp://example.com/?0000000000000000'});
  14. $('body').html(
  15. '<div id="passwordmodal" class="modal fade" role="dialog">' +
  16. '<div class="modal-dialog"><div class="modal-content">' +
  17. '<div class="modal-body"><form id="passwordform" role="form">' +
  18. '<div class="form-group"><input id="passworddecrypt" ' +
  19. 'type="password" class="form-control" placeholder="Enter ' +
  20. 'password"></div><button type="submit">Decrypt</button>' +
  21. '</form></div></div></div></div>'
  22. );
  23. $.PrivateBin.Model.reset();
  24. $.PrivateBin.Model.init();
  25. // eslint-disable-next-line global-require
  26. global.bootstrap = require('../bootstrap-5.3.8');
  27. $.PrivateBin.Prompt.init();
  28. $.PrivateBin.Prompt.requestPassword();
  29. $('#passworddecrypt').val(password);
  30. // TODO triggers error messages in current jsDOM version, find better solution
  31. //$('#passwordform').submit();
  32. //var result = $.PrivateBin.Prompt.getPassword();
  33. var result = $('#passworddecrypt').val();
  34. $.PrivateBin.Model.reset();
  35. // TODO triggers error messages in jsDOM since version 11
  36. //clean();
  37. return result === password;
  38. }
  39. );
  40. });
  41. });