Advertisement
Guest User

Untitled

a guest
Jul 31st, 2017
456
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. require "#{File.dirname(__FILE__)}/../test_helper"
  2.  
  3. class SessionTest < ActionController::IntegrationTest
  4. all_fixtures
  5.  
  6. def test_login_existing_user
  7. new_session do |quentin|
  8. quentin.goes_to_login
  9. quentin.logs_in_with :email => 'quentin@example.com', :password => 'test'
  10. end
  11. end
  12.  
  13. def test_signup_new_person
  14. new_session do |george|
  15. george.goes_to_login
  16. george.goes_to_signup
  17. george.signs_up_with :user => {
  18. :display_name => 'The Georginator', :email => "george@example.com",
  19. :password => "secret", :password_confirmation => "secret"
  20. }
  21. george.activates 'george@example.com'
  22. end
  23. end
  24.  
  25. def test_user_can_login_from_cookie_repeatedly
  26. new_session do |quentin|
  27. quentin.logs_in_with :email => 'quentin@example.com', :password => 'test', :remember_me => 1
  28. assert quentin.cookies.include?('auth_token')
  29. quentin.goes_to_project_listing
  30. quentin.closes_his_browser
  31. quentin.goes_to_project_listing
  32. quentin.closes_his_browser
  33. quentin.goes_to_project_listing
  34. end
  35. end
  36.  
  37. private
  38.  
  39. module SessionTestingDSL
  40.  
  41. attr_reader :user
  42.  
  43. def goes_to_login
  44. get "/login"
  45. assert_response :success
  46. assert_template "sessions/new"
  47. end
  48.  
  49. def goes_to_signup
  50. get signup_path
  51. assert_response :success
  52. assert_template "users/new"
  53. end
  54.  
  55. def goes_to_project_listing
  56. get projects_path
  57. assert_response :success
  58. assert_template "projects/index"
  59. end
  60.  
  61. def signs_up_with(options)
  62. post '/users', options
  63. assert_response :redirect
  64. assert_redirected_to projects_path
  65. follow_redirect!
  66. is_redirected_to('sessions/new')
  67. end
  68.  
  69. def activates(email)
  70. user = User.find_by_email(email)
  71. get activate_path(user.activation_code)
  72. is_redirected_to('projects/index')
  73. end
  74.  
  75. def logs_in_with(options)
  76. post '/sessions', options
  77. is_redirected_to('projects/index')
  78. end
  79.  
  80. def logs_in_as(person)
  81. @user = users(person)
  82. post '/sessions', :email => @user.email, :password => @user.password
  83. is_redirected_to "projects/index"
  84. end
  85.  
  86. def logs_out
  87. get logout_path
  88. end
  89.  
  90. def is_redirected_to(template)
  91. assert_response :redirect
  92. follow_redirect!
  93. assert_response :success
  94. assert_template(template)
  95. end
  96.  
  97. def closes_his_browser
  98. self.cookies.delete('_jamlab_session_id')
  99. end
  100.  
  101. end
  102.  
  103. def new_session
  104. open_session do |sess|
  105. sess.extend(SessionTestingDSL)
  106. yield sess if block_given?
  107. end
  108. end
  109.  
  110.  
  111. def new_session_as(user)
  112. new_session do |sess|
  113. sess.goes_to_login
  114. sess.logs_in_as(user)
  115. yield sess if block_given?
  116. end
  117. end
  118.  
  119. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement