Advertisement
Guest User

Untitled

a guest
Aug 15th, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. ENV['RAILS_ENV'] ||= 'test'
  2. require File.expand_path('../../config/environment', __FILE__)
  3. require 'rails/test_help'
  4. require "minitest/reporters"
  5. Minitest::Reporters.use!
  6.  
  7. class ActiveSupport::TestCase
  8. # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical
  9. # order.
  10. fixtures :all
  11.  
  12. # Add more helper methods to be used by all tests here...
  13.  
  14. # Returns true if a test user is logged in.
  15. def is_logged_in?
  16. !session[:user_id].nil?
  17. end
  18.  
  19.  
  20. # Logs in a test user.
  21. def log_in_as(user, options = {})
  22. password = options[:password] || 'password'
  23. remember_me = options[:remember_me] || '1'
  24. if integration_test?
  25. post login_path, session: { email: user.email,
  26. password: password,
  27. remember_me: remember_me }
  28. else
  29. session[:user_id] = user.id
  30. end
  31. end
  32.  
  33. private
  34.  
  35. # Returns true inside an integration test.
  36. def integration_test?
  37. defined?(post_via_redirect)
  38. end
  39.  
  40. end
  41.  
  42. require 'test_helper'
  43.  
  44. class UsersLoginTest < ActionDispatch::IntegrationTest
  45.  
  46. def setup
  47. @user = users(:michael)
  48. end
  49.  
  50. test "login with invalid information" do
  51. get login_path
  52. assert_template 'sessions/new'
  53. post login_path, session: { email: "", password: "" }
  54. assert_template 'sessions/new'
  55. assert_not flash.empty?
  56. get root_path
  57. assert flash.empty?
  58. end
  59.  
  60. test "login with valid information" do
  61. get login_path
  62. post login_path, session: { email: @user.email, password: 'password' }
  63. assert_redirected_to @user
  64. follow_redirect!
  65. assert_template 'users/show'
  66. assert_select "a[href=?]", login_path, count: 0
  67. assert_select "a[href=?]", logout_path
  68. assert_select "a[href=?]", user_path(@user)
  69. end
  70.  
  71. test "login with valid information followed by logout" do
  72. get login_path
  73. post login_path, session: { email: @user.email, password: 'password' }
  74. assert is_logged_in?
  75. assert_redirected_to @user
  76. follow_redirect!
  77. assert_template 'users/show'
  78. assert_select "a[href=?]", login_path, count: 0
  79. assert_select "a[href=?]", logout_path
  80. assert_select "a[href=?]", user_path(@user)
  81. delete logout_path
  82. assert_not is_logged_in?
  83. assert_redirected_to root_url
  84. # Simulate a user clicking logout in a second window.
  85. delete logout_path
  86. follow_redirect!
  87. assert_select "a[href=?]", login_path
  88. assert_select "a[href=?]", logout_path, count: 0
  89. assert_select "a[href=?]", user_path(@user), count: 0
  90. end
  91.  
  92.  
  93. test "login with remembering" do
  94. log_in_as(@user, remember_me: '1')
  95. assert_not_nil cookies['remember_token']
  96. end
  97.  
  98. test "login without remembering" do
  99. log_in_as(@user, remember_me: '0')
  100. assert_nil cookies['remember_token']
  101. end
  102.  
  103. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement