Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ENV['RAILS_ENV'] ||= 'test'
- require File.expand_path('../../config/environment', __FILE__)
- require 'rails/test_help'
- require "minitest/reporters"
- Minitest::Reporters.use!
- class ActiveSupport::TestCase
- # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical
- # order.
- fixtures :all
- # Add more helper methods to be used by all tests here...
- # Returns true if a test user is logged in.
- def is_logged_in?
- !session[:user_id].nil?
- end
- # Logs in a test user.
- def log_in_as(user, options = {})
- password = options[:password] || 'password'
- remember_me = options[:remember_me] || '1'
- if integration_test?
- post login_path, session: { email: user.email,
- password: password,
- remember_me: remember_me }
- else
- session[:user_id] = user.id
- end
- end
- private
- # Returns true inside an integration test.
- def integration_test?
- defined?(post_via_redirect)
- end
- end
- require 'test_helper'
- class UsersLoginTest < ActionDispatch::IntegrationTest
- def setup
- @user = users(:michael)
- end
- test "login with invalid information" do
- get login_path
- assert_template 'sessions/new'
- post login_path, session: { email: "", password: "" }
- assert_template 'sessions/new'
- assert_not flash.empty?
- get root_path
- assert flash.empty?
- end
- test "login with valid information" do
- get login_path
- post login_path, session: { email: @user.email, password: 'password' }
- assert_redirected_to @user
- follow_redirect!
- assert_template 'users/show'
- assert_select "a[href=?]", login_path, count: 0
- assert_select "a[href=?]", logout_path
- assert_select "a[href=?]", user_path(@user)
- end
- test "login with valid information followed by logout" do
- get login_path
- post login_path, session: { email: @user.email, password: 'password' }
- assert is_logged_in?
- assert_redirected_to @user
- follow_redirect!
- assert_template 'users/show'
- assert_select "a[href=?]", login_path, count: 0
- assert_select "a[href=?]", logout_path
- assert_select "a[href=?]", user_path(@user)
- delete logout_path
- assert_not is_logged_in?
- assert_redirected_to root_url
- # Simulate a user clicking logout in a second window.
- delete logout_path
- follow_redirect!
- assert_select "a[href=?]", login_path
- assert_select "a[href=?]", logout_path, count: 0
- assert_select "a[href=?]", user_path(@user), count: 0
- end
- test "login with remembering" do
- log_in_as(@user, remember_me: '1')
- assert_not_nil cookies['remember_token']
- end
- test "login without remembering" do
- log_in_as(@user, remember_me: '0')
- assert_nil cookies['remember_token']
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement