jakewendt-simply_authorized 1.3.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.
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