Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ApplicationController < ActionController::Base
- helper_method :current_user_session, :current_user
- before_filter :login_required
- private
- def login_required
- unless current_user
- store_location
- flash[:notice] = "Please login."
- redirect_to login_path
- end
- end
- def store_location
- session[:return_to] = request.request_uri
- end
- def redirect_back_or_default(default=root_url)
- redirect_to(session[:return_to] || default)
- session[:return_to] = nil
- end
- def current_user_session
- return @current_user_session if defined?(@current_user_session)
- @current_user_session = UserSession.find
- end
- def current_user
- return @current_user if defined?(@current_user)
- @current_user = current_user_session && current_user_session.user
- end
- end
- ### users_controller_spec.rb ###
- require 'spec_helper'
- describe UsersController do
- describe "when not authenticated" do
- describe "GET index" do
- it "should redirect to login" do
- get :index
- response.should redirect_to("/login")
- end
- end
- describe "GET show" do
- it "should redirect to login" do
- get :show
- response.should redirect_to("/login")
- end
- end
- describe "GET new" do
- it "should redirect to login" do
- get :new
- response.should redirect_to("/login")
- end
- end
- describe "GET edit" do
- it "should redirect to login" do
- get :edit, :id => "37"
- response.should redirect_to("/login")
- end
- end
- describe "POST create" do
- it "should redirect to login" do
- post :create
- response.should redirect_to("/login")
- end
- end
- describe "PUT update" do
- it "should redirect to login" do
- put :update, :id => "37"
- response.should redirect_to("/login")
- end
- end
- describe "DELETE destroy" do
- it "should redirect to login" do
- delete :destroy, :id => "37"
- response.should redirect_to("/login")
- end
- end
- end
- describe "when authenticated" do
- before(:each) do
- activate_authlogic
- UserSession.create Factory.build(:valid_user)
- end
- def mock_user(stubs={})
- @mock_user ||= mock_model(User, stubs)
- end
- describe "GET index" do
- it "assigns all users as @users" do
- User.stub!(:find).with(:all).and_return([mock_user])
- get :index
- assigns[:users].should == [mock_user]
- end
- end
- describe "GET show" do
- it "assigns the requested user as @user" do
- User.stub!(:find).with("37").and_return(mock_user)
- get :show, :id => "37"
- assigns[:user].should equal(mock_user)
- end
- end
- describe "GET new" do
- it "assigns a new user as @user" do
- User.stub!(:new).and_return(mock_user)
- get :new
- assigns[:user].should equal(mock_user)
- end
- end
- describe "GET edit" do
- it "assigns the requested user as @user" do
- User.stub!(:find).with("37").and_return(mock_user)
- get :edit, :id => "37"
- assigns[:user].should equal(mock_user)
- end
- end
- describe "POST create" do
- describe "with valid params" do
- it "assigns a newly created user as @user" do
- User.stub!(:new).with({'these' => 'params'}).and_return(mock_user(:save => true))
- post :create, :user => {:these => 'params'}
- assigns[:user].should equal(mock_user)
- end
- it "redirects to the created user" do
- User.stub!(:new).and_return(mock_user(:save => true))
- post :create, :user => {}
- response.should redirect_to(user_url(mock_user))
- end
- end
- describe "with invalid params" do
- it "assigns a newly created but unsaved user as @user" do
- User.stub!(:new).with({'these' => 'params'}).and_return(mock_user(:save => false))
- post :create, :user => {:these => 'params'}
- assigns[:user].should equal(mock_user)
- end
- it "re-renders the 'new' template" do
- User.stub!(:new).and_return(mock_user(:save => false))
- post :create, :user => {}
- response.should render_template('new')
- end
- end
- end
- describe "PUT update" do
- describe "with valid params" do
- it "updates the requested user" do
- User.should_receive(:find).with("37").and_return(mock_user)
- mock_user.should_receive(:update_attributes).with({'these' => 'params'})
- put :update, :id => "37", :user => {:these => 'params'}
- end
- it "assigns the requested user as @user" do
- User.stub!(:find).and_return(mock_user(:update_attributes => true))
- put :update, :id => "1"
- assigns[:user].should equal(mock_user)
- end
- it "redirects to the user" do
- User.stub!(:find).and_return(mock_user(:update_attributes => true))
- put :update, :id => "1"
- response.should redirect_to(user_url(mock_user))
- end
- end
- describe "with invalid params" do
- it "updates the requested user" do
- User.should_receive(:find).with("37").and_return(mock_user)
- mock_user.should_receive(:update_attributes).with({'these' => 'params'})
- put :update, :id => "37", :user => {:these => 'params'}
- end
- it "assigns the user as @user" do
- User.stub!(:find).and_return(mock_user(:update_attributes => false))
- put :update, :id => "1"
- assigns[:user].should equal(mock_user)
- end
- it "re-renders the 'edit' template" do
- User.stub!(:find).and_return(mock_user(:update_attributes => false))
- put :update, :id => "1"
- response.should render_template('edit')
- end
- end
- end
- describe "DELETE destroy" do
- it "destroys the requested user" do
- User.should_receive(:find).with("37").and_return(mock_user)
- mock_user.should_receive(:destroy)
- delete :destroy, :id => "37"
- end
- it "redirects to the users list" do
- User.stub!(:find).and_return(mock_user(:destroy => true))
- delete :destroy, :id => "1"
- response.should redirect_to(users_url)
- end
- end
- end
- end
Add Comment
Please, Sign In to add comment