Add login backdoor to speed up the cucumber test suite

This commit is contained in:
Matt Rogers & Katrina Owen 2013-06-02 15:49:14 -05:00 committed by Matt Rogers
parent b87326acd7
commit 2c5aff3b36
3 changed files with 43 additions and 10 deletions

View file

@ -1,13 +1,7 @@
Given /^I have logged in as "(.*)" with password "(.*)"$/ do |username, password|
step "I go to the login page"
fill_in "user_login", :with => username
fill_in "user_password", :with => password
uncheck "user_noexpiry"
click_button "Sign in"
logout_regexp = @mobile_interface ? "Logout" : "Logout \(#{username}\)"
page.should have_content(logout_regexp)
@current_user = User.where(:login => username).first
user = User.where(:login => username).first
request_signin_as(user)
@current_user = user
end
When /^I submit the login form as user "([^\"]*)" with password "([^\"]*)"$/ do |username, password|

View file

@ -0,0 +1,38 @@
class SessionBackdoorController < ::ApplicationController
skip_before_filter :login_required
def create
session['user_id'] = params[:user_id]
user = User.find(params[:user_id])
set_current_user(user)
user.remember_me
cookies[:auth_token] = { :value => user.remember_token, :expires => user.remember_token_expires_at }
redirect_to root_path
end
end
module TracksLoginHelper
begin
_routes = Rails.application.routes
_routes.disable_clear_and_finalize = true
_routes.clear!
Rails.application.routes_reloader.paths.each{ |path| load(path) }
_routes.draw do
# here you can add any route you want
match "/test_login_backdoor", to: "session_backdoor#create"
end
ActiveSupport.on_load(:action_controller) { _routes.finalize! }
ensure
_routes.disable_clear_and_finalize = false
end
def request_signin_as(user)
visit "/test_login_backdoor?user_id=#{user.id}"
end
def signin_as(user)
session[:user_id] = user.id
@current_user = user
end
end

View file

@ -1,3 +1,4 @@
World(TracksLoginHelper)
World(TracksStepHelper)
World(TracksFormHelper)
World(TracksIdHelper)
World(TracksIdHelper)