thoughtbot-clearance 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|