thoughtbot-clearance 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +24 -30
- data/clearance.gemspec +2 -2
- data/lib/clearance/app/controllers/users_controller.rb +2 -42
- data/lib/clearance/test/functionals/sessions_controller_test.rb +2 -3
- data/lib/clearance/test/functionals/users_controller_test.rb +12 -65
- data/lib/clearance/test/units/user_test.rb +3 -3
- metadata +2 -2
    
        data/README.textile
    CHANGED
    
    | @@ -51,47 +51,21 @@ In test/test_helper.rb: | |
| 51 51 |  | 
| 52 52 | 
             
            In test/unit/user_test.rb: 
         | 
| 53 53 |  | 
| 54 | 
            -
                require File.dirname(__FILE__) + '/../test_helper'
         | 
| 55 | 
            -
                
         | 
| 56 54 | 
             
                class UserTest < Test::Unit::TestCase
         | 
| 57 55 | 
             
                  include Clearance::UserTest
         | 
| 58 56 | 
             
                end
         | 
| 59 57 |  | 
| 60 58 | 
             
            In test/functional/sessions_controller_test.rb: 
         | 
| 61 59 |  | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
              class SessionsControllerTest < ActionController::TestCase
         | 
| 65 | 
            -
                include Clearance::SessionsControllerTest
         | 
| 66 | 
            -
                
         | 
| 67 | 
            -
                private
         | 
| 68 | 
            -
                
         | 
| 69 | 
            -
                def url_after_create
         | 
| 70 | 
            -
                  root_url # the default
         | 
| 60 | 
            +
                class SessionsControllerTest < ActionController::TestCase
         | 
| 61 | 
            +
                  include Clearance::SessionsControllerTest
         | 
| 71 62 | 
             
                end
         | 
| 72 | 
            -
                
         | 
| 73 | 
            -
                def url_after_destroy
         | 
| 74 | 
            -
                  login_url # the default
         | 
| 75 | 
            -
                end
         | 
| 76 | 
            -
              end
         | 
| 77 63 |  | 
| 78 64 | 
             
            In test/functional/users_controller_test.rb: 
         | 
| 79 65 |  | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
              class UsersControllerTest < ActionController::TestCase
         | 
| 83 | 
            -
                include Clearance::UsersControllerTest
         | 
| 84 | 
            -
                
         | 
| 85 | 
            -
                private
         | 
| 86 | 
            -
                
         | 
| 87 | 
            -
                def url_after_create
         | 
| 88 | 
            -
                  root_url # the default
         | 
| 89 | 
            -
                end
         | 
| 90 | 
            -
                
         | 
| 91 | 
            -
                def url_after_update
         | 
| 92 | 
            -
                  root_url # the default
         | 
| 66 | 
            +
                class UsersControllerTest < ActionController::TestCase
         | 
| 67 | 
            +
                  include Clearance::UsersControllerTest
         | 
| 93 68 | 
             
                end
         | 
| 94 | 
            -
              end
         | 
| 95 69 |  | 
| 96 70 | 
             
            h2. Schema
         | 
| 97 71 |  | 
| @@ -130,12 +104,32 @@ In app/controllers/sessions_controller.rb: | |
| 130 104 |  | 
| 131 105 | 
             
                class SessionsController < ApplicationController
         | 
| 132 106 | 
             
                  include Clearance::SessionsController
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                  private
         | 
| 109 | 
            +
                  
         | 
| 110 | 
            +
                  def url_after_create
         | 
| 111 | 
            +
                    root_url # the default
         | 
| 112 | 
            +
                  end
         | 
| 113 | 
            +
                  
         | 
| 114 | 
            +
                  def url_after_destroy
         | 
| 115 | 
            +
                    login_url # the default
         | 
| 116 | 
            +
                  end
         | 
| 133 117 | 
             
                end
         | 
| 134 118 |  | 
| 135 119 | 
             
            In app/controllers/users_controller.rb:
         | 
| 136 120 |  | 
| 137 121 | 
             
                class UsersController < ApplicationController
         | 
| 138 122 | 
             
                  include Clearance::UsersController
         | 
| 123 | 
            +
                
         | 
| 124 | 
            +
                  private
         | 
| 125 | 
            +
                  
         | 
| 126 | 
            +
                  def url_after_create
         | 
| 127 | 
            +
                    root_url # the default
         | 
| 128 | 
            +
                  end
         | 
| 129 | 
            +
                  
         | 
| 130 | 
            +
                  def url_after_update
         | 
| 131 | 
            +
                    root_url # the default
         | 
| 132 | 
            +
                  end
         | 
| 139 133 | 
             
                end
         | 
| 140 134 |  | 
| 141 135 | 
             
            h2. Routes
         | 
    
        data/clearance.gemspec
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            Gem::Specification.new do |s|
         | 
| 2 2 | 
             
              s.name = "clearance"
         | 
| 3 | 
            -
              s.version = "0.1. | 
| 4 | 
            -
              s.date = "2008-09- | 
| 3 | 
            +
              s.version = "0.1.6"
         | 
| 4 | 
            +
              s.date = "2008-09-26"
         | 
| 5 5 | 
             
              s.summary = "Simple, complete Rails authentication."
         | 
| 6 6 | 
             
              s.email = "dcroak@thoughtbot.com"
         | 
| 7 7 | 
             
              s.homepage = "http://github.com/thoughtbot/clearance"
         | 
| @@ -3,10 +3,8 @@ module Clearance | |
| 3 3 |  | 
| 4 4 | 
             
                def self.included(base)
         | 
| 5 5 | 
             
                  base.class_eval do
         | 
| 6 | 
            -
                    before_filter :authenticate, :except => [:new, :create]
         | 
| 7 6 | 
             
                    before_filter :redirect_to_root, :only => [:new, :create], :if => :logged_in?
         | 
| 8 | 
            -
                     | 
| 9 | 
            -
             | 
| 7 | 
            +
                    
         | 
| 10 8 | 
             
                    filter_parameter_logging :password
         | 
| 11 9 |  | 
| 12 10 | 
             
                    include InstanceMethods
         | 
| @@ -17,16 +15,8 @@ module Clearance | |
| 17 15 | 
             
                end
         | 
| 18 16 |  | 
| 19 17 | 
             
                module InstanceMethods
         | 
| 20 | 
            -
                  def index
         | 
| 21 | 
            -
                    @users = User.find :all
         | 
| 22 | 
            -
                  end
         | 
| 23 | 
            -
                  
         | 
| 24 18 | 
             
                  def new
         | 
| 25 | 
            -
                    @user = User.new
         | 
| 26 | 
            -
                  end
         | 
| 27 | 
            -
                  
         | 
| 28 | 
            -
                  def show
         | 
| 29 | 
            -
                    @user = User.find params[:id]
         | 
| 19 | 
            +
                    @user = User.new(params[:user])
         | 
| 30 20 | 
             
                  end
         | 
| 31 21 |  | 
| 32 22 | 
             
                  def create
         | 
| @@ -39,42 +29,12 @@ module Clearance | |
| 39 29 | 
             
                      render :action => "new"
         | 
| 40 30 | 
             
                    end
         | 
| 41 31 | 
             
                  end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                  def edit
         | 
| 44 | 
            -
                    @user = User.find params[:id]
         | 
| 45 | 
            -
                  end
         | 
| 46 | 
            -
                  
         | 
| 47 | 
            -
                  def update
         | 
| 48 | 
            -
                    @user = User.find params[:id]
         | 
| 49 | 
            -
                    
         | 
| 50 | 
            -
                    if @user.update_attributes params[:user]
         | 
| 51 | 
            -
                      flash[:notice] = "User updated."
         | 
| 52 | 
            -
                      redirect_back_or root_url
         | 
| 53 | 
            -
                    else
         | 
| 54 | 
            -
                      render :action => "edit"
         | 
| 55 | 
            -
                    end
         | 
| 56 | 
            -
                  end
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                  def destroy
         | 
| 59 | 
            -
                    @user = User.find params[:id]
         | 
| 60 | 
            -
                    @user.destroy
         | 
| 61 | 
            -
                    redirect_to root_url
         | 
| 62 | 
            -
                  end
         | 
| 63 32 | 
             
                end
         | 
| 64 33 |  | 
| 65 34 | 
             
                module PrivateInstanceMethods
         | 
| 66 | 
            -
                  def ensure_user_is_accessing_self
         | 
| 67 | 
            -
                    return if current_user and current_user.respond_to?(:admin?) and current_user.admin?
         | 
| 68 | 
            -
                    deny_access('You cannot edit that user.', :redirect => root_url) unless current_user.id.to_i == params[:id].to_i
         | 
| 69 | 
            -
                  end
         | 
| 70 | 
            -
             | 
| 71 35 | 
             
                  def url_after_create
         | 
| 72 36 | 
             
                    root_url
         | 
| 73 37 | 
             
                  end
         | 
| 74 | 
            -
             | 
