Using Shoulda to test login – should_require_login

I've had my problems with shoulda, but one very powerful component of the testing framework is the ability to create macros. Here's one that checks to make sure a user has to be logged in to access an action. Put it into test/shoulda_macros/authentication.rb. (You can name the file anything you want I just thought authentication.rb made sense)

Test::Unit::TestCase.class_eval do
  def self.should_require_login(*actions)
    actions.each do |action|
      should "Require login for '#{action}' action" do
        get(action)
        assert_redirected_to(login_url)
      end
    end
  end
end

Then inside your controller test do something like this:

class UserControllerTest < ActionController::TestCase
  should_require_login :edit, :update, :destroy
end

Comments

blog comments powered by Disqus