Hi there, I just started writing tests today after some months of using rails (slap wrists). I seem to be getting the hang of things, but I'm hitting a wall when it comes to functional_testing pages protected by login_engine/user_engine. all my assertions come back with: Expected response to be a <:success>, but was <302> Is there a way I can login from within a test? thanks dorian -- I do things for love or money
on 2006-04-28 08:30
on 2006-04-28 13:03
The simplest way to 'login' when you are testing a protected controller is to put a user in the session as part of your setup method, i.e. class PithyCartoonTest < Test::Unit::TestCase def setup @controller = SuperRobotMonkeyTeamHyperForceGoController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new session[:user] = users(:chiro) end def test_should_be_able_to_summon_the_power_primate get 'team_member', :name => 'antauri' assert_response :success # and so on.... end Another good idea is defining a login method in your test_helper.rb which does a similar thing. HTH - james On 4/28/06, Dorian M. <firstname.lastname@example.org> wrote: > > dorian > > -- > I do things for love or money > _______________________________________________ > Rails mailing list > email@example.com > http://lists.rubyonrails.org/mailman/listinfo/rails > -- * J * ~
on 2006-04-28 13:12
Dorian M. <loaf@...> writes: > > Hi there, > I just started writing tests today after some months of using rails (slap wrists). > I seem to be getting the hang of things, but I'm hitting a wall when it comes to functional_testing pages > > -- > I do things for love or money > Hi Dorian, What I did (not staying entirely DRY) was to copy all of the *.yml-files from /vendor/plugins/user_engine/test/fixtures to /test/fixtures and then add fixtures :users, :roles, :users_roles (and other fixtures you need) to the test cases that need authentication. This ensures that user data is loaded for each test, and makes you able to add: def setup ... @request.session[:user] = User.find(1) end - to each test case, which will "authenticate" you as the administrator (with id=1) for all your tests. Best regards, Casper F.