simple_roles 0.0.5 → 0.0.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/CHANGELOG.md +21 -0
- data/Gemfile +2 -4
- data/README.md +100 -17
- data/Rakefile +6 -12
- data/db/migrate/001_create_user_roles.rb +5 -4
- data/db/migrate/002_create_roles.rb +6 -3
- data/lib/simple_roles/configuration.rb +64 -11
- data/lib/simple_roles/engine.rb +2 -0
- data/lib/simple_roles/macros.rb +2 -5
- data/lib/simple_roles/many/persistence.rb +44 -0
- data/lib/simple_roles/many/roles_methods.rb +88 -0
- data/lib/simple_roles/many.rb +5 -0
- data/lib/simple_roles/one/persistence.rb +13 -0
- data/lib/simple_roles/one/roles_methods.rb +38 -0
- data/lib/simple_roles/one.rb +5 -0
- data/lib/simple_roles/packager.rb +18 -0
- data/lib/simple_roles/version.rb +1 -1
- data/lib/simple_roles.rb +27 -12
- data/simple_roles.gemspec +36 -30
- data/spec/dummy/config/database.yml +2 -13
- data/spec/dummy/config/environments/development.rb +0 -3
- data/spec/dummy/config/initializers/simple_roles.rb +2 -1
- data/spec/integration/main_spec.rb +6 -6
- data/spec/integration/requests/main_spec.rb +16 -17
- data/spec/simple_roles/configuration_spec.rb +66 -0
- data/spec/simple_roles/integration_many_spec.rb +47 -0
- data/spec/simple_roles/macros_spec.rb +25 -10
- data/spec/{support/aliases.rb → simple_roles/many/persistence_spec.rb} +0 -0
- data/spec/simple_roles/many_spec.rb +186 -0
- data/spec/simple_roles/one_spec.rb +77 -0
- data/spec/spec_helper.rb +40 -21
- data/spec/support/controller_macros.rb +1 -18
- data/spec/support/database.yml +1 -1
- data/spec/support/factories.rb +6 -17
- data/spec/support/migrations/010_create_one_users.rb +16 -0
- data/spec/support/migrations/{010_create_users.rb → 011_create_users.rb} +3 -3
- data/spec/support/{fixtures/models → models}/.gitkeep +0 -0
- data/spec/support/models/one_user.rb +2 -0
- data/spec/support/{fixtures/models → models}/user.rb +0 -1
- data/spec/support/setup_roles.rb +5 -0
- data/spec/support/transaction.rb +30 -0
- data/spec/transaction_spec.rb +15 -0
- metadata +176 -137
- data/lib/simple_roles/base.rb +0 -111
- data/lib/simple_roles/roles_array.rb +0 -63
- data/spec/integration/messages_spec.rb +0 -62
- data/spec/simple_roles/base_spec.rb +0 -191
- data/spec/support/rspec_helpers.rb +0 -22
data/simple_roles.gemspec
CHANGED
@@ -4,19 +4,20 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.0.
|
7
|
+
s.name = "simple_roles"
|
8
|
+
s.version = "0.0.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
11
|
+
s.authors = ["stanislaw"]
|
12
|
+
s.date = "2012-06-27"
|
13
|
+
s.description = "Simple Role System for Rails Apps"
|
14
|
+
s.email = "s.pankevich@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"README.md"
|
17
17
|
]
|
18
18
|
s.files = [
|
19
19
|
".rspec",
|
20
|
+
"CHANGELOG.md",
|
20
21
|
"Gemfile",
|
21
22
|
"MIT-LICENSE",
|
22
23
|
"README.md",
|
@@ -36,11 +37,16 @@ Gem::Specification.new do |s|
|
|
36
37
|
"db/migrate/001_create_user_roles.rb",
|
37
38
|
"db/migrate/002_create_roles.rb",
|
38
39
|
"lib/simple_roles.rb",
|
39
|
-
"lib/simple_roles/base.rb",
|
40
40
|
"lib/simple_roles/configuration.rb",
|
41
41
|
"lib/simple_roles/engine.rb",
|
42
42
|
"lib/simple_roles/macros.rb",
|
43
|
-
"lib/simple_roles/
|
43
|
+
"lib/simple_roles/many.rb",
|
44
|
+
"lib/simple_roles/many/persistence.rb",
|
45
|
+
"lib/simple_roles/many/roles_methods.rb",
|
46
|
+
"lib/simple_roles/one.rb",
|
47
|
+
"lib/simple_roles/one/persistence.rb",
|
48
|
+
"lib/simple_roles/one/roles_methods.rb",
|
49
|
+
"lib/simple_roles/packager.rb",
|
44
50
|
"lib/simple_roles/version.rb",
|
45
51
|
"lib/tasks/simple_roles_tasks.rake",
|
46
52
|
"script/rails",
|
@@ -125,25 +131,31 @@ Gem::Specification.new do |s|
|
|
125
131
|
"spec/dummy/test/unit/user_test.rb",
|
126
132
|
"spec/dummy_spec_helper.rb",
|
127
133
|
"spec/integration/main_spec.rb",
|
128
|
-
"spec/integration/messages_spec.rb",
|
129
134
|
"spec/integration/requests/main_spec.rb",
|
130
|
-
"spec/simple_roles/
|
135
|
+
"spec/simple_roles/configuration_spec.rb",
|
136
|
+
"spec/simple_roles/integration_many_spec.rb",
|
131
137
|
"spec/simple_roles/macros_spec.rb",
|
138
|
+
"spec/simple_roles/many/persistence_spec.rb",
|
139
|
+
"spec/simple_roles/many_spec.rb",
|
140
|
+
"spec/simple_roles/one_spec.rb",
|
132
141
|
"spec/spec_helper.rb",
|
133
|
-
"spec/support/aliases.rb",
|
134
142
|
"spec/support/controller_macros.rb",
|
135
143
|
"spec/support/database.yml",
|
136
144
|
"spec/support/factories.rb",
|
137
|
-
"spec/support/
|
138
|
-
"spec/support/
|
139
|
-
"spec/support/
|
140
|
-
"spec/support/
|
145
|
+
"spec/support/migrations/010_create_one_users.rb",
|
146
|
+
"spec/support/migrations/011_create_users.rb",
|
147
|
+
"spec/support/models/.gitkeep",
|
148
|
+
"spec/support/models/one_user.rb",
|
149
|
+
"spec/support/models/user.rb",
|
150
|
+
"spec/support/setup_roles.rb",
|
151
|
+
"spec/support/transaction.rb",
|
152
|
+
"spec/transaction_spec.rb"
|
141
153
|
]
|
142
|
-
s.homepage =
|
143
|
-
s.licenses = [
|
144
|
-
s.require_paths = [
|
145
|
-
s.rubygems_version =
|
146
|
-
s.summary =
|
154
|
+
s.homepage = "http://github.com/stanislaw/simple_roles"
|
155
|
+
s.licenses = ["MIT"]
|
156
|
+
s.require_paths = ["lib"]
|
157
|
+
s.rubygems_version = "1.8.19"
|
158
|
+
s.summary = "Rails Engine providing Role System for Rails apps"
|
147
159
|
|
148
160
|
if s.respond_to? :specification_version then
|
149
161
|
s.specification_version = 3
|
@@ -152,15 +164,13 @@ Gem::Specification.new do |s|
|
|
152
164
|
s.add_runtime_dependency(%q<require_all>, [">= 0"])
|
153
165
|
s.add_runtime_dependency(%q<sugar-high>, [">= 0"])
|
154
166
|
s.add_runtime_dependency(%q<sweetloader>, [">= 0"])
|
155
|
-
s.
|
167
|
+
s.add_runtime_dependency(%q<activerecord>, [">= 0"])
|
156
168
|
s.add_development_dependency(%q<rake-kit>, [">= 0"])
|
157
169
|
s.add_development_dependency(%q<devise>, [">= 0"])
|
158
170
|
s.add_development_dependency(%q<mysql2>, [">= 0"])
|
159
171
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
160
172
|
s.add_development_dependency(%q<cutter>, [">= 0"])
|
161
|
-
s.add_development_dependency(%q<
|
162
|
-
s.add_development_dependency(%q<rspec-rails>, [">= 0"])
|
163
|
-
s.add_development_dependency(%q<capybara>, [">= 0"])
|
173
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
164
174
|
s.add_development_dependency(%q<factory_girl>, [">= 0"])
|
165
175
|
else
|
166
176
|
s.add_dependency(%q<require_all>, [">= 0"])
|
@@ -172,9 +182,7 @@ Gem::Specification.new do |s|
|
|
172
182
|
s.add_dependency(%q<mysql2>, [">= 0"])
|
173
183
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
174
184
|
s.add_dependency(%q<cutter>, [">= 0"])
|
175
|
-
s.add_dependency(%q<
|
176
|
-
s.add_dependency(%q<rspec-rails>, [">= 0"])
|
177
|
-
s.add_dependency(%q<capybara>, [">= 0"])
|
185
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
178
186
|
s.add_dependency(%q<factory_girl>, [">= 0"])
|
179
187
|
end
|
180
188
|
else
|
@@ -187,9 +195,7 @@ Gem::Specification.new do |s|
|
|
187
195
|
s.add_dependency(%q<mysql2>, [">= 0"])
|
188
196
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
189
197
|
s.add_dependency(%q<cutter>, [">= 0"])
|
190
|
-
s.add_dependency(%q<
|
191
|
-
s.add_dependency(%q<rspec-rails>, [">= 0"])
|
192
|
-
s.add_dependency(%q<capybara>, [">= 0"])
|
198
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
193
199
|
s.add_dependency(%q<factory_girl>, [">= 0"])
|
194
200
|
end
|
195
201
|
end
|
@@ -3,7 +3,7 @@ development:
|
|
3
3
|
host: localhost
|
4
4
|
database: simple_roles_development
|
5
5
|
username: root
|
6
|
-
password:
|
6
|
+
password:
|
7
7
|
encoding: utf8
|
8
8
|
|
9
9
|
test:
|
@@ -11,16 +11,5 @@ test:
|
|
11
11
|
host: localhost
|
12
12
|
database: simple_roles_test
|
13
13
|
username: root
|
14
|
-
password:
|
14
|
+
password:
|
15
15
|
encoding: utf8
|
16
|
-
|
17
|
-
production:
|
18
|
-
adapter: mysql2
|
19
|
-
host: localhost
|
20
|
-
port: 5432
|
21
|
-
database: simple_roles_production
|
22
|
-
username: pgsql
|
23
|
-
password: pgsql
|
24
|
-
schema_search_path: public
|
25
|
-
encoding: utf8
|
26
|
-
template: template0
|
@@ -13,9 +13,6 @@ Dummy::Application.configure do
|
|
13
13
|
config.consider_all_requests_local = true
|
14
14
|
config.action_controller.perform_caching = false
|
15
15
|
|
16
|
-
# Don't care if the mailer can't send
|
17
|
-
config.action_mailer.raise_delivery_errors = false
|
18
|
-
|
19
16
|
# Print deprecation notices to the Rails logger
|
20
17
|
config.active_support.deprecation = :log
|
21
18
|
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "" do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
3
|
+
# describe "" do
|
4
|
+
# pending "truth" do
|
5
|
+
# Rails.application.should be_kind_of(Dummy::Application)
|
6
|
+
# end
|
7
|
+
# end
|
@@ -1,21 +1,20 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "Requests" do
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
# describe "Requests" do
|
4
|
+
# pending "truth" do
|
5
|
+
# Rails.application.should be_kind_of(Dummy::Application)
|
6
|
+
# end
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
# pending "Basic pages" do
|
9
|
+
# before do
|
10
|
+
# login_as(User.first)
|
11
|
+
# end
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
# it "should get root" do
|
14
|
+
# pending
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
16
|
+
# get '/'
|
17
|
+
# response.status.should be(200)
|
18
|
+
# end
|
19
|
+
# end
|
20
|
+
# end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SimpleRoles::Configuration do
|
4
|
+
subject { SimpleRoles::Configuration }
|
5
|
+
|
6
|
+
its(:default_strategy) { should == :one }
|
7
|
+
its(:strategy) { should == :one }
|
8
|
+
its(:strategy_class) { should == SimpleRoles::One }
|
9
|
+
|
10
|
+
describe ".strategy" do
|
11
|
+
it "should retrieve current strategy if no argument passed" do
|
12
|
+
subject.strategy.should == :one
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should set current strategy if strategy passed as argument" do
|
16
|
+
subject.strategy :many
|
17
|
+
subject.strategy.should == :many
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should not allow wrong strategies" do
|
21
|
+
expect {
|
22
|
+
subject.strategy :wrong!
|
23
|
+
}.to raise_error
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe ".strategy=" do
|
28
|
+
it "should set current strategy if strategy passed as argument" do
|
29
|
+
subject.strategy = :one
|
30
|
+
subject.strategy.should == :one
|
31
|
+
|
32
|
+
subject.strategy = :many
|
33
|
+
subject.strategy.should == :many
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should not allow wrong strategies" do
|
37
|
+
expect {
|
38
|
+
subject.strategy = :wrong!
|
39
|
+
}.to raise_error
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe ".valid_roles=" do
|
44
|
+
it "should set valid roles" do
|
45
|
+
valid_roles_before = SimpleRoles::Configuration.valid_roles
|
46
|
+
|
47
|
+
SimpleRoles::Configuration.valid_roles = [:user]
|
48
|
+
SimpleRoles::Configuration.valid_roles.should == [:user]
|
49
|
+
|
50
|
+
SimpleRoles::Configuration.valid_roles = valid_roles_before
|
51
|
+
SimpleRoles::Configuration.valid_roles.should == valid_roles_before
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe ".valid_roles" do
|
56
|
+
it "should also set valid roles if they passed as arg" do
|
57
|
+
valid_roles_before = SimpleRoles::Configuration.valid_roles
|
58
|
+
|
59
|
+
SimpleRoles::Configuration.valid_roles :user
|
60
|
+
SimpleRoles::Configuration.valid_roles.should == [:user]
|
61
|
+
|
62
|
+
SimpleRoles::Configuration.valid_roles valid_roles_before
|
63
|
+
SimpleRoles::Configuration.valid_roles.should == valid_roles_before
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
SimpleRoles.configure do |config|
|
4
|
+
config.valid_roles = [:user, :admin, :editor]
|
5
|
+
end
|
6
|
+
|
7
|
+
describe 'Integration for SimpleRoles::Many' do
|
8
|
+
before do
|
9
|
+
setup_roles
|
10
|
+
SimpleRoles::Packager.package User, :many
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should all work" do
|
14
|
+
admin_role = Role.find_by_name("admin")
|
15
|
+
user = User.new(:name => "stanislaw")
|
16
|
+
user.roles_list.should be_empty
|
17
|
+
user.has_any_role?(:admin).should be_false
|
18
|
+
user.roles = [ :admin ]
|
19
|
+
user.roles_list.should include(:admin)
|
20
|
+
user.roles.should include(:admin)
|
21
|
+
user.has_role?(:admin).should be_true
|
22
|
+
user.admin?.should be_true
|
23
|
+
user.is_admin?.should be_true
|
24
|
+
user.has_roles?(:admin).should be_true
|
25
|
+
user.save!
|
26
|
+
user.roles.should include(:admin)
|
27
|
+
user = User.find_by_name! "stanislaw"
|
28
|
+
user.roles.should include(:admin)
|
29
|
+
user.remove_role(:admin)
|
30
|
+
user.roles.should be_empty
|
31
|
+
user.save!
|
32
|
+
user.roles.should be_empty
|
33
|
+
user.roles = [:admin, :user]
|
34
|
+
user.roles.should == Array.new([:admin, :user])
|
35
|
+
user.has_role?(:admin, :user).should be_true
|
36
|
+
user.has_roles?([:admin, :user]).should be_true
|
37
|
+
user.roles.size.should == 2
|
38
|
+
user.roles = [:admin]
|
39
|
+
user.roles.should include(:admin)
|
40
|
+
user.add_role :user
|
41
|
+
user.roles.should include(:user, :admin)
|
42
|
+
user.has_any_role?(:user).should be_true
|
43
|
+
user.has_any_role?(:user, :admin).should be_true
|
44
|
+
user.has_any_role?([:user, :admin])
|
45
|
+
user.has_any_role?(:blip).should be_false
|
46
|
+
end
|
47
|
+
end
|
@@ -1,25 +1,40 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe SimpleRoles
|
4
|
-
|
3
|
+
describe 'SimpleRoles Macros' do
|
4
|
+
|
5
5
|
context "Macros availability" do
|
6
6
|
subject { Module }
|
7
|
-
before {
|
8
|
-
|
9
|
-
}
|
10
|
-
|
11
|
-
specify { should be_kind_of(SimpleRoles::Macros) }
|
7
|
+
before { require 'simple_roles' }
|
8
|
+
specify { should be_kind_of SimpleRoles::Macros }
|
12
9
|
end
|
13
10
|
|
14
|
-
context "
|
11
|
+
context "When Macros is applied" do
|
15
12
|
subject { User }
|
13
|
+
|
14
|
+
specify { should be_kind_of SimpleRoles::Macros }
|
15
|
+
|
16
16
|
before do
|
17
17
|
class User < ActiveRecord::Base
|
18
|
-
simple_roles
|
18
|
+
simple_roles do
|
19
|
+
strategy :many
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "Changes in User" do
|
25
|
+
specify { should include SimpleRoles::Many::RolesMethods }
|
26
|
+
specify { should include SimpleRoles::Many::RolesMethods }
|
27
|
+
|
28
|
+
[:roles, :roles_list, :add_role, :roles=, :remove_role].each do |meth|
|
29
|
+
specify { subject.new.should respond_to meth }
|
19
30
|
end
|
20
31
|
end
|
21
32
|
|
22
|
-
|
33
|
+
context "Changes in SimpleRoles::Configuration" do
|
34
|
+
it "should set strategy" do
|
35
|
+
SimpleRoles::Configuration.strategy.should == :many
|
36
|
+
end
|
37
|
+
end
|
23
38
|
end
|
24
39
|
|
25
40
|
end
|
File without changes
|
@@ -0,0 +1,186 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
SimpleRoles.configure do |config|
|
4
|
+
config.valid_roles = [:user, :admin, :editor]
|
5
|
+
end
|
6
|
+
|
7
|
+
describe SimpleRoles::Many do
|
8
|
+
let(:user) { create :user }
|
9
|
+
|
10
|
+
before(:each) do
|
11
|
+
setup_roles
|
12
|
+
SimpleRoles.package User, :many
|
13
|
+
end
|
14
|
+
|
15
|
+
context "Class Methods" do
|
16
|
+
subject { User }
|
17
|
+
|
18
|
+
specify { should respond_to(:valid_roles) }
|
19
|
+
its(:valid_roles) { should include(:user, :admin)}
|
20
|
+
end
|
21
|
+
|
22
|
+
context "Instance methods" do
|
23
|
+
subject { User.new }
|
24
|
+
|
25
|
+
[:roles, :roles_list].each do |meth|
|
26
|
+
specify { should respond_to(meth) }
|
27
|
+
its(:"#{meth}") { should be_empty }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "Read API" do
|
32
|
+
subject do
|
33
|
+
user
|
34
|
+
end
|
35
|
+
|
36
|
+
it "#has_role?, #has_roles?" do
|
37
|
+
subject.roles = [:admin]
|
38
|
+
|
39
|
+
subject.has_role?(:admin).should be_true
|
40
|
+
subject.has_role?(:admin, :user).should be_false
|
41
|
+
subject.has_roles?(:editor).should be_false
|
42
|
+
|
43
|
+
subject.roles = [ :admin, :user ]
|
44
|
+
|
45
|
+
subject.has_role?(:admin, :user).should be_true
|
46
|
+
subject.has_role?([:admin, :user]).should be_true
|
47
|
+
end
|
48
|
+
|
49
|
+
it "#admin?, #user?, #editor? ..." do
|
50
|
+
subject.roles = [ :admin ]
|
51
|
+
subject.admin?.should be_true
|
52
|
+
subject.is_admin?.should be_true
|
53
|
+
subject.user?.should be_false
|
54
|
+
subject.editor?.should be_false
|
55
|
+
subject.roles = [ :editor ]
|
56
|
+
subject.editor?.should be_true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "Write API" do
|
61
|
+
subject do
|
62
|
+
user
|
63
|
+
end
|
64
|
+
|
65
|
+
it "#roles= should set roles" do
|
66
|
+
subject.roles = :admin
|
67
|
+
subject.roles.should == Array.new([:admin])
|
68
|
+
subject.roles = :user
|
69
|
+
subject.roles.should == Array.new([:user])
|
70
|
+
end
|
71
|
+
|
72
|
+
it "#roles= should set roles if array of strings passed (sh accept strings too!)" do
|
73
|
+
subject.roles = 'admin'
|
74
|
+
subject.roles.should == Array.new([:admin])
|
75
|
+
subject.roles = ['user', 'editor']
|
76
|
+
subject.roles.should == Array.new([:user, :editor])
|
77
|
+
end
|
78
|
+
|
79
|
+
it "#remove_roles should remove roles" do
|
80
|
+
subject.roles = [ :admin, :user, :editor ]
|
81
|
+
|
82
|
+
subject.roles.should == Array.new([:admin, :user, :editor])
|
83
|
+
|
84
|
+
subject.remove_roles :admin
|
85
|
+
subject.roles.should == Array.new([:user, :editor])
|
86
|
+
|
87
|
+
subject.remove_roles :admin, :user, :editor
|
88
|
+
subject.roles.should == Array.new([])
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context "Integration for roles methods" do
|
93
|
+
it "should work when #flatten is called over #roles" do
|
94
|
+
user.roles = [ :admin ]
|
95
|
+
|
96
|
+
user.roles_list.should == Array.new([:admin])
|
97
|
+
user.roles_list.flatten.should == Array.new([:admin])
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should add :roles to accessible_attributes if they are Whitelisted" do
|
101
|
+
user.roles = [ :admin ]
|
102
|
+
|
103
|
+
user.roles_list.should include(:admin)
|
104
|
+
user.save!
|
105
|
+
User.find_by_name!("stanislaw").should be_kind_of(User)
|
106
|
+
User.delete_all
|
107
|
+
|
108
|
+
User.attr_accessible :name
|
109
|
+
|
110
|
+
user = User.new(:name => "stanislaw")
|
111
|
+
user.roles = [ :admin ]
|
112
|
+
user.roles_list.should include(:admin)
|
113
|
+
user.save!
|
114
|
+
User.find_by_name!("stanislaw").should be_kind_of(User)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should not duplicate roles when adding" do
|
118
|
+
user.roles = [ :admin ]
|
119
|
+
user.roles.should == [ :admin ]
|
120
|
+
|
121
|
+
user.add_role :admin
|
122
|
+
|
123
|
+
user.roles.should == [ :admin ]
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe ".package" do
|
128
|
+
describe "Persistence" do
|
129
|
+
it "should set roles" do
|
130
|
+
user.roles = :admin
|
131
|
+
user.roles.should == [:admin]
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
describe "Roles methods" do
|
136
|
+
describe "#set_role" do
|
137
|
+
it "should set role" do
|
138
|
+
user.set_role(:admin)
|
139
|
+
user.roles.should == [:admin]
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should persist role" do
|
143
|
+
user.set_role(:admin)
|
144
|
+
user.reload
|
145
|
+
user.roles.should == [:admin]
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
describe "Dynamic scopes" do
|
150
|
+
subject { User }
|
151
|
+
SimpleRoles.config.valid_roles.each do |r|
|
152
|
+
it { should respond_to :"#{r}s" }
|
153
|
+
it { should respond_to(:"#{r}s_ids") }
|
154
|
+
|
155
|
+
its(:"#{r}s") { should be_kind_of(Array) }
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe "Dynamic methods" do
|
160
|
+
SimpleRoles.config.valid_roles.each do |r|
|
161
|
+
specify { user.should respond_to :"#{r}?" }
|
162
|
+
end
|
163
|
+
|
164
|
+
describe "#user?, #admin?, ..." do
|
165
|
+
specify do
|
166
|
+
user.set_role(:admin)
|
167
|
+
user.admin?.should == true
|
168
|
+
|
169
|
+
user.set_role(:user)
|
170
|
+
user.user?.should == true
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
describe "#is_user?, #is_admin?, ..." do
|
175
|
+
specify do
|
176
|
+
user.set_role(:admin)
|
177
|
+
user.is_admin?.should == true
|
178
|
+
|
179
|
+
user.set_role(:user)
|
180
|
+
user.is_user?.should == true
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SimpleRoles::One do
|
4
|
+
subject { SimpleRoles::One }
|
5
|
+
let(:user) { create :one_user, :role => 'user' }
|
6
|
+
|
7
|
+
describe ".package" do
|
8
|
+
before(:all) do
|
9
|
+
SimpleRoles::Packager.package OneUser, :one
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "Persistence" do
|
13
|
+
it "should read role as symbol" do
|
14
|
+
user.update_attribute :role, 'user'
|
15
|
+
user.role.should == :user
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should set roles" do
|
19
|
+
user.role = :admin
|
20
|
+
user.role.should == :admin
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should persist roles" do
|
24
|
+
user.role = :admin
|
25
|
+
user.save
|
26
|
+
user.role.should == :admin
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "Roles methods" do
|
31
|
+
describe "#set_role" do
|
32
|
+
it "should set role" do
|
33
|
+
user.set_role(:admin)
|
34
|
+
user.role.should == :admin
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should persist role" do
|
38
|
+
user.set_role(:admin)
|
39
|
+
user.reload
|
40
|
+
user.role.should == :admin
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "Dynamic scopes" do
|
45
|
+
SimpleRoles.config.valid_roles.each do |r|
|
46
|
+
specify { OneUser.should respond_to :"#{r}s" }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "Dynamic methods" do
|
51
|
+
SimpleRoles.config.valid_roles.each do |r|
|
52
|
+
specify { user.should respond_to :"#{r}?" }
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "#user?, #admin?, ..." do
|
56
|
+
specify do
|
57
|
+
user.set_role(:admin)
|
58
|
+
user.admin?.should == true
|
59
|
+
|
60
|
+
user.set_role(:user)
|
61
|
+
user.user?.should == true
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "#is_user?, #is_admin?, ..." do
|
66
|
+
specify do
|
67
|
+
user.set_role(:admin)
|
68
|
+
user.is_admin?.should == true
|
69
|
+
|
70
|
+
user.set_role(:user)
|
71
|
+
user.is_user?.should == true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|