rolify 4.1.0 → 5.3.0

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 (50) hide show
  1. checksums.yaml +5 -5
  2. data/.hakiri.yml +1 -0
  3. data/.travis.yml +40 -31
  4. data/Appraisals +54 -0
  5. data/CHANGELOG.rdoc +44 -8
  6. data/CONTRIBUTORS +11 -0
  7. data/Gemfile +5 -13
  8. data/LICENSE +1 -1
  9. data/README.md +74 -26
  10. data/Rakefile +6 -1
  11. data/gemfiles/activerecord_4.gemfile +21 -0
  12. data/gemfiles/activerecord_5.gemfile +28 -0
  13. data/gemfiles/activerecord_6.gemfile +28 -0
  14. data/gemfiles/mongoid_5.gemfile +21 -0
  15. data/gemfiles/mongoid_6.gemfile +20 -0
  16. data/gemfiles/mongoid_7.gemfile +21 -0
  17. data/lib/generators/active_record/rolify_generator.rb +45 -11
  18. data/lib/generators/active_record/templates/migration.rb +2 -3
  19. data/lib/generators/active_record/templates/model.rb +15 -0
  20. data/lib/generators/rolify/templates/initializer.rb +4 -1
  21. data/lib/rolify.rb +3 -4
  22. data/lib/rolify/adapters/active_record/resource_adapter.rb +14 -8
  23. data/lib/rolify/adapters/active_record/role_adapter.rb +26 -9
  24. data/lib/rolify/adapters/mongoid/role_adapter.rb +24 -1
  25. data/lib/rolify/configure.rb +4 -2
  26. data/lib/rolify/dynamic.rb +2 -17
  27. data/lib/rolify/matchers.rb +2 -2
  28. data/lib/rolify/role.rb +11 -2
  29. data/lib/rolify/version.rb +1 -1
  30. data/rolify.gemspec +14 -7
  31. data/spec/common_helper.rb +16 -0
  32. data/spec/generators/rolify/rolify_activerecord_generator_spec.rb +112 -6
  33. data/spec/generators_helper.rb +9 -2
  34. data/spec/rolify/config_spec.rb +2 -0
  35. data/spec/rolify/custom_spec.rb +1 -1
  36. data/spec/rolify/resource_spec.rb +6 -0
  37. data/spec/rolify/shared_examples/shared_examples_for_has_role.rb +65 -0
  38. data/spec/rolify/utils_spec.rb +19 -0
  39. data/spec/spec_helper.rb +19 -6
  40. data/spec/support/adapters/active_record.rb +4 -3
  41. data/spec/support/adapters/mongoid.rb +19 -2
  42. data/spec/support/adapters/{mongoid.yml → mongoid_5.yml} +2 -2
  43. data/spec/support/adapters/mongoid_6.yml +6 -0
  44. data/spec/support/adapters/mongoid_7.yml +6 -0
  45. data/spec/support/adapters/utils/active_record.rb +12 -0
  46. data/spec/support/adapters/utils/mongoid.rb +13 -0
  47. metadata +41 -22
  48. data/gemfiles/Gemfile.rails-3.2 +0 -27
  49. data/gemfiles/Gemfile.rails-4.0 +0 -33
  50. data/gemfiles/Gemfile.rails-4.1 +0 -37
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+
3
+ describe Rolify::Utils do
4
+ class Harness
5
+ extend Rolify::Utils
6
+ define_method(:new_method) { |*_args| true }
7
+ deprecate :old_method, :new_method
8
+ end
9
+
10
+ let(:harness) { Harness.new }
11
+
12
+ context '#deprecate' do
13
+ it 'calls new method with same arguments' do
14
+ expect(harness).to receive(:warn).once
15
+ expect(harness).to receive(:new_method).once.with(1, 2, 3)
16
+ harness.old_method(1, 2, 3)
17
+ end
18
+ end
19
+ end
@@ -1,5 +1,5 @@
1
- require "codeclimate-test-reporter"
2
- CodeClimate::TestReporter.start
1
+ require "simplecov"
2
+ SimpleCov.start
3
3
 
4
4
  require 'rubygems'
5
5
  require "bundler/setup"
@@ -11,6 +11,8 @@ begin
11
11
  require 'its'
12
12
  rescue LoadError
13
13
  end
14
+ require 'database_cleaner'
15
+
14
16
  require 'coveralls'
15
17
  Coveralls.wear_merged!
16
18
 
@@ -19,10 +21,7 @@ ENV['ADAPTER'] ||= 'active_record'
19
21
  load File.dirname(__FILE__) + "/support/adapters/#{ENV['ADAPTER']}.rb"
20
22
  load File.dirname(__FILE__) + '/support/data.rb'
21
23
 
22
- begin
23
- require 'pry'
24
- rescue LoadError
25
- end
24
+
26
25
 
27
26
  def reset_defaults
28
27
  Rolify.use_defaults
@@ -47,3 +46,17 @@ def silence_warnings(&block)
47
46
  $VERBOSE = warn_level
48
47
  result
49
48
  end
49
+
50
+ RSpec.configure do |config|
51
+ config.expect_with(:rspec) { |c| c.syntax = [:should, :expect] }
52
+
53
+ config.before(:suite) do
54
+ DatabaseCleaner.strategy = :truncation
55
+ DatabaseCleaner.start
56
+ end
57
+
58
+ config.after(:suite) do |example|
59
+ DatabaseCleaner.clean
60
+ end
61
+
62
+ end
@@ -1,7 +1,8 @@
1
- require 'active_record'
1
+ load File.dirname(__FILE__) + '/utils/active_record.rb'
2
+
3
+ extend_rspec_with_activerecord_specific_matchers
4
+ establish_connection
2
5
 
3
- RSpec::Matchers::BuiltIn::OperatorMatcher.register(ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::MatchArray)
4
- ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
5
6
  ActiveRecord::Base.extend Rolify
6
7
 
7
8
  load File.dirname(__FILE__) + '/../schema.rb'
@@ -1,6 +1,11 @@
1
- require 'mongoid'
1
+ load File.dirname(__FILE__) + '/utils/mongoid.rb'
2
2
 
3
- Mongoid.load!("spec/support/adapters/mongoid.yml", :test)
3
+ load_mongoid_config
4
+
5
+ begin
6
+ Mongo::Logger.logger.level = ::Logger::FATAL
7
+ rescue NameError
8
+ end
4
9
 
5
10
  ::Mongoid::Document.module_eval do
6
11
  def self.included(base)
@@ -13,6 +18,8 @@ Rolify.use_mongoid
13
18
  # Standard user and role classes
14
19
  class User
15
20
  include Mongoid::Document
21
+ default_scope -> { order_by id: 'asc' }
22
+
16
23
  rolify
17
24
 
18
25
  field :login, :type => String
@@ -21,6 +28,7 @@ end
21
28
  # Standard user and role classes
22
29
  class StrictUser
23
30
  include Mongoid::Document
31
+ default_scope -> { order_by id: 'asc' }
24
32
  rolify strict: true
25
33
 
26
34
  field :login, :type => String
@@ -48,6 +56,7 @@ end
48
56
  # Resourcifed and rolifed at the same time
49
57
  class HumanResource
50
58
  include Mongoid::Document
59
+ default_scope -> { order_by id: 'asc' }
51
60
  resourcify :resources
52
61
  rolify
53
62
 
@@ -74,6 +83,7 @@ end
74
83
  # Custom role and class names
75
84
  class Customer
76
85
  include Mongoid::Document
86
+ default_scope -> { order_by id: 'asc' }
77
87
  rolify :role_cname => "Privilege"
78
88
 
79
89
  field :login, :type => String
@@ -81,6 +91,7 @@ end
81
91
 
82
92
  class Privilege
83
93
  include Mongoid::Document
94
+ default_scope -> { order_by id: 'asc' }
84
95
  has_and_belongs_to_many :customers
85
96
  belongs_to :resource, :polymorphic => true
86
97
  scopify
@@ -100,6 +111,7 @@ end
100
111
  module Admin
101
112
  class Moderator
102
113
  include Mongoid::Document
114
+ default_scope -> { order_by id: 'asc' }
103
115
  rolify :role_cname => "Admin::Right"
104
116
 
105
117
  field :login, :type => String
@@ -107,6 +119,7 @@ module Admin
107
119
 
108
120
  class Right
109
121
  include Mongoid::Document
122
+ default_scope -> { order_by id: 'asc' }
110
123
  has_and_belongs_to_many :moderators, :class_name => 'Admin::Moderator'
111
124
  belongs_to :resource, :polymorphic => true
112
125
  scopify
@@ -126,6 +139,7 @@ end
126
139
  # Resources classes
127
140
  class Forum
128
141
  include Mongoid::Document
142
+ default_scope -> { order_by id: 'asc' }
129
143
  #resourcify done during specs setup to be able to use custom user classes
130
144
 
131
145
  field :name, :type => String
@@ -133,6 +147,7 @@ end
133
147
 
134
148
  class Group
135
149
  include Mongoid::Document
150
+ default_scope -> { order_by id: 'asc' }
136
151
  #resourcify done during specs setup to be able to use custom user classes
137
152
 
138
153
  field :name, :type => String
@@ -145,6 +160,7 @@ end
145
160
 
146
161
  class Team
147
162
  include Mongoid::Document
163
+ default_scope -> { order_by id: 'asc' }
148
164
  #resourcify done during specs setup to be able to use custom user classes
149
165
 
150
166
  field :team_code, :type => Integer
@@ -153,6 +169,7 @@ end
153
169
 
154
170
  class Organization
155
171
  include Mongoid::Document
172
+ default_scope -> { order_by id: 'asc' }
156
173
  end
157
174
 
158
175
  class Company < Organization
@@ -1,6 +1,6 @@
1
1
  test:
2
- sessions:
2
+ clients:
3
3
  default:
4
4
  database: godfather
5
5
  hosts:
6
- - localhost:27017
6
+ - localhost:27017
@@ -0,0 +1,6 @@
1
+ test:
2
+ clients:
3
+ default:
4
+ database: godfather
5
+ hosts:
6
+ - localhost:27017
@@ -0,0 +1,6 @@
1
+ test:
2
+ clients:
3
+ default:
4
+ database: godfather
5
+ hosts:
6
+ - localhost:27017
@@ -0,0 +1,12 @@
1
+ require 'active_record'
2
+
3
+ def establish_connection
4
+ ActiveRecord::Base.establish_connection(
5
+ :adapter => "sqlite3",
6
+ :database => ":memory:"
7
+ )
8
+ end
9
+
10
+ def extend_rspec_with_activerecord_specific_matchers
11
+ RSpec::Matchers::BuiltIn::OperatorMatcher.register(ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::ContainExactly)
12
+ end
@@ -0,0 +1,13 @@
1
+ require 'mongoid'
2
+
3
+ def mongoid_major_version
4
+ Mongoid::VERSION.split('.').first.to_i
5
+ end
6
+
7
+ def mongoid_config
8
+ "spec/support/adapters/mongoid_#{mongoid_major_version}.yml"
9
+ end
10
+
11
+ def load_mongoid_config
12
+ Mongoid.load!(mongoid_config, :test)
13
+ end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rolify
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florent Monbillard
8
+ - Wellington Cordeiro
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-08-05 00:00:00.000000000 Z
12
+ date: 2020-06-01 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: ammeter
@@ -16,67 +17,70 @@ dependencies:
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: 1.1.2
20
+ version: '1.1'
20
21
  type: :development
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: 1.1.2
27
+ version: '1.1'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: bundler
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - ">="
32
+ - - "~>"
32
33
  - !ruby/object:Gem::Version
33
- version: 1.7.12
34
+ version: '2.0'
34
35
  type: :development
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
- - - ">="
39
+ - - "~>"
39
40
  - !ruby/object:Gem::Version
40
- version: 1.7.12
41
+ version: '2.0'
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: rake
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
46
  - - "~>"
46
47
  - !ruby/object:Gem::Version
47
- version: 10.4.2
48
+ version: '12.3'
48
49
  type: :development
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
53
  - - "~>"
53
54
  - !ruby/object:Gem::Version
54
- version: 10.4.2
55
+ version: '12.3'
55
56
  - !ruby/object:Gem::Dependency
56
57
  name: rspec-rails
57
58
  requirement: !ruby/object:Gem::Requirement
58
59
  requirements:
59
- - - '='
60
+ - - "~>"
60
61
  - !ruby/object:Gem::Version
61
- version: 2.99.0
62
+ version: '3.8'
62
63
  type: :development
63
64
  prerelease: false
64
65
  version_requirements: !ruby/object:Gem::Requirement
65
66
  requirements:
66
- - - '='
67
+ - - "~>"
67
68
  - !ruby/object:Gem::Version
68
- version: 2.99.0
69
+ version: '3.8'
69
70
  description: Very simple Roles library without any authorization enforcement supporting
70
71
  scope on resource objects (instance or class). Supports ActiveRecord and Mongoid
71
72
  ORMs.
72
73
  email:
73
74
  - f.monbillard@gmail.com
75
+ - wellington@wellingtoncordeiro.com
74
76
  executables: []
75
77
  extensions: []
76
78
  extra_rdoc_files: []
77
79
  files:
78
80
  - ".gitignore"
81
+ - ".hakiri.yml"
79
82
  - ".travis.yml"
83
+ - Appraisals
80
84
  - CHANGELOG.rdoc
81
85
  - CONTRIBUTORS
82
86
  - Gemfile
@@ -84,12 +88,16 @@ files:
84
88
  - README.md
85
89
  - Rakefile
86
90
  - UPGRADE.rdoc
87
- - gemfiles/Gemfile.rails-3.2
88
- - gemfiles/Gemfile.rails-4.0
89
- - gemfiles/Gemfile.rails-4.1
91
+ - gemfiles/activerecord_4.gemfile
92
+ - gemfiles/activerecord_5.gemfile
93
+ - gemfiles/activerecord_6.gemfile
94
+ - gemfiles/mongoid_5.gemfile
95
+ - gemfiles/mongoid_6.gemfile
96
+ - gemfiles/mongoid_7.gemfile
90
97
  - lib/generators/active_record/rolify_generator.rb
91
98
  - lib/generators/active_record/templates/README
92
99
  - lib/generators/active_record/templates/migration.rb
100
+ - lib/generators/active_record/templates/model.rb
93
101
  - lib/generators/mongoid/rolify_generator.rb
94
102
  - lib/generators/mongoid/templates/README-mongoid
95
103
  - lib/generators/rolify/rolify_generator.rb
@@ -117,6 +125,7 @@ files:
117
125
  - lib/rolify/version.rb
118
126
  - rolify.gemspec
119
127
  - spec/README.rdoc
128
+ - spec/common_helper.rb
120
129
  - spec/generators/rolify/rolify_activerecord_generator_spec.rb
121
130
  - spec/generators/rolify/rolify_mongoid_generator_spec.rb
122
131
  - spec/generators_helper.rb
@@ -142,10 +151,15 @@ files:
142
151
  - spec/rolify/shared_examples/shared_examples_for_remove_role.rb
143
152
  - spec/rolify/shared_examples/shared_examples_for_roles.rb
144
153
  - spec/rolify/shared_examples/shared_examples_for_scopes.rb
154
+ - spec/rolify/utils_spec.rb
145
155
  - spec/spec_helper.rb
146
156
  - spec/support/adapters/active_record.rb
147
157
  - spec/support/adapters/mongoid.rb
148
- - spec/support/adapters/mongoid.yml
158
+ - spec/support/adapters/mongoid_5.yml
159
+ - spec/support/adapters/mongoid_6.yml
160
+ - spec/support/adapters/mongoid_7.yml
161
+ - spec/support/adapters/utils/active_record.rb
162
+ - spec/support/adapters/utils/mongoid.rb
149
163
  - spec/support/data.rb
150
164
  - spec/support/schema.rb
151
165
  - spec/support/stream_helpers.rb
@@ -161,20 +175,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
175
  requirements:
162
176
  - - ">="
163
177
  - !ruby/object:Gem::Version
164
- version: '0'
178
+ version: '2.3'
165
179
  required_rubygems_version: !ruby/object:Gem::Requirement
