Guest User

Untitled

a guest
Apr 12th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.68 KB | None | 0 0
  1. require File.dirname(__FILE__) + '/../test_helper'
  2. require 'session_controller'
  3.  
  4. # Re-raise errors caught by the controller.
  5. class SessionController; def rescue_action(e) raise e end; end
  6.  
  7. class SessionControllerTest < Test::Unit::TestCase
  8. # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead
  9. # Then, you can remove it from this and the units test.
  10. include AuthenticatedTestHelper
  11.  
  12. fixtures :site_users
  13.  
  14. def setup
  15. @controller = SessionController.new
  16. @request = ActionController::TestRequest.new
  17. @response = ActionController::TestResponse.new
  18.  
  19. end
  20.  
  21. def test_should_login_and_redirect
  22. post :create, :email => 'quentin@example.com', :password => 'asdfasdf'
  23. assert session[:site_user], 'A session should be created.'
  24. assert_response :redirect, 'The application should redirect.'
  25. end
  26.  
  27. def test_should_login_via_xhr
  28. xhr :post, :create, :email => 'quentin@example.com', :password => 'asdfasdf'
  29. assert session[:site_user], 'A session should be created.'
  30. assert_template "create.rjs"
  31. assert_rjs :replace_html, 'signup'
  32. assert_rjs :call, 'Modalbox.hide'
  33. end
  34.  
  35. def test_should_fail_login_and_not_redirect
  36. post :create, :email => 'quentin@example.com', :password => 'bad password'
  37. assert_nil session[:site_user]
  38. end
  39.  
  40. def test_should_fail_login_via_xhr
  41. xhr :post, :create, :email => 'quentin@example.com', :password => 'bad password'
  42. assert_nil session[:site_user]
  43. end
  44.  
  45. def test_should_logout
  46. login_as :quentin
  47. get :destroy
  48. assert_nil session[:site_user]
  49. assert_response :redirect
  50. end
  51.  
  52. def test_should_remember_me
  53. post :create, :email => 'quentin@example.com', :password => 'asdfasdf', :remember_me => "1"
  54. assert_not_nil @response.cookies["auth_token"]
  55. end
  56.  
  57. def test_should_not_remember_me
  58. post :create, :email => 'quentin@example.com', :password => 'asdfasdf', :remember_me => "0"
  59. assert_nil @response.cookies["auth_token"]
  60. end
  61.  
  62. def test_should_delete_token_on_logout
  63. login_as :quentin
  64. get :destroy
  65. assert_equal @response.cookies["auth_token"], []
  66. end
  67.  
  68. def test_should_login_with_cookie
  69. site_users(:quentin).remember_me
  70. @request.cookies["auth_token"] = cookie_for(:quentin)
  71. get :new
  72. assert @controller.send(:logged_in?)
  73. end
  74.  
  75. def test_should_fail_expired_cookie_login
  76. site_users(:quentin).remember_me
  77. site_users(:quentin).update_attribute :remember_token_expires_at, 5.minutes.ago
  78. @request.cookies["auth_token"] = cookie_for(:quentin)
  79. get :new
  80. assert !@controller.send(:logged_in?)
  81. end
  82.  
  83. def test_should_fail_cookie_login
  84. site_users(:quentin).remember_me
  85. @request.cookies["auth_token"] = auth_token('invalid_auth_token')
  86. get :new
  87. assert !@controller.send(:logged_in?)
  88. end
  89.  
  90. def test_should_show_forgot_password_via_xhr
  91. xhr :get, :forgot_password
  92. assert_template 'forgot_password.rjs'
  93. assert_rjs :replace_html, 'errors'
  94. assert_rjs :replace_html, 'login'
  95. end
  96.  
  97. def test_should_send_reset_password_email
  98. num_deliveries = ActionMailer::Base.deliveries.size
  99. post :start_forgot_password_process, :email => site_users(:quentin).email
  100. assert_equal num_deliveries+1, ActionMailer::Base.deliveries.size
  101. end
  102.  
  103. def test_should_send_reset_password_email_via_xhr
  104. num_deliveries = ActionMailer::Base.deliveries.size
  105. xhr :post, :start_forgot_password_process, :email => site_users(:quentin).email
  106. assert_equal num_deliveries+1, ActionMailer::Base.deliveries.size
  107. assert_template 'start_forgot_password_process.rjs'
  108. end
  109.  
  110. def test_should_allow_reset_password_form
  111. setup_site_user_reset_code
  112. get :reset_password, :reset_code => '9e513bee9aa1e2060692760bf0695c97921688a9'
  113. assert_template 'reset_password'
  114. end
  115.  
  116. def test_should_not_allow_reset_password_form_with_bad_reset_code
  117. setup_site_user_reset_code
  118. get :reset_password, :reset_code => 'bad reset code'
  119. assert_template 'reset_password_error'
  120. end
  121.  
  122. def test_should_not_allow_reset_password_form_with_no_reset_code
  123. get :reset_password, :reset_code => '9e513bee9aa1e2060692760bf0695c97921688a9'
  124. assert_template 'reset_password_error'
  125. end
  126.  
  127. def test_should_reset_password_and_send_confirmation_email
  128. num_deliveries = ActionMailer::Base.deliveries.size
  129. setup_site_user_reset_code
  130. put :reset_password_update, :id => site_users(:quentin).id,
  131. :site_user => { :password => '123456789',
  132. :password_confirmation => '123456789' }
  133. assert !flash[:errors], assigns(:site_user).errors.full_messages.to_sentence
  134. assert_equal num_deliveries+1, ActionMailer::Base.deliveries.size
  135. end
  136.  
  137. def test_should_not_reset_password_and_not_send_confirmation_email
  138. num_deliveries = ActionMailer::Base.deliveries.size
  139. put :reset_password_update, :id => site_users(:quentin).id,
  140. :site_user => { :password => '123456789',
  141. :password_confirmation => '123456789' }
  142. assert flash[:errors], assigns(:site_user).errors.full_messages.to_sentence
  143. assert_equal num_deliveries, ActionMailer::Base.deliveries.size
  144. end
  145.  
  146. protected
  147.  
  148. def setup_site_user_reset_code
  149. site_users(:quentin).reset_code = '9e513bee9aa1e2060692760bf0695c97921688a9'
  150. site_users(:quentin).reset_at = 1.days.ago.to_s
  151. site_users(:quentin).save(false)
  152. end
  153.  
  154. def auth_token(token)
  155. CGI::Cookie.new('name' => 'auth_token', 'value' => token)
  156. end
  157.  
  158. def cookie_for(site_user)
  159. auth_token site_users(site_user).remember_token
  160. end
  161. end
Add Comment
Please, Sign In to add comment