rolify 3.4.0 → 3.4.1

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 (36) hide show
  1. data/.travis.yml +32 -16
  2. data/CHANGELOG.rdoc +6 -0
  3. data/Gemfile +4 -2
  4. data/README.md +1 -1
  5. data/Rakefile +6 -6
  6. data/gemfiles/Gemfile.rails-3.2 +14 -15
  7. data/gemfiles/Gemfile.rails-4.0 +21 -22
  8. data/gemfiles/Gemfile.rails-4.1 +37 -0
  9. data/lib/generators/active_record/rolify_generator.rb +2 -2
  10. data/lib/rolify.rb +6 -0
  11. data/lib/rolify/adapters/active_record/resource_adapter.rb +25 -4
  12. data/lib/rolify/adapters/base.rb +4 -0
  13. data/lib/rolify/adapters/mongoid/resource_adapter.rb +18 -1
  14. data/lib/rolify/configure.rb +6 -2
  15. data/lib/rolify/resource.rb +12 -9
  16. data/lib/rolify/role.rb +8 -2
  17. data/lib/rolify/version.rb +1 -1
  18. data/rolify.gemspec +15 -15
  19. data/spec/rolify/config_spec.rb +6 -7
  20. data/spec/rolify/resource_spec.rb +22 -6
  21. data/spec/rolify/shared_contexts.rb +1 -0
  22. data/spec/rolify/shared_examples/shared_examples_for_callbacks.rb +4 -4
  23. data/spec/rolify/shared_examples/shared_examples_for_dynamic.rb +27 -27
  24. data/spec/rolify/shared_examples/shared_examples_for_finders.rb +4 -0
  25. data/spec/rolify/shared_examples/shared_examples_for_has_all_roles.rb +29 -29
  26. data/spec/rolify/shared_examples/shared_examples_for_has_any_role.rb +32 -32
  27. data/spec/rolify/shared_examples/shared_examples_for_has_role.rb +38 -38
  28. data/spec/rolify/shared_examples/shared_examples_for_only_has_role.rb +44 -44
  29. data/spec/rolify/shared_examples/shared_examples_for_roles.rb +21 -15
  30. data/spec/spec_helper.rb +26 -3
  31. data/spec/support/adapters/active_record.rb +12 -4
  32. data/spec/support/adapters/mongoid.rb +8 -0
  33. data/spec/support/data.rb +4 -1
  34. data/spec/support/schema.rb +4 -0
  35. metadata +48 -33
  36. checksums.yaml +0 -7
@@ -13,13 +13,14 @@ shared_examples_for Rolify::Role do
13
13
  Rolify.dynamic_shortcuts = false
14
14
  rolify_options = { :role_cname => role_class.to_s }
15
15
  rolify_options[:role_join_table_name] = join_table if defined? join_table
16
- user_class.rolify rolify_options
16
+ silence_warnings { user_class.rolify rolify_options }
17
17
  role_class.destroy_all
18
18
  Forum.resourcify :roles, :role_cname => role_class.to_s
19
19
  Group.resourcify :roles, :role_cname => role_class.to_s
20
+ Organization.resourcify :roles, :role_cname => role_class.to_s
20
21
  end
21
22
 
22
- context "in the Instance level" do
23
+ context "in the Instance level" do
23
24
  before(:all) do
24
25
  admin = user_class.first
25
26
  admin.add_role :admin
@@ -32,7 +33,7 @@ shared_examples_for Rolify::Role do
32
33
  it { should respond_to(method_alias.to_sym).with(1).arguments }
33
34
  it { should respond_to(method_alias.to_sym).with(2).arguments }
34
35
  end
35
-
36
+
36
37
  it { should respond_to(:has_role?).with(1).arguments }
37
38
  it { should respond_to(:has_role?).with(2).arguments }
38
39
 
@@ -49,18 +50,18 @@ shared_examples_for Rolify::Role do
49
50
 
50
51
  it { should_not respond_to(:is_admin?) }
51
52
  it { should_not respond_to(:is_moderator_of?) }
52
-
53
- describe "#has_role" do
53
+
54
+ describe "#has_role" do
54
55
  it_should_behave_like "#add_role_examples", "String", :to_s
55
56
  it_should_behave_like "#add_role_examples", "Symbol", :to_sym
56
57
  end
57
58
 
58
- describe "#has_role?" do
59
+ describe "#has_role?" do
59
60
  it_should_behave_like "#has_role?_examples", "String", :to_s
60
61
  it_should_behave_like "#has_role?_examples", "Symbol", :to_sym
61
62
  end
62
-
63
- describe "#only_has_role?" do
63
+
64
+ describe "#only_has_role?" do
64
65
  it_should_behave_like "#only_has_role?_examples", "String", :to_s
65
66
  it_should_behave_like "#only_has_role?_examples", "Symbol", :to_sym
66
67
  end
@@ -80,7 +81,7 @@ shared_examples_for Rolify::Role do
80
81
  it_should_behave_like "#remove_role_examples", "Symbol", :to_sym
81
82
  end
82
83
  end
83
-
84
+
84
85
  context "with a new instance" do
85
86
  let(:user) { user_class.new }
86
87
 
@@ -90,13 +91,18 @@ shared_examples_for Rolify::Role do
90
91
  end
91
92
 
92
93
  subject { user }
93
-
94
+
94
95
  it { should have_role :admin }
95
- it { should have_role :moderator, Forum.first }
96
- it { subject.has_any_role?(:admin).should be_true }
97
- end
98
-
99
- context "on the Class level ", :scope => :mixed do
96
+ # it { should have_role :admin, Forum }
97
+ # it { should have_role :admin, :any }
98
+ # it { should have_role :moderator, Forum.first }
99
+ # it { should have_role :moderator, :any }
100
+ # it { should_not have_role :moderator }
101
+ # it { should_not have_role :moderator, Forum }
102
+ it { subject.has_any_role?(:admin).should be_truthy }
103
+ end
104
+
105
+ context "on the Class level ", :scope => :mixed do
100
106
  it_should_behave_like :finders, "String", :to_s
101
107
  it_should_behave_like :finders, "Symbol", :to_sym
102
108
  end
data/spec/spec_helper.rb CHANGED
@@ -4,18 +4,33 @@ require "bundler/setup"
4
4
  require 'rolify'
5
5
  require 'rolify/matchers'
6
6
  require 'rails'
7
-
7
+ begin
8
+ require 'its'
9
+ rescue LoadError
10
+ end
8
11
  require 'coveralls'
9
12
  Coveralls.wear_merged!
10
13
 
11
14
  ENV['ADAPTER'] ||= 'active_record'
12
15
 
13
- load File.dirname(__FILE__) + "/support/adapters/#{ENV['ADAPTER']}.rb"
16
+ begin
17
+ load File.dirname(__FILE__) + "/support/adapters/#{ENV['ADAPTER']}.rb"
18
+ rescue NameError => e
19
+ if e.message =~ /uninitialized constant RSpec::Matchers::BuiltIn::MatchArray/
20
+ RSpec::Matchers::OperatorMatcher.register(
21
+ ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::MatchArray)
22
+ end
23
+ end
14
24
  load File.dirname(__FILE__) + '/support/data.rb'
15
25
 
26
+ begin
27
+ require 'pry'
28
+ rescue LoadError
29
+ end
30
+
16
31
  def reset_defaults
17
32
  Rolify.use_defaults
18
- Rolify.use_mongoid if ENV['ADAPTER'] == "mongoid"
33
+ Rolify.use_mongoid if ENV['ADAPTER'] == 'mongoid'
19
34
  end
20
35
 
21
36
  def provision_user(user, roles)
@@ -28,3 +43,11 @@ def provision_user(user, roles)
28
43
  end
29
44
  user
30
45
  end
46
+
47
+ def silence_warnings(&block)
48
+ warn_level = $VERBOSE
49
+ $VERBOSE = nil
50
+ result = block.call
51
+ $VERBOSE = warn_level
52
+ result
53
+ end
@@ -1,6 +1,6 @@
1
1
  require 'active_record'
2
2
 
3
- RSpec::Matchers::OperatorMatcher.register(ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::MatchArray)
3
+ RSpec::Matchers::BuiltIn::OperatorMatcher.register(ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::MatchArray)
4
4
  ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
5
5
  ActiveRecord::Base.extend Rolify
6
6
 
@@ -41,7 +41,7 @@ module Admin
41
41
  def self.table_name_prefix
42
42
  'admin_'
43
43
  end
44
-
44
+
45
45
  class Moderator < ActiveRecord::Base
46
46
  rolify :role_cname => "Admin::Right", :role_join_table_name => "moderators_rights"
47
47
  end
@@ -51,7 +51,7 @@ module Admin
51
51
  belongs_to :resource, :polymorphic => true
52
52
 
53
53
  extend Rolify::Adapter::Scopes
54
- end
54
+ end
55
55
  end
56
56
 
57
57
 
@@ -71,6 +71,14 @@ end
71
71
  class Team < ActiveRecord::Base
72
72
  #resourcify done during specs setup to be able to use custom user classes
73
73
  self.primary_key = "team_code"
74
-
74
+
75
75
  default_scope { order(:team_code) }
76
+ end
77
+
78
+ class Organization < ActiveRecord::Base
79
+
80
+ end
81
+
82
+ class Company < Organization
83
+
76
84
  end
@@ -140,4 +140,12 @@ class Team
140
140
 
141
141
  field :team_code, :type => Integer
142
142
  field :name, :type => String
143
+ end
144
+
145
+ class Organization
146
+ include Mongoid::Document
147
+ end
148
+
149
+ class Company < Organization
150
+
143
151
  end
data/spec/support/data.rb CHANGED
@@ -22,4 +22,7 @@ Group.create(:name => "group 1")
22
22
  Group.create(:name => "group 2")
23
23
 
24
24
  Team.create(:team_code => "1", :name => "PSG")
25
- Team.create(:team_code => "2", :name => "MU")
25
+ Team.create(:team_code => "2", :name => "MU")
26
+
27
+ Organization.create
28
+ Company.create
@@ -49,4 +49,8 @@ ActiveRecord::Schema.define do
49
49
  t.primary_key :team_code
50
50
  t.string :name
51
51
  end
52
+
53
+ create_table(:organizations) do |t|
54
+ t.string :type
55
+ end
52
56
  end
metadata CHANGED
@@ -1,99 +1,112 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rolify
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.4.1
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Florent Monbillard
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-01-28 00:00:00.000000000 Z
12
+ date: 2014-09-08 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: ammeter
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - ">="
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
- version: '0'
21
+ version: 1.1.2
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - ">="
27
+ - - ~>
25
28
  - !ruby/object:Gem::Version
26
- version: '0'
29
+ version: 1.1.2
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - ">="
35
+ - - ~>
32
36
  - !ruby/object:Gem::Version
33
- version: '0'
37
+ version: 10.3.2
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - ">="
43
+ - - ~>
39
44
  - !ruby/object:Gem::Version
40
- version: '0'
45
+ version: 10.3.2
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rspec
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - ">="
51
+ - - '='
46
52
  - !ruby/object:Gem::Version
47
- version: '2.0'
53
+ version: 2.99.0
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - ">="
59
+ - - '='
53
60
  - !ruby/object:Gem::Version
54
- version: '2.0'
61
+ version: 2.99.0
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: rspec-rails
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - ">="
67
+ - - '='
60
68
  - !ruby/object:Gem::Version
61
- version: '2.0'
69
+ version: 2.99.0
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - ">="
75
+ - - '='
67
76
  - !ruby/object:Gem::Version
68
- version: '2.0'
77
+ version: 2.99.0
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: bundler
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - ">="
83
+ - - ~>
74
84
  - !ruby/object:Gem::Version
75
- version: '0'
85
+ version: 1.6.2
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
- - - ">="
91
+ - - ~>
81
92
  - !ruby/object:Gem::Version
82
- version: '0'
93
+ version: 1.6.2
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: fuubar
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
- - - ">="
99
+ - - ~>
88
100
  - !ruby/object:Gem::Version
89
- version: '0'
101
+ version: 1.3.3
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
- - - ">="
107
+ - - ~>
95
108
  - !ruby/object:Gem::Version
96
- version: '0'
109
+ version: 1.3.3
97
110
  description: Very simple Roles library without any authorization enforcement supporting
98
111
  scope on resource objects (instance or class). Supports ActiveRecord and Mongoid
99
112
  ORMs.
@@ -103,8 +116,8 @@ executables: []
103
116
  extensions: []
104
117
  extra_rdoc_files: []
105
118
  files:
106
- - ".gitignore"
107
- - ".travis.yml"
119
+ - .gitignore
120
+ - .travis.yml
108
121
  - CHANGELOG.rdoc
109
122
  - Gemfile
110
123
  - LICENSE
@@ -113,6 +126,7 @@ files:
113
126
  - UPGRADE.rdoc
114
127
  - gemfiles/Gemfile.rails-3.2
115
128
  - gemfiles/Gemfile.rails-4.0
129
+ - gemfiles/Gemfile.rails-4.1
116
130
  - lib/generators/active_record/rolify_generator.rb
117
131
  - lib/generators/active_record/templates/README
118
132
  - lib/generators/active_record/templates/migration.rb
@@ -174,26 +188,27 @@ files:
174
188
  homepage: http://eppo.github.com/rolify/
175
189
  licenses:
176
190
  - MIT
177
- metadata: {}
178
191
  post_install_message:
179
192
  rdoc_options: []
180
193
  require_paths:
181
194
  - lib
182
195
  required_ruby_version: !ruby/object:Gem::Requirement
196
+ none: false
183
197
  requirements:
184
- - - ">="
198
+ - - ! '>='
185
199
  - !ruby/object:Gem::Version
186
200
  version: '0'
187
201
  required_rubygems_version: !ruby/object:Gem::Requirement
202
+ none: false
188
203
  requirements:
189
- - - ">="
204
+ - - ! '>='
190
205
  - !ruby/object:Gem::Version
191
206
  version: '0'
192
207
  requirements: []
193
208
  rubyforge_project: rolify
194
- rubygems_version: 2.2.0
209
+ rubygems_version: 1.8.23
195
210
  signing_key:
196
- specification_version: 4
211
+ specification_version: 3
197
212
  summary: Roles library with resource scoping
198
213
  test_files:
199
214
  - spec/README.rdoc
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 0230aba90b592f3e2873858db202652f0610e63a
4
- data.tar.gz: 213155ee533962044ebe70808910f6a27fb40a35
5
- SHA512:
6
- metadata.gz: 1ac7b0db9d222976eea090aa5fc8f91e4861e61175385316625e4d4cd85b11844f6b61013f655735895380e7fa908f629acda1f6a3dc8704837ea58d295f1703
7
- data.tar.gz: 2f7a94b6bef880b5bad088fb66b5623677a631a8d1b0371f3f942fc821054a8807b1b1d622232f63548b841d1245bb8495b004dbb0a25b008f90f8c5e8d0f035