Spec Helpers for Login Testing
Found about the internet...
module UserSpecHelpers
module ClassMethods
def require_login_and_correct_user(action, &request)
require_login action, &request
require_user action, &request
end
def require_login(action, &request)
specify "when calling #{action} should redirect to the login screen if the User is not logged in" do
controller.should_redirect_to :controller => "sessions", :action => "new"
instance_eval &request
end
end
def require_user(action, &request)
specify "when calling #{action} should render a 403 if the logged in User isn't the User requested" do
mock_user = mock("user")
login_as mock_user, "2"
controller.should_render :status => 403, :nothing => true
User.stub!(:find).and_return(mock("user2"))
instance_eval &request
end
end
def should_find_user_on(http_verb)
specify "should find the relevant User" do
User.should_receive(:find).with("1").and_return mock_user
send("do_#{http_verb}")
end
end
end
def self.included(receiver)
receiver.extend ClassMethods
end
def login_as(user, id = "1")
user.stub!(:id).and_return(id)
user.stub!(:to_param).and_return(id)
controller.send :current_user=, user
end
end