Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require "#{File.dirname(__FILE__)}/../test_helper"
- class SessionTest < ActionController::IntegrationTest
- all_fixtures
- def test_login_existing_user
- new_session do |quentin|
- quentin.goes_to_login
- quentin.logs_in_with :email => 'quentin@example.com', :password => 'test'
- end
- end
- def test_signup_new_person
- new_session do |george|
- george.goes_to_login
- george.goes_to_signup
- george.signs_up_with :user => {
- :display_name => 'The Georginator', :email => "george@example.com",
- :password => "secret", :password_confirmation => "secret"
- }
- george.activates 'george@example.com'
- end
- end
- def test_user_can_login_from_cookie_repeatedly
- new_session do |quentin|
- quentin.logs_in_with :email => 'quentin@example.com', :password => 'test', :remember_me => 1
- assert quentin.cookies.include?('auth_token')
- quentin.goes_to_project_listing
- quentin.closes_his_browser
- quentin.goes_to_project_listing
- quentin.closes_his_browser
- quentin.goes_to_project_listing
- end
- end
- private
- module SessionTestingDSL
- attr_reader :user
- def goes_to_login
- get "/login"
- assert_response :success
- assert_template "sessions/new"
- end
- def goes_to_signup
- get signup_path
- assert_response :success
- assert_template "users/new"
- end
- def goes_to_project_listing
- get projects_path
- assert_response :success
- assert_template "projects/index"
- end
- def signs_up_with(options)
- post '/users', options
- assert_response :redirect
- assert_redirected_to projects_path
- follow_redirect!
- is_redirected_to('sessions/new')
- end
- def activates(email)
- user = User.find_by_email(email)
- get activate_path(user.activation_code)
- is_redirected_to('projects/index')
- end
- def logs_in_with(options)
- post '/sessions', options
- is_redirected_to('projects/index')
- end
- def logs_in_as(person)
- @user = users(person)
- post '/sessions', :email => @user.email, :password => @user.password
- is_redirected_to "projects/index"
- end
- def logs_out
- get logout_path
- end
- def is_redirected_to(template)
- assert_response :redirect
- follow_redirect!
- assert_response :success
- assert_template(template)
- end
- def closes_his_browser
- self.cookies.delete('_jamlab_session_id')
- end
- end
- def new_session
- open_session do |sess|
- sess.extend(SessionTestingDSL)
- yield sess if block_given?
- end
- end
- def new_session_as(user)
- new_session do |sess|
- sess.goes_to_login
- sess.logs_in_as(user)
- yield sess if block_given?
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement