Jay
2006-Jun-29 22:48 UTC
[Rails] Problems getting past authentication using functional tests
Hi,
I''m having a problem getting past the authentication mechanism in rails
using my controller functional tests.
my functional tests look like this
def test_4
$stdout.puts ''TEST 4: cookies is '' + cookies.to_s
# :user => {:id => users(:testuser).id}
cookies[:user_id] = ''2222''
$stdout.puts ''1. cookies is '' + cookies.to_s
get ''login/login_uid'', :id => ''2222''
$stdout.puts ''2. cookies is '' + cookies.to_s
assert_redirected_to :controller => "admin", :action =>
"home"
# $stderr.puts @response.to_s
end
and i expect the login controller to redirect me to "/admin/home"
after
i have successfully logged in, but i keep getting a redirect back to the
login controller, "/login", and i cant figure out what i''m
doing wrong.
my only guess is that i''m not successfully putting the user id in the
cookies. can someone take a look and give me their opinion ? it would be
really appreciated.
here is the first few lines of my admin controller
---------------------------------------------------------------
class AdminController < ApplicationController
include DbHelper
before_filter :authorize, :except => [ :index, :init ]
---------------------------------------------------------------
and here is the code for my login controller
---------------------------------------------------------------
class LoginController < ApplicationController
include DbHelper
# note: no filter, all methods can be accessed
def index
# get the uid for the template
#@user_id = get_uid
render :template => ''login/login''
end
def finger_uid
$stderr.puts "in ''fingeruid''"
# get the uid
@ppid = params[:id]
# get the uid; check with the db
begin
user = get_user_from_ppid @ppid
#user = User.find( @user_id )
@msg = "Existing user - " + user.nick_name + ""
rescue Exception
# todo: determine if the exception was thrown
# because the database is not running
@msg = "New user"
end
render :partial => "finger_uid"
$stderr.puts "out ''fingeruid''"
end
def login_uid
# get the uid
@ppid = params[:id]
# check the uid
begin
user = get_user_from_ppid @ppid
$stderr.puts ''should have thrown an exception''
rescue Exception
user = User.new;
user.id_prod_peer = @ppid;
user.save!;
user.reload;
end
if user == nil
user = User.new;
user.id_prod_peer = @ppid;
user.nick_name = '' ''
user.save!;
user.reload;
end
params[:id] = user.id
# set the cookie with the id
set_uid user.id;
user.nick_name.tr! '' '',''''
if user.nick_name == nil || user.nick_name.empty?
#render :action => ''user/edit'', :object => user
flash[:notice] = ''Please enter a nickname''
redirect_to :controller => ''user'', :action =>
''edit'', :id =>
user.id,
:bl => ''admin''
else
# show the logged in page
redirect_to :controller => ''admin'', :action =>
''home''
end
end
end
---------------------------------------------------------------
--
Posted via http://www.ruby-forum.com/.
Alan Francis
2006-Jun-30 12:25 UTC
[Rails] Re: Problems getting past authentication using functional te
Jay wrote:> > Hi, > > I''m having a problem getting past the authentication mechanism in rails > using my controller functional tests.Might be worth looking at integration tests instead. functional tests aren''t really speking HTTP. They''re programmatic and focus on a dsingle controller, integration tests are a much more full-featured ''pretend browser''. cookies, sessions etc etc. Alan -- Posted via http://www.ruby-forum.com/.