register-modal.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. (function () {
  2. 'use strict';
  3. var app = null;
  4. QUnit.acceptance("Register", {
  5. beforeEach: function() {
  6. app = initTestMisago();
  7. },
  8. afterEach: function() {
  9. app.destroy();
  10. }
  11. });
  12. QUnit.test('registration disabled', function(assert) {
  13. app.settings.account_activation = 'closed';
  14. var done = assert.async();
  15. waitForElement('.navbar .nav-guest .btn-primary');
  16. click('.navbar .nav-guest .btn-primary');
  17. onElement('.alerts .alert-info', function() {
  18. assert.equal(
  19. getAlertMessage(), "New registrations are currently disabled.",
  20. "registration closed message was displayed.");
  21. done();
  22. });
  23. });
  24. QUnit.test('registration with empty credentials', function(assert) {
  25. app.settings.account_activation = 'none';
  26. var done = assert.async();
  27. waitForElement('.navbar .nav-guest .btn-primary');
  28. click('.navbar .nav-guest .btn-primary');
  29. click('.modal-register .btn-primary');
  30. onElement('.alerts .alert-danger', function() {
  31. assert.equal(getAlertMessage(), "Form contains errors.",
  32. "empty registration form failed.");
  33. done();
  34. });
  35. });
  36. QUnit.test('registration with invalid credentials', function(assert) {
  37. app.settings.account_activation = 'none';
  38. var done = assert.async();
  39. waitForElement('.navbar .nav-guest .btn-primary');
  40. click('.navbar .nav-guest .btn-primary');
  41. waitForElement('.modal-register');
  42. fillIn('#id_username', '###');
  43. fillIn('#id_email', 'notemail');
  44. fillIn('#id_password', 'nah');
  45. click('.modal-register .btn-primary');
  46. onElement('.alerts .alert-danger', function() {
  47. assert.equal(getAlertMessage(), "Form contains errors.",
  48. "invalid registration form failed.");
  49. assert.equal(
  50. getFieldFeedback('id_username'),
  51. "Username can only contain latin alphabet letters and digits.",
  52. "username field was validated.");
  53. assert.equal(
  54. getFieldFeedback('id_email'),
  55. "Enter a valid email address.",
  56. "email field was validated.");
  57. assert.equal(
  58. getFieldFeedback('id_password'),
  59. "Valid password must be at least 5 characters long.",
  60. "password field was validated.");
  61. done();
  62. });
  63. });
  64. QUnit.test('registration with backend-rejected credentials', function(assert) {
  65. $.mockjax({
  66. url: '/test-api/users/',
  67. status: 400,
  68. responseText: {
  69. 'username': [
  70. "That username is already taken."
  71. ]
  72. }
  73. });
  74. app.settings.account_activation = 'none';
  75. var done = assert.async();
  76. waitForElement('.navbar .nav-guest .btn-primary');
  77. click('.navbar .nav-guest .btn-primary');
  78. waitForElement('.modal-register');
  79. fillIn('#id_username', 'bob');
  80. fillIn('#id_email', 'bob@boberson.com');
  81. fillIn('#id_password', 'Som3S3cureP4ss!!!');
  82. click('.modal-register .btn-primary');
  83. onElement('.alerts .alert-danger', function() {
  84. assert.equal(getAlertMessage(), "Form contains errors.",
  85. "invalid registration form was rejected.");
  86. assert.equal(
  87. getFieldFeedback('id_username'),
  88. "That username is already taken.",
  89. "username rejected by backend.");
  90. done();
  91. });
  92. });
  93. QUnit.test('registration passed with active user', function(assert) {
  94. $.mockjax({
  95. url: '/test-api/users/',
  96. status: 200,
  97. responseText: {
  98. 'activation': 'active',
  99. 'username': "Boberson",
  100. 'email': "bob@boberson.com",
  101. }
  102. });
  103. app.settings.account_activation = 'none';
  104. var done = assert.async();
  105. waitForElement('.navbar .nav-guest .btn-primary');
  106. click('.navbar .nav-guest .btn-primary');
  107. waitForElement('.modal-register');
  108. fillIn('#id_username', 'bob');
  109. fillIn('#id_email', 'bob@boberson.com');
  110. fillIn('#id_password', 'Som3S3cureP4ss!!!');
  111. click('.modal-register .btn-primary');
  112. onElement('.modal-message', function() {
  113. app.runloop.stop('refresh-after-registration');
  114. assert.equal(
  115. getElementText('.modal-message .lead'),
  116. "Boberson, your account has been created and you were signed in.",
  117. "user has been registered and signed in successfully.");
  118. done();
  119. });
  120. });
  121. QUnit.test('registration passed with user activation', function(assert) {
  122. $.mockjax({
  123. url: '/test-api/users/',
  124. status: 200,
  125. responseText: {
  126. 'activation': 'user',
  127. 'username': "Boberson",
  128. 'email': "bob@boberson.com",
  129. }
  130. });
  131. app.settings.account_activation = 'none';
  132. var done = assert.async();
  133. waitForElement('.navbar .nav-guest .btn-primary');
  134. click('.navbar .nav-guest .btn-primary');
  135. waitForElement('.modal-register');
  136. fillIn('#id_username', 'bob');
  137. fillIn('#id_email', 'bob@boberson.com');
  138. fillIn('#id_password', 'Som3S3cureP4ss!!!');
  139. click('.modal-register .btn-primary');
  140. onElement('.modal-message', function() {
  141. app.runloop.stop('refresh-after-registration');
  142. assert.equal(
  143. getElementText('.modal-message .lead'),
  144. "Boberson, your account has been created but you need to activate it before you will be able to sign in.",
  145. "user has been registered and signed in successfully.");
  146. done();
  147. });
  148. });
  149. QUnit.test('registration passed with admin activation', function(assert) {
  150. $.mockjax({
  151. url: '/test-api/users/',
  152. status: 200,
  153. responseText: {
  154. 'activation': 'admin',
  155. 'username': "Boberson",
  156. 'email': "bob@boberson.com",
  157. }
  158. });
  159. app.settings.account_activation = 'none';
  160. var done = assert.async();
  161. waitForElement('.navbar .nav-guest .btn-primary');
  162. click('.navbar .nav-guest .btn-primary');
  163. waitForElement('.modal-register');
  164. fillIn('#id_username', 'bob');
  165. fillIn('#id_email', 'bob@boberson.com');
  166. fillIn('#id_password', 'Som3S3cureP4ss!!!');
  167. click('.modal-register .btn-primary');
  168. onElement('.modal-message', function() {
  169. app.runloop.stop('refresh-after-registration');
  170. assert.equal(
  171. getElementText('.modal-message .lead'),
  172. "Boberson, your account has been created but board administrator will have to activate it before you will be able to sign in.",
  173. "user has been registered and signed in successfully.");
  174. done();
  175. });
  176. });
  177. }());