rolify 4.1.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
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