rolify 3.4.0 → 3.4.1

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