Advertisement
Guest User

Untitled

a guest
Jan 1st, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. require 'test_helper'
  2.  
  3. class UsersLoginTest < ActionDispatch::IntegrationTest
  4.  
  5. def setup
  6. @user = users(:michael)
  7. end
  8.  
  9. test "login with invalid information" do
  10. get login_path
  11. assert_template 'sessions/new'
  12. post login_path, params: {session: {email:"", password:""}}
  13. assert_template 'sessions/new'
  14. assert_not flash.empty?
  15. get root_path
  16. assert flash.empty?
  17. end
  18.  
  19. test "login with valid information" do
  20. get login_path
  21. post login_path, params: { session: { email: @user.email, password: 'password' } }
  22. assert_redirected_to @user
  23. follow_redirect!
  24. assert_template 'users/show'
  25. assert_select "a[href=?]", login_path, count: 0
  26. assert_select "a[href=?]", logout_path
  27. assert_select "a[href=?]", user_path(@user)
  28. end
  29.  
  30. test "login with valid information followed by logout" do
  31. get login_path
  32. post login_path, params: { session: { email: @user.email, password: 'password' } }
  33. assert is_logged_in?
  34. assert_redirected_to @user
  35. follow_redirect!
  36. assert_template 'users/show'
  37. assert_select "a[href=?]", login_path, count: 0
  38. assert_select "a[href=?]", logout_path
  39. assert_select "a[href=?]", user_path(@user)
  40. delete logout_path
  41. assert_not is_logged_in?
  42. assert_redirected_to root_url
  43. follow_redirect!
  44. assert_select "a[href=?]", login_path
  45. assert_select "a[href=?]", logout_path, count: 0
  46. assert_select "a[href=?]", user_path(@user), count: 0
  47. end
  48.  
  49. end
  50.  
  51. module SessionsHelper
  52. def log_in(user)
  53. session[:user_id] = user.id
  54. end
  55. def current_user
  56. if (user_id = session[:user_id])
  57. @current_user ||= User.find_by(id: user_id)
  58. elsif (user_id = cookies.signed[:user_id])
  59. user = User.find_by(id: user_id)
  60. if user && user.authenticated?(cookies[:remember_token])
  61. log_in user
  62. @current_user = user
  63. end
  64. end
  65. end
  66. def remember(user)
  67. user.remember
  68. cookies.permanent.signed[user_id] = user.id
  69. cookies.permanent[:remember_token] = user.remember_token
  70. end
  71. def logged_in?
  72. !current_user.nil?
  73. end
  74. def forget
  75. user.forget
  76. cookies.delete(:user_id)
  77. cookies.delete(:remember_token)
  78. end
  79. def log_out
  80. forget(current_user)
  81. session.delete(:user_id)
  82. @current_user = nil
  83. end
  84.  
  85. class SessionsController < ApplicationController
  86. def new
  87. end
  88.  
  89. def create
  90. user = User.find_by(email: params[:session][:email].downcase)
  91. if user && user.authenticate(params[:session][:password])
  92. log_in user
  93. remember user
  94. redirect_to user
  95. else
  96. flash.now[:danger] = 'Invalid email/password combination'
  97. render 'new'
  98. end
  99. end
  100.  
  101. def destroy
  102. log_out
  103. redirect_to root_url
  104. end
  105.  
  106. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement