mirror of
https://github.com/heartcombo/devise.git
synced 2022-11-09 12:18:31 -05:00
66 lines
1.7 KiB
Ruby
66 lines
1.7 KiB
Ruby
class ActionController::IntegrationTest
|
|
|
|
def warden
|
|
request.env['warden']
|
|
end
|
|
|
|
def create_user(options={})
|
|
@user ||= begin
|
|
user = User.create!(
|
|
:email => 'user@test.com', :password => '123456', :password_confirmation => '123456'
|
|
)
|
|
user.confirm! unless options[:confirm] == false
|
|
user
|
|
end
|
|
end
|
|
|
|
def create_admin(options={})
|
|
@admin ||= begin
|
|
admin = Admin.create!(
|
|
:email => 'admin@test.com', :password => '123456', :password_confirmation => '123456'
|
|
)
|
|
admin
|
|
end
|
|
end
|
|
|
|
def sign_in_as_user(options={}, &block)
|
|
user = create_user(options)
|
|
visit new_user_session_path unless options[:visit] == false
|
|
fill_in 'email', :with => 'user@test.com'
|
|
fill_in 'password', :with => '123456'
|
|
check 'remember me' if options[:remember_me] == true
|
|
yield if block_given?
|
|
click_button 'Sign In'
|
|
user
|
|
end
|
|
|
|
def sign_in_as_admin(options={}, &block)
|
|
admin = create_admin(options)
|
|
visit new_admin_session_path unless options[:visit] == false
|
|
fill_in 'email', :with => 'admin@test.com'
|
|
fill_in 'password', :with => '123456'
|
|
yield if block_given?
|
|
click_button 'Sign In'
|
|
admin
|
|
end
|
|
|
|
# Fix assert_redirect_to in integration sessions because they don't take into
|
|
# account Middleware redirects.
|
|
#
|
|
def assert_redirected_to(url)
|
|
assert [301, 302].include?(@integration_session.status),
|
|
"Expected status to be 301 or 302, got #{@integration_session.status}"
|
|
|
|
url = prepend_host(url)
|
|
location = prepend_host(@integration_session.headers["Location"])
|
|
assert_equal url, location
|
|
end
|
|
|
|
protected
|
|
|
|
def prepend_host(url)
|
|
url = "http://#{request.host}#{url}" if url[0] == ?/
|
|
url
|
|
end
|
|
|
|
end
|