GitHub Sale: sign up for any paid plan this week and pay nothing until January 1, 2009!  [ hide ]

public
Fork of technoweenie/restful-authentication
Description: Generates common user authentication code for Rails/Merb, with a full test/unit and rspec suite and optional Acts as State Machine support built-in.
Homepage: http://weblog.techno-weenie.net
Clone URL: git://github.com/b3b0p/restful-authentication.git
update for edge rails, remove some cruft along the way [Joshua Schairbaum]


git-svn-id: 
http://svn.techno-weenie.net/projects/plugins/restful_authentication@2921 
567b1171-46fb-0310-a4c9-b4bef9110e78
technoweenie (author)
Mon Jun 25 19:46:44 -0700 2007
commit  eaf17ee3274bd2ace65f3a585718095f0a23ed17
tree    e81189b2465c251ec995be1c548a7e7a76aeb50d
parent  e1e49b11bcf73800a0c1a905b0ae1b6d598c021d
...
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
 
114
...
4
5
6
 
 
 
 
 
 
 
 
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
11
0
@@ -4,110 +4,7 @@ module AuthenticatedTestHelper
0
     @request.session[:<%= file_name %>] = <%= file_name %> ? <%= table_name %>(<%= file_name %>).id : nil
0
   end
0
 
0
- def content_type(type)
0
- @request.env['Content-Type'] = type
0
- end
0
-
0
- def accept(accept)
0
- @request.env["HTTP_ACCEPT"] = accept
0
- end
0
-
0
   def authorize_as(user)
0
- if user
0
- @request.env["HTTP_AUTHORIZATION"] = "Basic #{Base64.encode64("#{users(user).login}:test")}"
0
- accept 'application/xml'
0
- content_type 'application/xml'
0
- else
0
- @request.env["HTTP_AUTHORIZATION"] = nil
0
- accept nil
0
- content_type nil
0
- end
0
- end
0
-
0
- # http://project.ioni.st/post/217#post-217
0
- #
0
- # def test_new_publication
0
- # assert_difference(Publication, :count) do
0
- # post :create, :publication => {...}
0
- # # ...
0
- # end
0
- # end
0
- #
0
- def assert_difference(object, method = nil, difference = 1)
0
- initial_value = object.send(method)
0
- yield
0
- assert_equal initial_value + difference, object.send(method), "#{object}##{method}"
0
- end
0
-
0
- def assert_no_difference(object, method, &block)
0
- assert_difference object, method, 0, &block
0
- end
0
-
0
- # Assert the block redirects to the login
0
- #
0
- # assert_requires_login(:bob) { |c| c.get :edit, :id => 1 }
0
- #
0
- def assert_requires_login(login = nil)
0
- yield HttpLoginProxy.new(self, login)
0
+ @request.env["HTTP_AUTHORIZATION"] = user ? "Basic #{Base64.encode64("#{users(user).login}:test")}" : nil
0
   end
0
-
0
- def assert_http_authentication_required(login = nil)
0
- yield XmlLoginProxy.new(self, login)
0
- end
0
-
0
- def reset!(*instance_vars)
0
- instance_vars = [:controller, :request, :response] unless instance_vars.any?
0
- instance_vars.collect! { |v| "@#{v}".to_sym }
0
- instance_vars.each do |var|
0
- instance_variable_set(var, instance_variable_get(var).class.new)
0
- end
0
- end
0
-end
0
-
0
-class BaseLoginProxy
0
- attr_reader :controller
0
- attr_reader :options
0
- def initialize(controller, login)
0
- @controller = controller
0
- @login = login
0
- end
0
-
0
- private
0
- def authenticated
0
- raise NotImplementedError
0
- end
0
-
0
- def check
0
- raise NotImplementedError
0
- end
0
-
0
- def method_missing(method, *args)
0
- @controller.reset!
0
- authenticate
0
- @controller.send(method, *args)
0
- check
0
- end
0
-end
0
-
0
-class HttpLoginProxy < BaseLoginProxy
0
- protected
0
- def authenticate
0
- @controller.login_as @login if @login
0
- end
0
-
0
- def check
0
- @controller.assert_redirected_to :controller => 'sessions', :action => 'new'
0
- end
0
-end
0
-
0
-class XmlLoginProxy < BaseLoginProxy
0
- protected
0
- def authenticate
0
- @controller.accept 'application/xml'
0
- @controller.authorize_as @login if @login
0
- end
0
-
0
- def check
0
- @controller.assert_response 401
0
- end
0
-end
0
+end
0
\ No newline at end of file
...
22
23
24
25
 
26
27
28
...
22
23
24
 
25
26
27
28
0
@@ -22,7 +22,7 @@ class <%= class_name %> < ActiveRecord::Base
0
   end
0
 
0
   def activated?
0
- !! activation_code.nil?
0
+ activation_code.nil?
0
   end
0
 
0
   # Returns true if the user has just been activated.
...
18
19
20
21
 
22
23
24
25
26
27
28
 
29
30
31
...
33
34
35
36
 
37
38
39
...
41
42
43
44
 
45
46
47
...
49
50
51
52
 