| 75 | 
            -
                  def url_after_update
         | 
| 76 | 
            -
                    root_url
         | 
| 77 | 
            -
                  end
         | 
| 78 38 | 
             
                end
         | 
| 79 39 |  | 
| 80 40 | 
             
              end
         | 
| @@ -44,10 +44,9 @@ module Clearance | |
| 44 44 | 
             
                        should_set_the_flash_to /bad/i
         | 
| 45 45 | 
             
                        should_render_template :new
         | 
| 46 46 | 
             
                        #should_return_from_session(:user_id, 'nil')
         | 
| 47 | 
            -
                        should "return  | 
| 47 | 
            +
                        should "return nil from the session for key :user_id" do
         | 
| 48 48 | 
             
                          instantiate_variables_from_assigns do
         | 
| 49 | 
            -
                             | 
| 50 | 
            -
                            assert_equal expected_value, session[:user_id], "Expected #{expected_value.inspect} but was #{session[:user_id]}"
         | 
| 49 | 
            +
                            assert_nil session[:user_id], "Expected nil but was #{session[:user_id]}"
         | 
| 51 50 | 
             
                          end
         | 
| 52 51 | 
             
                        end
         | 
| 53 52 | 
             
                      end
         | 
| @@ -15,6 +15,18 @@ module Clearance | |
| 15 15 | 
             
                          :fields => { :email => :text,
         | 
| 16 16 | 
             
                            :password => :password,
         | 
| 17 17 | 
             
                            :password_confirmation => :password }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                        context "with params" do
         | 
| 20 | 
            +
                          setup do
         | 
| 21 | 
            +
                            @email = 'a@example.com'
         | 
| 22 | 
            +
                            get :new, :user => {:email => @email}
         | 
| 23 | 
            +
                          end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                          should_assign_to :user
         | 
| 26 | 
            +
                          should "set the @user's params" do
         | 
| 27 | 
            +
                            assert_equal @email, assigns(:user).email
         | 
| 28 | 
            +
                          end
         | 
| 29 | 
            +
                        end
         | 
| 18 30 | 
             
                      end
         | 
| 19 31 |  | 
| 20 32 | 
             
                      context "on POST to /users" do
         | 
| @@ -32,11 +44,6 @@ module Clearance | |
| 32 44 | 
             
                        should_change 'User.count', :by => 1
         | 
| 33 45 | 
             
                      end
         | 
| 34 46 |  | 
| 35 | 
            -
                      should_deny_access_on "get :edit, :id => 1", :redirect => "login_url"
         | 
| 36 | 
            -
                      should_deny_access_on "put :update, :id => 1", :redirect => "login_url"
         | 
| 37 | 
            -
                      should_deny_access_on "get :show, :id => 1", :redirect => "login_url"
         | 
| 38 | 
            -
                      should_deny_access_on "delete :destroy, :id => 1", :redirect => "login_url"
         | 
| 39 | 
            -
             | 
| 40 47 | 
             
                    end
         | 
| 41 48 |  | 
| 42 49 | 
             
                    logged_in_user_context do
         | 
| @@ -45,66 +52,6 @@ module Clearance | |
| 45 52 | 
             
                      should_deny_access_on "post :create, :user => {}" 
         | 
| 46 53 | 
             
                      should_filter :password
         | 
| 47 54 |  | 
| 48 | 
            -
                      context "viewing their account" do
         | 
| 49 | 
            -
                        context "on GET to /users/:id/show" do
         | 
| 50 | 
            -
                          setup { get :show, :id => @user.to_param }
         | 
| 51 | 
            -
                          should_respond_with :success
         | 
| 52 | 
            -
                          should_render_template :show
         | 
| 53 | 
            -
                          should_not_set_the_flash
         | 
| 54 | 
            -
                          
         | 
| 55 | 
            -
                          should 'assign to @user' do
         | 
| 56 | 
            -
                            assert_equal @user, assigns(:user)
         | 
| 57 | 
            -
                          end
         | 
| 58 | 
            -
                        end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                        should_deny_access_on "delete :destroy, :id => @user.to_param"
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                        context "on GET to /users/:id/edit" do
         | 
| 63 | 
            -
                          setup { get :edit, :id => @user.to_param }
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                          should_respond_with :success
         | 
| 66 | 
            -
                          should_render_template :edit
         | 
| 67 | 
            -
                          should_not_set_the_flash
         | 
| 68 | 
            -
                          should_assign_to :user
         | 
| 69 | 
            -
                          should_have_form :action => "user_path(@user)",
         | 
