reset-password.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. (function () {
  2. 'use strict';
  3. var app = null;
  4. QUnit.acceptance("Reset Forgotten Password", {
  5. beforeEach: function() {
  6. app = initTestMisago();
  7. app.context.CHANGE_PASSWORD_API = '/test-api/auth/change-password/';
  8. var mount = document.getElementById('component-mount');
  9. m.mount(mount, app.component('forgotten-password:reset-password'));
  10. },
  11. afterEach: function() {
  12. app.destroy();
  13. }
  14. });
  15. QUnit.test('submit empty form', function(assert) {
  16. var done = assert.async();
  17. click('#component-mount .btn-primary');
  18. onElement('.alerts .alert-danger', function() {
  19. assert.equal(getAlertMessage(), "Enter new password.",
  20. "form raised alert about empty input.");
  21. done();
  22. });
  23. });
  24. QUnit.test('submit too short password', function(assert) {
  25. var done = assert.async();
  26. fillIn('#component-mount input[type="password"]', 'no');
  27. click('#component-mount .btn-primary');
  28. onElement('.alerts .alert-danger', function() {
  29. assert.equal(
  30. getAlertMessage(),
  31. "Valid password must be at least 5 characters long.",
  32. "form raised alert about invalid new password.");
  33. done();
  34. });
  35. });
  36. QUnit.test('with backend banned', function(assert) {
  37. $.mockjax({
  38. url: app.context.CHANGE_PASSWORD_API,
  39. status: 403,
  40. responseText: {
  41. 'ban': {
  42. 'expires_on': null,
  43. 'message': {
  44. 'plain': 'This is test ban.',
  45. 'html': '<p>This is test ban.</p>'
  46. }
  47. }
  48. }
  49. });
  50. var done = assert.async();
  51. fillIn('#component-mount input[type="password"]', 'L0r3m1p5um');
  52. click('#component-mount .btn-primary');
  53. onElement('.page-error-banned .message-body', function() {
  54. assert.ok(true, "Permission denied error page was displayed.");
  55. assert.equal(
  56. getElementText('.page .message-body .lead'),
  57. "This is test ban.",
  58. "Banned page displayed ban message.");
  59. done();
  60. });
  61. });
  62. QUnit.test('with backend error', function(assert) {
  63. var message = "Some evil rejection happened!";
  64. $.mockjax({
  65. url: app.context.CHANGE_PASSWORD_API,
  66. status: 400,
  67. responseText: {
  68. 'detail': message
  69. }
  70. });
  71. var done = assert.async();
  72. fillIn('#component-mount input[type="password"]', 'L0r3m1p5um');
  73. click('#component-mount .btn-primary');
  74. onElement('.alerts .alert-danger', function() {
  75. assert.equal(getAlertMessage(), message,
  76. "reset password form raised alert returned by backend.");
  77. done();
  78. });
  79. });
  80. QUnit.test('with success', function(assert) {
  81. $.mockjax({
  82. url: app.context.CHANGE_PASSWORD_API,
  83. status: 200,
  84. responseText: {
  85. 'username': 'Bob',
  86. 'email': 'bob@boberson.com'
  87. }
  88. });
  89. var done = assert.async();
  90. fillIn('#component-mount input[type="password"]', 'L0r3m1p5um');
  91. click('#component-mount .btn-primary');
  92. onElement('.page-forgotten-password-done .message-body p', function() {
  93. assert.equal(
  94. getElementText('.message-body p.lead'),
  95. "Bob, your password has been changed successfully.",
  96. "reset form displayed success page.");
  97. done();
  98. });
  99. });
  100. }());