53
54
55
...
66
67
68
69
 
70
71
72
...
18
19
20
 
21
22
23
24
25
26
27
 
28
29
30
31
...
33
34
35
 
36
37
38
39
...
41
42
43
 
44
45
46
47
...
49
50
51
 
52
53
54
55
...
66
67
68
 
69
70
71
72
0
@@ -18,14 +18,14 @@ class <%= model_controller_class_name %>ControllerTest < Test::Unit::TestCase
0
   end
0
 
0
   def test_should_allow_signup
0
- assert_difference <%= class_name %>, :count do
0
+ assert_difference '<%= class_name %>.count' do
0
       create_<%= file_name %>
0
       assert_response :redirect
0
     end
0
   end
0
 
0
   def test_should_require_login_on_signup
0
- assert_no_difference <%= class_name %>, :count do
0
+ assert_no_difference '<%= class_name %>.count' do
0
       create_<%= file_name %>(:login => nil)
0
       assert assigns(:<%= file_name %>).errors.on(:login)
0
       assert_response :success
0
@@ -33,7 +33,7 @@ class <%= model_controller_class_name %>ControllerTest < Test::Unit::TestCase
0
   end
0
 
0
   def test_should_require_password_on_signup
0
- assert_no_difference <%= class_name %>, :count do
0
+ assert_no_difference '<%= class_name %>.count' do
0
       create_<%= file_name %>(:password => nil)
0
       assert assigns(:<%= file_name %>).errors.on(:password)
0
       assert_response :success
0
@@ -41,7 +41,7 @@ class <%= model_controller_class_name %>ControllerTest < Test::Unit::TestCase
0
   end
0
 
0
   def test_should_require_password_confirmation_on_signup
0
- assert_no_difference <%= class_name %>, :count do
0
+ assert_no_difference '<%= class_name %>.count' do
0
       create_<%= file_name %>(:password_confirmation => nil)
0
       assert assigns(:<%= file_name %>).errors.on(:password_confirmation)
0
       assert_response :success
0
@@ -49,7 +49,7 @@ class <%= model_controller_class_name %>ControllerTest < Test::Unit::TestCase
0
   end
0
 
0
   def test_should_require_email_on_signup
0
- assert_no_difference <%= class_name %>, :count do
0
+ assert_no_difference '<%= class_name %>.count' do
0
       create_<%= file_name %>(:email => nil)
0
       assert assigns(:<%= file_name %>).errors.on(:email)
0
       assert_response :success
0
@@ -66,7 +66,7 @@ class <%= model_controller_class_name %>ControllerTest < Test::Unit::TestCase
0
 
0
   protected
0
     def create_<%= file_name %>(options = {})
0
- post :create, :<%= file_name %> => { :login => 'quire', :email => 'quire@example.com',
0
+ post :create, :<%= file_name %> => { :login => 'quire', :email => 'quire@example.com',
0
         :password => 'quire', :password_confirmation => 'quire' }.merge(options)
0
     end
0
 end
...
7
8
9
10
 
11
12
13
14
15
16
17
 
18
19
20
21
22
23
24
 
25
26
27
28
29
30
31
 
32
33
34
35
36
37
38
 
39
40
41
...
7
8
9
 
10
11
12
13
14
15
16
 
17
18
19
20
21
22
23
 
24
25
26
27
28
29
30
 
31
32
33
34
35
36
37
 
38
39
40
41
0
@@ -7,35 +7,35 @@ class <%= class_name %>Test < Test::Unit::TestCase
0
   fixtures :<%= table_name %>
0
 
0
   def test_should_create_<%= file_name %>
0
- assert_difference <%= class_name %>, :count do
0
+ assert_difference '<%= class_name %>.count' do
0
       <%= file_name %> = create_<%= file_name %>
0
       assert !<%= file_name %>.new_record?, "#{<%= file_name %>.errors.full_messages.to_sentence}"
0
     end
0
   end
0
 
0
   def test_should_require_login
0
- assert_no_difference <%= class_name %>, :count do
0
+ assert_no_difference '<%= class_name %>.count' do
0
       u = create_<%= file_name %>(:login => nil)
0
       assert u.errors.on(:login)
0
     end
0
   end
0
 
0
   def test_should_require_password
0
- assert_no_difference <%= class_name %>, :count do
0
+ assert_no_difference '<%= class_name %>.count' do
0
       u = create_<%= file_name %>(:password => nil)
0
       assert u.errors.on(:password)
0
     end
0
   end
0
 
0
   def test_should_require_password_confirmation
0
- assert_no_difference <%= class_name %>, :count do
0
+ assert_no_difference '<%= class_name %>.count' do
0
       u = create_<%= file_name %>(:password_confirmation => nil)
0
       assert u.errors.on(:password_confirmation)
0
     end
0
   end
0
 
0
   def test_should_require_email
0
- assert_no_difference <%= class_name %>, :count do
0
+ assert_no_difference '<%= class_name %>.count' do
0
       u = create_<%= file_name %>(:email => nil)
0
       assert u.errors.on(:email)
0
     end

Comments

    No one has commented yet.