Guest User

Untitled

a guest
Jun 6th, 2018
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.78 KB | None | 0 0
  1. require File.dirname(__FILE__) + '/../test_helper'
  2.  
  3. class UserTest < ActiveSupport::TestCase
  4.  
  5. context "A user, when signing up, " do
  6. setup do
  7. @user = Factory(:user, :password => "password123", :password_confirmation => "password123")
  8. end
  9.  
  10. should_have_many :pages
  11.  
  12. should_validate_presence_of :login, :message => I18n.t(:empty_login)
  13. should_validate_uniqueness_of :login, :message => I18n.t(:existing_login)
  14. should_ensure_length_in_range :login, (3..40), :short_message => I18n.t(:too_short_login), :long_message => I18n.t(:too_long_login)
  15. should_not_allow_values_for :login, "&nbsp;", "*&%{}[]?\\", :message => I18n.t(:invalid_login)
  16. should_allow_values_for :login, "a@b.", "dfgAFGKDSFJL"
  17.  
  18. should_validate_presence_of :email, :message => I18n.t(:empty_email)
  19. should_validate_uniqueness_of :email, :message => I18n.t(:existing_email)
  20. should_ensure_length_in_range :email, (6..100), :short_message => I18n.t(:too_short_email), :long_message => I18n.t(:too_long_email)
  21. should_not_allow_values_for :email, "patrikjira at gmail.com", "papricek@seznam", :message => I18n.t(:invalid_email)
  22. should_allow_values_for :email, "patrikjira@gmail.com", "papricek@seznam.cz", "Patrik.Jira@tn.cz"
  23.  
  24. should_not_allow_mass_assignment_of :salt, :encrypted_password, :remember_token, :remember_token_expires_at
  25. end
  26.  
  27. context "A user without crypted password" do
  28. setup do
  29. @user = Factory.build(:user, :password => "password123", :password_confirmation => "password123")
  30. end
  31. should_validate_presence_of :password, :message => I18n.t(:empty_password)
  32. should_validate_presence_of :password_confirmation, :message => I18n.t(:empty_password_confirmation)
  33. end
  34.  
  35. context "A new (unactivated) user" do
  36. setup do
  37. @user = create_user;
  38. @user.register!
  39. end
  40.  
  41. should "be created" do
  42. assert_difference 'User.count' do
  43. user = create_user
  44. assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
  45. end
  46. end
  47.  
  48. should "initialize its activation code upon creation" do
  49. @user.reload
  50. assert_not_nil @user.activation_code
  51. end
  52.  
  53. should "be created and start in pending state" do
  54. @user.reload
  55. assert @user.pending?
  56. end
  57. end
  58.  
  59. context "An existing (activated) user" do
  60. setup do
  61. @user = Factory(:quentin)
  62. end
  63.  
  64. should "reset password" do
  65. @user.update_attributes(:password => 'new password', :password_confirmation => 'new password')
  66. assert_equal @user, User.authenticate(@user.login, 'new password')
  67. end
  68.  
  69. should "not rehash password" do
  70. @user.update_attributes(:password => 'new password', :password_confirmation => 'new password')
  71. assert_equal @user, User.authenticate(@user.login, 'new password')
  72. end
  73.  
  74. should "be authenticated" do
  75. assert_equal @user, User.authenticate(@user.login, 'monkey')
  76. end
  77.  
  78. should "set remember token" do
  79. @user.remember_me
  80. assert_not_nil @user.remember_token
  81. assert_not_nil @user.remember_token_expires_at
  82. end
  83.  
  84.  
  85. should "unset remember token" do
  86. @user.remember_me
  87. assert_not_nil @user.remember_token
  88. @user.forget_me
  89. assert_nil @user.remember_token
  90. end
  91.  
  92. should "be remembered for one week" do
  93. before = 1.week.from_now.utc
  94. @user.remember_me_for 1.week
  95. after = 1.week.from_now.utc
  96. assert_not_nil @user.remember_token
  97. assert_not_nil @user.remember_token_expires_at
  98. assert @user.remember_token_expires_at.between?(before, after)
  99. end
  100.  
  101. should "be remembered until one week" do
  102. time = 1.week.from_now.utc
  103. @user.remember_me_until time
  104. assert_not_nil @user.remember_token
  105. assert_not_nil @user.remember_token_expires_at
  106. assert_equal @user.remember_token_expires_at, time
  107. end
  108.  
  109. should "be remembered default two week" do
  110. before = 2.weeks.from_now.utc
  111. @user.remember_me
  112. after = 2.weeks.from_now.utc
  113. assert_not_nil @user.remember_token
  114. assert_not_nil @user.remember_token_expires_at
  115. assert @user.remember_token_expires_at.between?(before, after)
  116. end
  117.  
  118. should "be registered when passive" do
  119. user = Factory.build(:user, :password => nil, :password_confirmation => nil)
  120. assert user.passive?
  121. user.update_attributes(:password => 'some password', :password_confirmation => 'some password')
  122. user.register!
  123. assert user.pending?
  124. end
  125.  
  126. should "be suspended" do
  127. @user.suspend!
  128. assert @user.suspended?
  129. end
  130.  
  131. should "not authenticate when suspended" do
  132. @user.suspend!
  133. assert_not_equal @user, User.authenticate('quentin', 'test')
  134. end
  135.  
  136. should "be unsuspended to active state" do
  137. @user.suspend!
  138. assert @user.suspended?
  139. @user.unsuspend!
  140. assert @user.active?
  141. end
  142.  
  143. should "be unsuspended with nil activation code and activated to passive state" do
  144. @user.suspend!
  145. User.update_all :activation_code => nil, :activated_at => nil
  146. assert @user.suspended?
  147. @user.reload.unsuspend!
  148. assert @user.passive?
  149. end
  150.  
  151. should "be unsuspended with activation code and nil activated_at to pending state" do
  152. @user.suspend!
  153. User.update_all :activation_code => 'foo-bar', :activated_at => nil
  154. assert @user.suspended?
  155. @user.reload.unsuspend!
  156. assert @user.pending?
  157. end
  158.  
  159. should "be deleted" do
  160. assert_nil @user.deleted_at
  161. @user.delete!
  162. assert_not_nil @user.deleted_at
  163. assert @user.deleted?
  164. end
  165. end
  166.  
  167. protected
  168. def create_user(options = {})
  169. Factory(:user, {:password => "password123", :password_confirmation => "password123"}.merge(options))
  170. end
  171.  
  172. end
Add Comment
Please, Sign In to add comment