| 70 | 
            -
                            :method => :put,
         | 
| 71 | 
            -
                            :fields => { :email => :text,
         | 
| 72 | 
            -
                              :password => :password,
         | 
| 73 | 
            -
                              :password_confirmation => :password }
         | 
| 74 | 
            -
                        end
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                        context "on PUT to /users/:id" do
         | 
| 77 | 
            -
                          setup do
         | 
| 78 | 
            -
                            put :update, 
         | 
| 79 | 
            -
                              :id => @user.to_param, 
         | 
| 80 | 
            -
                              :user => { :email => "none@example.com" }
         | 
| 81 | 
            -
                          end
         | 
| 82 | 
            -
                          should_set_the_flash_to /updated/i
         | 
| 83 | 
            -
                          should_redirect_to "@controller.send(:url_after_update)"
         | 
| 84 | 
            -
                          should_assign_to :user
         | 
| 85 | 
            -
                          should "update the user's attributes" do
         | 
| 86 | 
            -
                            assert_equal "none@example.com", assigns(:user).email
         | 
| 87 | 
            -
                          end
         | 
| 88 | 
            -
                        end
         | 
| 89 | 
            -
             | 
| 90 | 
            -
                        context "on PUT to /users/:id with invalid attributes" do
         | 
| 91 | 
            -
                          setup { put :update, :id => @user.to_param, :user => {:email => ''} }
         | 
| 92 | 
            -
                          should_not_set_the_flash
         | 
| 93 | 
            -
                          should_assign_to :user
         | 
| 94 | 
            -
                          should_render_template 'edit'
         | 
| 95 | 
            -
                          should "display errors" do
         | 
| 96 | 
            -
                            assert_select '#errorExplanation'
         | 
| 97 | 
            -
                          end
         | 
| 98 | 
            -
                        end
         | 
| 99 | 
            -
                      end
         | 
| 100 | 
            -
             | 
| 101 | 
            -
                      context "trying to access another user's account" do
         | 
| 102 | 
            -
                        setup { @user = Factory :user }
         | 
| 103 | 
            -
             | 
| 104 | 
            -
                        should_deny_access_on "get :show, :id => @user.to_param",                :flash => /cannot edit/i
         | 
| 105 | 
            -
                        should_deny_access_on "get :edit, :id => @user.to_param",                :flash => /cannot edit/i
         | 
| 106 | 
            -
                        should_deny_access_on "put :update, :id => @user.to_param, :user => {}", :flash => /cannot edit/i
         | 
| 107 | 
            -
                      end
         | 
| 108 55 | 
             
                    end
         | 
| 109 56 | 
             
                  end
         | 
| 110 57 | 
             
                end
         | 
| @@ -35,10 +35,10 @@ module Clearance | |
| 35 35 |  | 
| 36 36 | 
             
                    context 'A user' do
         | 
| 37 37 | 
             
                      setup do
         | 
| 38 | 
            -
                        @password = ' | 
| 38 | 
            +
                        @password = 'mysekrit'
         | 
| 39 39 | 
             
                        @salt = 'salt'
         | 
| 40 40 | 
             
                        User.any_instance.stubs(:initialize_salt)
         | 
| 41 | 
            -
                        @user = Factory(:user, :password => @password, :salt => @salt)
         | 
| 41 | 
            +
                        @user = Factory(:user, :password => @password, :password_confirmation => @password, :salt => @salt)
         | 
| 42 42 | 
             
                      end
         | 
| 43 43 |  | 
| 44 44 | 
             
                      should "require password validation on update" do
         | 
| @@ -52,7 +52,7 @@ module Clearance | |
| 52 52 | 
             
                      context 'authenticating a user' do
         | 
| 53 53 | 
             
                        context 'with good credentials' do
         | 
| 54 54 | 
             
                          setup do
         | 
| 55 | 
            -
                            @result = User.authenticate @user.email,  | 
| 55 | 
            +
                            @result = User.authenticate @user.email, @password
         | 
| 56 56 | 
             
                          end
         | 
| 57 57 |  | 
| 58 58 | 
             
                          should 'return true' do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: thoughtbot-clearance
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - thoughtbot, inc.
         | 
| @@ -14,7 +14,7 @@ autorequire: | |
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 16 |  | 
| 17 | 
            -
            date: 2008-09- | 
| 17 | 
            +
            date: 2008-09-26 00:00:00 -07:00
         | 
| 18 18 | 
             
            default_executable: 
         | 
| 19 19 | 
             
            dependencies: []
         | 
| 20 20 |  |