Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 app
Octocat-spinner-32 config
Octocat-spinner-32 db
Octocat-spinner-32 doc
Octocat-spinner-32 lib
Octocat-spinner-32 public
Octocat-spinner-32 script
Octocat-spinner-32 spec
Octocat-spinner-32 test
Octocat-spinner-32 vendor
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .rspec
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 config.ru
README.md

I'm migrating from Authlogic + Rails 2.3 + RSpec 1 to Authlogic + Rails 3 + RSpec 2. I stumbled upon a number of mysterious problems so I created this small test app to see what I did wrong. This is a small example program demonstrating the use of Authlogic, Rails 3.0 and RSpec 2. For some reason the tests don't work but I don't know why. I'm putting this code online in the hope that someone can tell me what's wrong.

There is a User model and corresponding migration with the minimum required fields. There is also a UserSession object. I found a bug in the Authlogic session generator though: rails g authlogic:session user_session generates a file containing:

class user_session < Authlogic::Session::Base
end

Obviously user_session should be UserSession in this file.

There is only one controller, OverviewController, which maps to the root path and prints the email address of the currently logged in user.

There are two tests in the controller spec overview_controller_spec. One test is supposed to create a user, log in the user, and invoke OverviewController#index. The other one does the same thing without loggin in the user.

In spec_helper.rb I've required authlogic/test_case and included Authlogic::TestCase in the RSpec config block, as per the Authlogic documentation.

To run the tests:

bundle install
bundle exec rake db:migrate
bundle exec rake spec

You should see a failure like:

Failures:

  1) OverviewController GET index works
     Failure/Error: Unable to find matching line from backtrace
     NoMethodError:
       undefined method `request=' for nil:NilClass
     # /opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/activesupport-3.0.11/lib/active_support/whiny_nil.rb:48:in `method_missing'
     # /opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/authlogic-3.1.0/lib/authlogic/controller_adapters/abstract_adapter.rb:63:in `send'

The problem of activate_authlogic

If you look in spec_helper.rb you see that I call activate_authlogic in a before :each block. Comment it out. Open overview_controller_spec and uncomment activate_authlogic there. Run the test. Now it suddenly works! Why? Do I really have to redundantly call activate_authlogic in each controller spec seperately?

The problem of automatically logging in a user upon creating the user object

Apparently upon creating a user, Authlogic will automatically logs in that user! Does Authlogic always do this or only in tests? How do I turn it off?

Something went wrong with that request. Please try again.