166
180
  requirements:
167
181
  - - ">="
168
182
  - !ruby/object:Gem::Version
169
183
  version: '0'
170
184
  requirements: []
171
- rubyforge_project: rolify
172
- rubygems_version: 2.4.5
185
+ rubygems_version: 3.1.2
173
186
  signing_key:
174
187
  specification_version: 4
175
188
  summary: Roles library with resource scoping
176
189
  test_files:
177
190
  - spec/README.rdoc
191
+ - spec/common_helper.rb
178
192
  - spec/generators/rolify/rolify_activerecord_generator_spec.rb
179
193
  - spec/generators/rolify/rolify_mongoid_generator_spec.rb
180
194
  - spec/generators_helper.rb
@@ -200,10 +214,15 @@ test_files:
200
214
  - spec/rolify/shared_examples/shared_examples_for_remove_role.rb
201
215
  - spec/rolify/shared_examples/shared_examples_for_roles.rb
202
216
  - spec/rolify/shared_examples/shared_examples_for_scopes.rb
217
+ - spec/rolify/utils_spec.rb
203
218
  - spec/spec_helper.rb
204
219
  - spec/support/adapters/active_record.rb
205
220
  - spec/support/adapters/mongoid.rb
206
- - spec/support/adapters/mongoid.yml
221
+ - spec/support/adapters/mongoid_5.yml
222
+ - spec/support/adapters/mongoid_6.yml
223
+ - spec/support/adapters/mongoid_7.yml
224
+ - spec/support/adapters/utils/active_record.rb
225
+ - spec/support/adapters/utils/mongoid.rb
207
226
  - spec/support/data.rb
208
227
  - spec/support/schema.rb
209
228
  - spec/support/stream_helpers.rb
@@ -1,27 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- platforms :rbx do
4
- gem 'psych'
5
- gem 'rubinius-coverage', '~> 2.0'
6
- end
7
-
8
- group :test do
9
- gem 'railties', '~> 3.2', '< 4.0'
10
- case ENV['ADAPTER']
11
- when nil, 'active_record'
12
- gem 'activerecord-jdbcsqlite3-adapter', '>= 1.3.0.rc', :platform => 'jruby'
13
- #Fix sqlite3 version for rbx until rubinus is updated
14
- #https://github.com/travis-ci/travis-ci/issues/2006
15
- gem 'sqlite3', '1.3.8', :platform => 'ruby'
16
- gem 'activerecord', '~> 3.2.0', :require => 'active_record'
17
- when 'mongoid'
18
- gem 'mongoid', '>= 3.1'
19
- gem 'bson_ext', :platform => 'ruby'
20
- else
21
- raise "Unknown model adapter: #{ENV['ADAPTER']}"
22
- end
23
-
24
- gem 'coveralls', :require => false
25
- end
26
-
27
- gemspec :path => '../'
@@ -1,33 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- platforms :rbx do
4
- gem 'psych'
5
- gem 'rubinius-coverage', '~> 2.0'
6
- end
7
-
8
- group :test do
9
- gem 'railties', '~> 4.0.1', '< 4.1'
10
- gem 'ammeter'
11
- gem 'rake'
12
- gem 'rspec'
13
- gem 'its'
14
- gem 'rspec-rails'
15
- gem 'fuubar'
16
- gem 'bundler'
17
-
18
- gem 'coveralls', :require => false
19
-
20
- case ENV['ADAPTER']
21
- when nil, 'active_record'
22
- gem 'activerecord', '~> 4.0.1', :require => 'active_record'
23
- gem 'activerecord-jdbcsqlite3-adapter', '~> 1.3.5', :platform => 'jruby'
24
- #Fix sqlite3 version for rbx until rubinus is updated
25
- #https://github.com/travis-ci/travis-ci/issues/2006
26
- gem 'sqlite3', '1.3.8', :platform => 'ruby'
27
- when 'mongoid'
28
- gem 'mongoid', github: 'mongoid/mongoid'
29
- gem 'bson_ext', :platform => 'ruby'
30
- else
31
- raise "Unknown model adapter: #{ENV['ADAPTER']}"
32
- end
33
- end