jakewendt-simply_authorized 1.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/README.rdoc +52 -0
  2. data/app/controllers/roles_controller.rb +38 -0
  3. data/app/models/role.rb +34 -0
  4. data/config/routes.rb +9 -0
  5. data/generators/simply_authorized/USAGE +0 -0
  6. data/generators/simply_authorized/simply_authorized_generator.rb +84 -0
  7. data/generators/simply_authorized/templates/autotest_simply_authorized.rb +2 -0
  8. data/generators/simply_authorized/templates/functional/roles_controller_test.rb +143 -0
  9. data/generators/simply_authorized/templates/migrations/create_roles.rb +14 -0
  10. data/generators/simply_authorized/templates/migrations/create_roles_users.rb +14 -0
  11. data/generators/simply_authorized/templates/simply_authorized.rake +8 -0
  12. data/generators/simply_authorized/templates/stylesheets/authorized.css +0 -0
  13. data/generators/simply_authorized/templates/unit/role_test.rb +30 -0
  14. data/lib/jakewendt-simply_authorized.rb +1 -0
  15. data/lib/simply_authorized.rb +41 -0
  16. data/lib/simply_authorized/authorization.rb +68 -0
  17. data/lib/simply_authorized/autotest.rb +26 -0
  18. data/lib/simply_authorized/controller.rb +87 -0
  19. data/lib/simply_authorized/core_extension.rb +16 -0
  20. data/lib/simply_authorized/factories.rb +15 -0
  21. data/lib/simply_authorized/factory_test_helper.rb +47 -0
  22. data/lib/simply_authorized/helper.rb +28 -0
  23. data/lib/simply_authorized/permissive_controller.rb +27 -0
  24. data/lib/simply_authorized/resourceful_controller.rb +83 -0
  25. data/lib/simply_authorized/tasks.rb +1 -0
  26. data/lib/simply_authorized/test_tasks.rb +47 -0
  27. data/lib/simply_authorized/user_model.rb +161 -0
  28. data/lib/tasks/application.rake +40 -0
  29. data/lib/tasks/database.rake +52 -0
  30. data/lib/tasks/documentation.rake +68 -0
  31. data/lib/tasks/rcov.rake +44 -0
  32. data/lib/tasks/simply_sessions.rake +5 -0
  33. data/rails/init.rb +4 -0
  34. data/test/app/controllers/application_controller.rb +16 -0
  35. data/test/app/controllers/home_controller.rb +10 -0
  36. data/test/app/controllers/users_controller.rb +43 -0
  37. data/test/app/models/user.rb +3 -0
  38. data/test/config/routes.rb +11 -0
  39. data/test/functional/authorized/roles_controller_test.rb +143 -0
  40. data/test/unit/authorized/role_test.rb +30 -0
  41. metadata +167 -0
@@ -0,0 +1,10 @@
1
+ class HomeController < ApplicationController
2
+
3
+ skip_before_filter :login_required
4
+
5
+ def show
6
+ render :text => 'You are home.',
7
+ :layout => true
8
+ end
9
+
10
+ end
@@ -0,0 +1,43 @@
1
+ class UsersController < ApplicationController
2
+
3
+ skip_before_filter :login_required, :only => :menu
4
+
5
+ before_filter :id_required,
6
+ :only => [:edit, :show, :update, :destroy]
7
+ before_filter :may_view_user_required,
8
+ :except => [:index,:menu]
9
+ before_filter :may_view_users_required,
10
+ :only => :index
11
+
12
+ ssl_allowed :menu
13
+
14
+ def menu
15
+ respond_to do |format|
16
+ format.js {}
17
+ end
18
+ end
19
+
20
+ def show
21
+ @roles = Role.all
22
+ end
23
+
24
+ def index
25
+ @users = User.find(:all)
26
+ end
27
+
28
+ def destroy
29
+ @user.destroy
30
+ redirect_to users_path
31
+ end
32
+
33
+ protected
34
+
35
+ def id_required
36
+ if !params[:id].blank? and User.exists?(params[:id])
37
+ @user = User.find(params[:id])
38
+ else
39
+ access_denied("user id required!", users_path)
40
+ end
41
+ end
42
+
43
+ end
@@ -0,0 +1,3 @@
1
+ class User < ActiveRecord::Base
2
+ authorized
3
+ end
@@ -0,0 +1,11 @@
1
+ ActionController::Routing::Routes.draw do |map|
2
+
3
+ map.resources :users, :only => [:destroy,:show,:index],
4
+ :collection => { :menu => :get } do |user|
5
+ user.resources :roles, :only => [:update,:destroy]
6
+ end
7
+
8
+ map.resource :home, :only => :show
9
+ map.root :controller => :home, :action => :show
10
+
11
+ end
@@ -0,0 +1,143 @@
1
+ #require File.dirname(__FILE__) + '/../../test_helper'
2
+ require 'test_helper'
3
+
4
+ class SimplyAuthorized::RolesControllerTest < ActionController::TestCase
5
+ tests RolesController
6
+
7
+ # no user_id
8
+ assert_no_route(:put, :update, :id => 'reader')
9
+ assert_no_route(:delete, :destroy, :id => 'reader')
10
+
11
+ %w( super_user admin ).each do |cu|
12
+
13
+ test "should update with #{cu} login" do
14
+ login_as send(cu)
15
+ u = active_user
16
+ assert !u.reload.role_names.include?('reader')
17
+ assert_difference("User.find(#{u.id}).roles.length",1){
18
+ put :update, :user_id => u.id, :id => 'reader'
19
+ }
20
+ assert u.reload.role_names.include?('reader')
21
+ assert_not_nil flash[:notice]
22
+ assert_redirected_to user_path(assigns(:user))
23
+ end
24
+
25
+ test "should destroy with #{cu} login" do
26
+ login_as send(cu)
27
+ u = active_user
28
+ u.roles << Role.find_or_create_by_name('reader')
29
+ assert u.reload.role_names.include?('reader')
30
+ assert_difference("User.find(#{u.id}).roles.length",-1){
31
+ delete :destroy, :user_id => u.id, :id => 'reader'
32
+ }
33
+ assert !u.reload.role_names.include?('reader')
34
+ assert_not_nil flash[:notice]
35
+ assert_redirected_to user_path(assigns(:user))
36
+ end
37
+
38
+ test "should NOT update without valid user_id with #{cu} login" do
39
+ login_as send(cu)
40
+ put :update, :user_id => 0, :id => 'reader'
41
+ assert_not_nil flash[:error]
42
+ assert_redirected_to users_path
43
+ end
44
+
45
+ test "should NOT destroy without valid user_id with #{cu} login" do
46
+ login_as send(cu)
47
+ delete :destroy, :user_id => 0, :id => 'reader'
48
+ assert_not_nil flash[:error]
49
+ assert_redirected_to users_path
50
+ end
51
+
52
+ test "should NOT update self with #{cu} login" do
53
+ u = send(cu)
54
+ login_as u
55
+ assert_difference("User.find(#{u.id}).roles.length",0){
56
+ put :update, :user_id => u.id, :id => 'reader'
57
+ }
58
+ assert_not_nil flash[:error]
59
+ assert_equal u, assigns(:user)
60
+ assert_redirected_to user_path(assigns(:user))
61
+ # assert_redirected_to root_path
62
+ end
63
+
64
+ test "should NOT destroy self with #{cu} login" do
65
+ u = send(cu)
66
+ login_as u
67
+ assert_difference("User.find(#{u.id}).roles.length",0){
68
+ delete :destroy, :user_id => u.id, :id => 'reader'
69
+ }
70
+ assert_not_nil flash[:error]
71
+ assert_equal u, assigns(:user)
72
+ assert_redirected_to user_path(assigns(:user))
73
+ # assert_redirected_to root_path
74
+ end
75
+
76
+ test "should NOT update without valid role_name with #{cu} login" do
77
+ login_as send(cu)
78
+ u = active_user
79
+ assert_difference("User.find(#{u.id}).roles.length",0){
80
+ put :update, :user_id => u.id, :id => 'bogus_role_name'
81
+ }
82
+ assert_not_nil flash[:error]
83
+ assert_redirected_to user_path(assigns(:user))
84
+ end
85
+
86
+ test "should NOT destroy without valid role_name with #{cu} login" do
87
+ login_as send(cu)
88
+ u = active_user
89
+ assert_difference("User.find(#{u.id}).roles.length",0){
90
+ delete :destroy, :user_id => u.id, :id => 'bogus_role_name'
91
+ }
92
+ assert_not_nil flash[:error]
93
+ assert_redirected_to user_path(assigns(:user))
94
+ end
95
+
96
+ end
97
+
98
+ %w( interviewer reader editor active_user ).each do |cu|
99
+
100
+ test "should NOT update with #{cu} login" do
101
+ login_as send(cu)
102
+ u = active_user
103
+ assert !u.reload.role_names.include?('administrator')
104
+ assert_difference("User.find(#{u.id}).roles.length",0){
105
+ put :update, :user_id => u.id, :id => 'administrator'
106
+ }
107
+ assert !u.reload.role_names.include?('administrator')
108
+ assert_not_nil flash[:error]
109
+ assert_redirected_to root_path
110
+ end
111
+
112
+ test "should NOT destroy with #{cu} login" do
113
+ login_as send(cu)
114
+ u = active_user
115
+ u.roles << Role.find_or_create_by_name('administrator')
116
+ assert u.reload.role_names.include?('administrator')
117
+ assert_difference("User.find(#{u.id}).roles.length",0){
118
+ delete :destroy, :user_id => u.id, :id => 'administrator'
119
+ }
120
+ assert u.reload.role_names.include?('administrator')
121
+ assert_not_nil flash[:error]
122
+ assert_redirected_to root_path
123
+ end
124
+
125
+ end
126
+
127
+ test "should NOT update without login" do
128
+ u = active_user
129
+ assert_difference("User.find(#{u.id}).roles.length",0){
130
+ put :update, :user_id => u.id, :id => 'administrator'
131
+ }
132
+ assert_redirected_to_login
133
+ end
134
+
135
+ test "should NOT destroy without login" do
136
+ u = active_user
137
+ assert_difference("User.find(#{u.id}).roles.length",0){
138
+ delete :destroy, :user_id => u.id, :id => 'administrator'
139
+ }
140
+ assert_redirected_to_login
141
+ end
142
+
143
+ end
@@ -0,0 +1,30 @@
1
+ #require File.dirname(__FILE__) + '/../../test_helper'
2
+ require 'test_helper'
3
+
4
+ class SimplyAuthorized::RoleTest < ActiveSupport::TestCase
5
+
6
+ assert_should_act_as_list(:model => 'Role')
7
+ assert_should_require(:name,
8
+ :model => 'Role')
9
+ assert_should_require_unique(:name,
10
+ :model => 'Role')
11
+ assert_should_habtm(:users,
12
+ :model => 'Role')
13
+
14
+ test "should create role" do
15
+ assert_difference('Role.count',1) do
16
+ object = create_object
17
+ assert !object.new_record?,
18
+ "#{object.errors.full_messages.to_sentence}"
19
+ end
20
+ end
21
+
22
+ protected
23
+
24
+ def create_object(options = {})
25
+ record = Factory.build(:role,options)
26
+ record.save
27
+ record
28
+ end
29
+
30
+ end
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jakewendt-simply_authorized
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 3
9
+ - 6
10
+ version: 1.3.6
11
+ platform: ruby
12
+ authors:
13
+ - George 'Jake' Wendt
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-08-10 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rails
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 2
32
+ version: "2"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: jakewendt-ruby_extension
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: jakewendt-rails_extension
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :runtime
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: ryanb-acts-as-list
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :runtime
76
+ version_requirements: *id004
77
+ description: longer description of your gem
78
+ email: github@jake.otherinbox.com
79
+ executables: []
80
+
81
+ extensions: []
82
+
83
+ extra_rdoc_files:
84
+ - README.rdoc
85
+ files:
86
+ - app/controllers/roles_controller.rb
87
+ - app/models/role.rb
88
+ - config/routes.rb
89
+ - generators/simply_authorized/USAGE
90
+ - generators/simply_authorized/simply_authorized_generator.rb
91
+ - generators/simply_authorized/templates/autotest_simply_authorized.rb
92
+ - generators/simply_authorized/templates/functional/roles_controller_test.rb
93
+ - generators/simply_authorized/templates/migrations/create_roles.rb
94
+ - generators/simply_authorized/templates/migrations/create_roles_users.rb
95
+ - generators/simply_authorized/templates/simply_authorized.rake
96
+ - generators/simply_authorized/templates/stylesheets/authorized.css
97
+ - generators/simply_authorized/templates/unit/role_test.rb
98
+ - lib/jakewendt-simply_authorized.rb
99
+ - lib/simply_authorized.rb
100
+ - lib/simply_authorized/authorization.rb
101
+ - lib/simply_authorized/autotest.rb
102
+ - lib/simply_authorized/controller.rb
103
+ - lib/simply_authorized/core_extension.rb
104
+ - lib/simply_authorized/factories.rb
105
+ - lib/simply_authorized/factory_test_helper.rb
106
+ - lib/simply_authorized/helper.rb
107
+ - lib/simply_authorized/permissive_controller.rb
108
+ - lib/simply_authorized/resourceful_controller.rb
109
+ - lib/simply_authorized/tasks.rb
110
+ - lib/simply_authorized/test_tasks.rb
111
+ - lib/simply_authorized/user_model.rb
112
+ - lib/tasks/application.rake
113
+ - lib/tasks/database.rake
114
+ - lib/tasks/documentation.rake
115
+ - lib/tasks/rcov.rake
116
+ - lib/tasks/simply_sessions.rake
117
+ - rails/init.rb
118
+ - README.rdoc
119
+ - test/app/controllers/application_controller.rb
120
+ - test/app/controllers/home_controller.rb
121
+ - test/app/controllers/users_controller.rb
122
+ - test/app/models/user.rb
123
+ - test/config/routes.rb
124
+ - test/functional/authorized/roles_controller_test.rb
125
+ - test/unit/authorized/role_test.rb
126
+ has_rdoc: true
127
+ homepage: http://github.com/jakewendt/simply_authorized
128
+ licenses: []
129
+
130
+ post_install_message:
131
+ rdoc_options: []
132
+
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ hash: 3
141
+ segments:
142
+ - 0
143
+ version: "0"
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
153
+ requirements: []
154
+
155
+ rubyforge_project:
156
+ rubygems_version: 1.6.2
157
+ signing_key:
158
+ specification_version: 3
159
+ summary: one-line summary of your gem
160
+ test_files:
161
+ - test/app/controllers/application_controller.rb
162
+ - test/app/controllers/home_controller.rb
163
+ - test/app/controllers/users_controller.rb
164
+ - test/app/models/user.rb
165
+ - test/config/routes.rb
166
+ - test/functional/authorized/roles_controller_test.rb
167
+ - test/unit/authorized/role_test.rb