dar_da_da 0.0.2 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 74a39243f3810ad6b73ce0ae8980440ded675c4b8555a180449eb5648708054a
4
+ data.tar.gz: f2d77656262f9142019f0fc4f656d82e71ebc143ca9211f729f62e9f5c53fb53
5
+ SHA512:
6
+ metadata.gz: 884bc324b20fbf57f38a6a7abc533a60903d4561caea90085d129f61a10a8847072dcc475ad9a656a5f391705413e49cbd2b6d8dcb80f1d0b817ea1b58fdbdbb
7
+ data.tar.gz: d9556f57cc206572db78e87d3acd7888a9a0d8f901b44dcb4c4aa0615bfc681c14844611e861fe1f21219dca25f611a573c32e92215c22f1cab719b9371a2b7d
data/.gitignore CHANGED
@@ -3,7 +3,8 @@
3
3
  coverage
4
4
  rdoc
5
5
  pkg
6
- .rvmrc
6
+ .rbenv-*
7
+ .ruby-version
7
8
  *.gem
8
9
  .bundle
9
10
  Gemfile.lock
@@ -0,0 +1,28 @@
1
+ ### dev
2
+
3
+ [full changelog](http://github.com/yolk/dar_dar_da/compare/v0.0.7...master)
4
+
5
+ ### 0.0.7 / 2020-07-02
6
+
7
+ [full changelog](http://github.com/yolk/dar_dar_da/compare/v0.0.6...v0.0.7)
8
+
9
+ * Defer patching of rails base classes for zeitwerk loading
10
+
11
+ ### 0.0.6 / 2017-01-31
12
+
13
+ [full changelog](http://github.com/yolk/dar_dar_da/compare/v0.0.5...v0.0.6)
14
+
15
+ * Use before_action instead of before_filter
16
+ * Require Rails >= 4.0
17
+
18
+ ### 0.0.5 / 2014-04-09
19
+
20
+ [full changelog](http://github.com/yolk/dar_dar_da/compare/v0.0.3...v0.0.5)
21
+
22
+ * Compatiblity with Rails 4.0
23
+
24
+ ### 0.0.3 / 2012-02-06
25
+
26
+ [full changelog](http://github.com/yolk/dar_dar_da/compare/v0.0.2...v0.0.3)
27
+
28
+ * Compatiblity with Rails 3.2
data/Guardfile CHANGED
@@ -1,5 +1,5 @@
1
- guard 'rspec', :version => 2 do
1
+ guard 'rspec', cmd: "bundle exec rspec --color" do
2
2
  watch(/^spec\/(.*)_spec\.rb/) { "spec" }
3
3
  watch(/^lib\/(.*)\.rb/) { "spec" } # { |m| "spec/#{m[1]}_spec.rb" }
4
4
  watch(/^spec\/spec_helper\.rb/) { "spec" }
5
- end
5
+ end
@@ -4,4 +4,4 @@ Roles easy like sunday morning.
4
4
 
5
5
  == Copyright
6
6
 
7
- Copyright (c) 2009 Yolk GbR. See LICENSE for details.
7
+ Copyright (c) 2009-2017 Yolk GbR. See LICENSE for details.
@@ -18,14 +18,12 @@ Gem::Specification.new do |s|
18
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
-
22
- s.add_dependency 'activesupport', '~> 3.0'
23
- s.add_dependency 'activerecord', '~> 3.0'
21
+
22
+ s.add_dependency 'activerecord', '>= 4.0'
23
+
24
24
  # Actionpack is optional!
25
- s.add_development_dependency 'actionpack', '~> 3.0'
26
- s.add_development_dependency 'rspec', '>= 2.4.0'
27
- s.add_development_dependency 'guard-rspec', '>=0.1.9'
28
- s.add_development_dependency 'growl', '>=1.0.3'
29
- s.add_development_dependency 'rb-fsevent', '>=0.3.9'
30
- s.add_development_dependency 'sqlite3-ruby'
25
+ s.add_development_dependency 'actionpack', '>= 4.0'
26
+ s.add_development_dependency 'rspec'
27
+ s.add_development_dependency 'guard-rspec'
28
+ s.add_development_dependency 'sqlite3'
31
29
  end
@@ -7,12 +7,14 @@ module DarDaDa
7
7
  mattr_accessor :config
8
8
  end
9
9
 
10
- if defined? ActiveRecord::Base
11
- require 'dar_da_da/active_record_extension'
12
- ActiveRecord::Base.send(:include, DarDaDa::ActiveRecordExtension)
10
+ require 'dar_da_da/active_record_extension'
11
+
12
+ ActiveSupport.on_load(:active_record) do
13
+ include DarDaDa::ActiveRecordExtension
13
14
  end
14
15
 
15
- if defined? ActionController::Base
16
- require 'dar_da_da/action_controller_extension'
17
- ActionController::Base.send(:include, DarDaDa::ActionControllerExtension)
18
- end
16
+ require 'dar_da_da/action_controller_extension'
17
+
18
+ ActiveSupport.on_load(:action_controller) do
19
+ include DarDaDa::ActionControllerExtension
20
+ end
@@ -6,25 +6,25 @@ module DarDaDa
6
6
  base.class_eval "class ::ActionController::ForbiddenError < ::ActionController::ActionControllerError;end"
7
7
  end
8
8
  end
9
-
10
- module ClassMethods
9
+
10
+ module ClassMethods
11
11
  def define_access_control(user_class, user_method_name = :current_user)
12
12
  user_class.dar_dar_da.all_rights.each do |right|
13
13
  self.class_eval("
14
14
  private
15
-
15
+
16
16
  def check_if_#{user_class.name.downcase}_is_allowed_to_#{right}
17
17
  raise ActionController::ForbiddenError.new unless #{user_method_name}.allowed_to_#{right}?
18
18
  end
19
19
  ")
20
-
20
+
21
21
  self.class_eval("
22
22
  def self.require_right(right, options={})
23
- before_filter :\"check_if_#{user_class.name.downcase}_is_allowed_to_#\{right}\", options
23
+ before_action :\"check_if_#{user_class.name.downcase}_is_allowed_to_#\{right}\", options
24
24
  end
25
25
  ")
26
26
  end
27
27
  end
28
28
  end
29
29
  end
30
- end
30
+ end
@@ -1,21 +1,24 @@
1
- require 'active_support/core_ext/class/inheritable_attributes'
1
+ require 'active_support/core_ext/class/attribute'
2
2
 
3
3
  module DarDaDa
4
4
  module ActiveRecordExtension
5
5
  def self.included(base)
6
+ base.class_attribute(:dar_dar_da, :instance_reader => false, :instance_writer => false)
6
7
  base.extend(ClassMethods)
7
8
  end
8
-
9
+
9
10
  def self.decorate(base, config)
10
11
  base.send :include, DarDaDa::ActiveRecordExtension::InstanceMethods
11
-
12
+
12
13
  config.each do |name, role|
13
14
  base.class_eval("
14
15
  def #{name}?
15
16
  role_symbol == :#{name}
16
17
  end
17
-
18
- scope :#{name.to_s.pluralize}, where(\"#{base.table_name}.#{config.options[:role_attribute]} = '#{name}'\")
18
+
19
+ def self.#{name.to_s.pluralize}
20
+ where(\"#{base.table_name}.#{config.options[:role_attribute]} = '#{name}'\")
21
+ end
19
22
  ")
20
23
  end
21
24
  config.all_rights.each do |right|
@@ -26,7 +29,7 @@ module DarDaDa
26
29
  ")
27
30
  end
28
31
  end
29
-
32
+
30
33
  module ClassMethods
31
34
  def define_roles(options={}, &block)
32
35
  (self.dar_dar_da ||= DarDaDa::Config.new(options)).tap do |config|
@@ -34,50 +37,42 @@ module DarDaDa
34
37
  DarDaDa::ActiveRecordExtension.decorate(self, config)
35
38
  end
36
39
  end
37
-
38
- def dar_dar_da=(config)
39
- write_inheritable_attribute(:dar_dar_da, config)
40
- end
41
-
42
- def dar_dar_da
43
- read_inheritable_attribute(:dar_dar_da)
44
- end
45
40
  end
46
-
41
+
47
42
  module InstanceMethods
48
43
  def self.included(base)
49
44
  base.send :before_save, :set_role_to_default_value
50
45
  end
51
-
46
+
52
47
  def role
53
48
  role_symbol.to_s
54
49
  end
55
-
50
+
56
51
  def role=(new_role)
57
52
  write_role_attribute(new_role) if self.class.dar_dar_da[new_role]
58
53
  end
59
-
54
+
60
55
  def allowed_to?(name)
61
56
  rights = self.class.dar_dar_da[role]
62
57
  !!rights && !name.blank? && rights.include?(name.to_sym)
63
58
  end
64
-
59
+
65
60
  private
66
-
61
+
67
62
  def role_symbol
68
63
  role_attribute = read_role_attribute
69
64
  return self.class.dar_dar_da.options[:default_role] if role_attribute.blank?
70
65
  role_attribute.to_sym
71
66
  end
72
-
67
+
73
68
  def read_role_attribute
74
69
  read_attribute(self.class.dar_dar_da.options[:role_attribute])
75
70
  end
76
-
71
+
77
72
  def write_role_attribute(new_role)
78
73
  write_attribute(self.class.dar_dar_da.options[:role_attribute], new_role.to_s)
79
74
  end
80
-
75
+
81
76
  def set_role_to_default_value
82
77
  unless self.class.dar_dar_da[read_role_attribute]
83
78
  write_role_attribute(self.class.dar_dar_da.options[:default_role])
@@ -1,3 +1,3 @@
1
1
  module DarDaDa
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -2,16 +2,16 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe DarDaDa::ActionControllerExtension, "extended Base" do
4
4
  it "should define only_if_{user}_is_allowed_to_{right} methods" do
5
- ApplicationController.private_instance_methods.map(&:to_s).should include("check_if_user_is_allowed_to_cancel_account")
5
+ expect(ApplicationController.private_instance_methods.map(&:to_s)).to include("check_if_user_is_allowed_to_cancel_account")
6
6
  User.create!(:role => :user)
7
- lambda{
8
- ApplicationController.new.send(:check_if_user_is_allowed_to_cancel_account)
9
- }.should raise_error(ActionController::ForbiddenError)
7
+ expect {
8
+ ApplicationController.new.send(:check_if_user_is_allowed_to_cancel_account)
9
+ }.to raise_error(ActionController::ForbiddenError)
10
10
  end
11
-
11
+
12
12
  it "should define only_if_user_is_allowed_to class method" do
13
- ApplicationController.methods.map(&:to_s).should include("require_right")
14
- ApplicationController.should_receive(:before_filter).with(:check_if_user_is_allowed_to_read_acticles, :only => [:index])
13
+ expect(ApplicationController.methods.map(&:to_s)).to include("require_right")
14
+ expect(ApplicationController).to receive(:before_action).with(:check_if_user_is_allowed_to_read_acticles, :only => [:index])
15
15
  ApplicationController.require_right(:read_acticles, :only => [:index])
16
16
  end
17
- end
17
+ end
@@ -2,86 +2,86 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe DarDaDa::ActiveRecordExtension, "extended Model" do
4
4
  before { @user = User.create! }
5
-
5
+
6
6
  it "should set role to default_role" do
7
- @user.role.should eql("user")
8
- User.new.role.should eql("user")
7
+ expect(@user.role).to eql("user")
8
+ expect(User.new.role).to eql("user")
9
9
  end
10
-
10
+
11
11
  it "should add role accessor to map role_attribute" do
12
12
  @user.role = :author
13
- @user.role.should eql("author")
13
+ expect(@user.role).to eql("author")
14
14
  @user.role = :unknown_role
15
- @user.role.should eql("author")
15
+ expect(@user.role).to eql("author")
16
16
  @user.save!
17
- @user.role.should eql("author")
18
- @user.update_attributes!(:role => 'user')
19
- @user.role.should eql("user")
17
+ expect(@user.role).to eql("author")
18
+ @user.update!(:role => 'user')
19
+ expect(@user.role).to eql("user")
20
20
  end
21
-
21
+
22
22
  it "should set default_role to user" do
23
- User.dar_dar_da.options[:default_role].should == (:"user")
23
+ expect(User.dar_dar_da.options[:default_role]).to eql :user
24
24
  end
25
-
25
+
26
26
  it "should prevent saving role_attribute with nil or empty" do
27
27
  @user.role_name = ""
28
- @user.send(:read_role_attribute).should be_blank
28
+ expect(@user.send(:read_role_attribute)).to be_blank
29
29
  @user.save!
30
30
  @user.reload
31
- @user.send(:read_role_attribute).should eql("user")
32
- @user.role_name.should eql("user")
33
- @user.role.should eql("user")
31
+ expect(@user.send(:read_role_attribute)).to eql("user")
32
+ expect(@user.role_name).to eql("user")
33
+ expect(@user.role).to eql("user")
34
34
  end
35
-
35
+
36
36
  it "should prevent saving role_attribute with not exisiting role" do
37
37
  @user.role_name = "unknown"
38
- @user.send(:read_role_attribute).should eql("unknown")
38
+ expect(@user.send(:read_role_attribute)).to eql("unknown")
39
39
  @user.save!
40
40
  @user.reload
41
- @user.send(:read_role_attribute).should eql("user")
42
- @user.role_name.should eql("user")
43
- @user.role.should eql("user")
41
+ expect(@user.send(:read_role_attribute)).to eql("user")
42
+ expect(@user.role_name).to eql("user")
43
+ expect(@user.role).to eql("user")
44
44
  end
45
-
45
+
46
46
  it "should add {role}? methods" do
47
- @user.should be_user
47
+ expect(@user).to be_user
48
48
  @user.role = :author
49
- @user.should be_author
49
+ expect(@user).to be_author
50
50
  @user.role = :admin
51
- @user.should be_admin
51
+ expect(@user).to be_admin
52
52
  end
53
-
53
+
54
54
  it "should add allowed_to? method" do
55
- @user.allowed_to?(:read_acticles).should be_true
56
- @user.allowed_to?("read_acticles").should be_true
57
- @user.allowed_to?(:write_acticles).should be_false
58
- @user.allowed_to?(:cancel_account).should be_false
59
- @user.allowed_to?(:do_unknown_stuff).should be_false
60
- @user.allowed_to?("").should be_false
61
- @user.allowed_to?(nil).should be_false
55
+ expect(@user.allowed_to?(:read_acticles)).to be true
56
+ expect(@user.allowed_to?("read_acticles")).to be true
57
+ expect(@user.allowed_to?(:write_acticles)).to be false
58
+ expect(@user.allowed_to?(:cancel_account)).to be false
59
+ expect(@user.allowed_to?(:do_unknown_stuff)).to be false
60
+ expect(@user.allowed_to?("")).to be false
61
+ expect(@user.allowed_to?(nil)).to be false
62
62
  end
63
-
63
+
64
64
  it "should add allowed_to_{right}? methods" do
65
- @user.should be_allowed_to_read_acticles
66
- @user.should_not be_allowed_to_write_acticles
67
- @user.should_not be_allowed_to_cancel_account
65
+ expect(@user).to be_allowed_to_read_acticles
66
+ expect(@user).to_not be_allowed_to_write_acticles
67
+ expect(@user).to_not be_allowed_to_cancel_account
68
68
  @user.role = :author
69
- @user.should be_allowed_to_read_acticles
70
- @user.should be_allowed_to_write_acticles
71
- @user.should_not be_allowed_to_cancel_account
69
+ expect(@user).to be_allowed_to_read_acticles
70
+ expect(@user).to be_allowed_to_write_acticles
71
+ expect(@user).to_not be_allowed_to_cancel_account
72
72
  @user.role = :admin
73
- @user.should be_allowed_to_read_acticles
74
- @user.should be_allowed_to_write_acticles
75
- @user.should be_allowed_to_cancel_account
73
+ expect(@user).to be_allowed_to_read_acticles
74
+ expect(@user).to be_allowed_to_write_acticles
75
+ expect(@user).to be_allowed_to_cancel_account
76
76
  end
77
-
77
+
78
78
  it "should add named_scope for every role" do
79
79
  User.destroy_all
80
80
  User.create!(:role => "admin")
81
81
  2.times { User.create!(:role => :author) }
82
82
  3.times { User.create!(:role => :user) }
83
- User.admins.map(&:role).should eql(["admin"])
84
- User.authors.map(&:role).should eql(["author", "author"])
85
- User.users.map(&:role).should eql(["user", "user", "user"])
83
+ expect(User.admins.map(&:role)).to eql(["admin"])
84
+ expect(User.authors.map(&:role)).to eql(["author", "author"])
85
+ expect(User.users.map(&:role)).to eql(["user", "user", "user"])
86
86
  end
87
- end
87
+ end
@@ -1,139 +1,139 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe DarDaDa::Config do
4
-
4
+
5
5
  it "should require nothing as attribute" do
6
- lambda { DarDaDa::Config.new }.should_not raise_error
6
+ expect { DarDaDa::Config.new }.not_to raise_error
7
7
  end
8
-
8
+
9
9
  it "should be empty " do
10
- DarDaDa::Config.new.should be_empty
10
+ expect(DarDaDa::Config.new).to be_empty
11
11
  end
12
-
12
+
13
13
  it "should allow accessing role by string" do
14
14
  config = DarDaDa::Config.new do
15
15
  role :admin
16
16
  end
17
- config["admin"].should eql(config[:admin])
17
+ expect(config["admin"]).to eql(config[:admin])
18
18
  config[nil]
19
19
  config[""]
20
20
  end
21
-
21
+
22
22
  describe "options" do
23
23
  it "should have role_attribute set to role_name default" do
24
- DarDaDa::Config.new.options[:role_attribute].should eql(:role_name)
24
+ expect(DarDaDa::Config.new.options[:role_attribute]).to eql(:role_name)
25
25
  end
26
-
26
+
27
27
  it "should allow setting role_attribute via options" do
28
- DarDaDa::Config.new(:role_attribute => :role).options[:role_attribute].should eql(:role)
28
+ expect(DarDaDa::Config.new(:role_attribute => :role).options[:role_attribute]).to eql(:role)
29
29
  end
30
30
  end
31
-
31
+
32
32
  it "should eval block inside instance" do
33
- lambda { DarDaDa::Config.new do
33
+ expect { DarDaDa::Config.new do
34
34
  raise "config_error"
35
- end }.should raise_error("config_error")
35
+ end }.to raise_error("config_error")
36
36
  end
37
-
37
+
38
38
  describe "role" do
39
-
39
+
40
40
  it "should add new instance to roles" do
41
41
  config = DarDaDa::Config.new do
42
42
  role :admin
43
43
  end
44
- config.keys.should eql([:admin])
44
+ expect(config.keys).to eql([:admin])
45
45
  end
46
-
46
+
47
47
  it "should eval role-block inside role-instance" do
48
- lambda { DarDaDa::Config.new do
48
+ expect { DarDaDa::Config.new do
49
49
  role :admin do
50
50
  raise name.to_s + "_deep_error"
51
51
  end
52
- end }.should raise_error("admin_deep_error")
53
-
52
+ end }.to raise_error("admin_deep_error")
53
+
54
54
  config = DarDaDa::Config.new do
55
55
  role :admin do
56
56
  is_allowed_to :manage_users
57
57
  end
58
58
  end
59
-
60
- config.should == ({:admin => [:manage_users]})
59
+
60
+ expect(config).to eql ({:admin => [:manage_users]})
61
61
  end
62
-
62
+
63
63
  it "should eval role-block inside of exisiting role-instance" do
64
64
  config = DarDaDa::Config.new do
65
65
  role :admin do
66
66
  is_allowed_to :manage_users
67
67
  end
68
-
68
+
69
69
  role :admin do
70
70
  is_allowed_to :manage_projects
71
71
  end
72
72
  end
73
-
74
- config.should == ({:admin => [:manage_users, :manage_projects]})
73
+
74
+ expect(config).to eql ({:admin => [:manage_users, :manage_projects]})
75
75
  end
76
-
76
+
77
77
  it "should reopen existing config and eval block" do
78
78
  config = DarDaDa::Config.new
79
79
  config.reopen do
80
80
  role :admin
81
81
  end
82
- config.keys.should eql([:admin])
82
+ expect(config.keys).to eql([:admin])
83
83
  end
84
-
84
+
85
85
  end
86
-
86
+
87
87
  describe "default_role" do
88
88
  it "should have empty default_role" do
89
- DarDaDa::Config.new.options[:default_role].should be_nil
89
+ expect(DarDaDa::Config.new.options[:default_role]).to be_nil
90
90
  end
91
-
91
+
92
92
  it "should set first added role to default_role by default" do
93
93
  config = DarDaDa::Config.new do
94
94
  role :admin
95
95
  role :author
96
96
  end
97
- config.options[:default_role].should eql(:admin)
97
+ expect(config.options[:default_role]).to eql(:admin)
98
98
  end
99
-
99
+
100
100
  it "should allow setting default_role while initalizing" do
101
101
  config = DarDaDa::Config.new :default_role => :admin do
102
102
  role :author
103
103
  role :admin
104
104
  end
105
- config.options[:default_role].should eql(:admin)
105
+ expect(config.options[:default_role]).to eql(:admin)
106
106
  end
107
-
107
+
108
108
  it "should remove nonexisiting roles after initalizing" do
109
109
  config = DarDaDa::Config.new :default_role => :admin do
110
110
  end
111
- config.options[:default_role].should be_nil
111
+ expect(config.options[:default_role]).to be_nil
112
112
  config = DarDaDa::Config.new :default_role => :admin
113
- config.options[:default_role].should be_nil
113
+ expect(config.options[:default_role]).to be_nil
114
114
  end
115
-
115
+
116
116
  it "should take first added role even when invalid other specified" do
117
117
  config = DarDaDa::Config.new :default_role => :admin do
118
118
  role :author
119
119
  end
120
- config.options[:default_role].should eql(:author)
120
+ expect(config.options[:default_role]).to eql(:author)
121
121
  end
122
-
122
+
123
123
  it "should allow setting role to default_role when given" do
124
124
  config = DarDaDa::Config.new do
125
125
  role :admin
126
126
  role :author, :default => true
127
127
  end
128
- config.options[:default_role].should eql(:author)
128
+ expect(config.options[:default_role]).to eql(:author)
129
129
  end
130
130
  end
131
-
131
+
132
132
  describe "all_rights" do
133
133
  it "should be empty by default" do
134
- DarDaDa::Config.new.all_rights.should eql([])
134
+ expect(DarDaDa::Config.new.all_rights).to eql([])
135
135
  end
136
-
136
+
137
137
  it "should collect all rights" do
138
138
  config = DarDaDa::Config.new do
139
139
  role :admin do
@@ -144,10 +144,10 @@ describe DarDaDa::Config do
144
144
  is_allowed_to :d
145
145
  end
146
146
  end
147
- config.all_rights.should include(:a, :b, :c, :d, :e)
148
- config.all_rights.size.should eql([:a, :b, :c, :d, :e].size)
147
+ expect(config.all_rights).to include(:a, :b, :c, :d, :e)
148
+ expect(config.all_rights.size).to eql([:a, :b, :c, :d, :e].size)
149
149
  end
150
-
150
+
151
151
  it "should remove duplicates" do
152
152
  config = DarDaDa::Config.new do
153
153
  role :admin do
@@ -159,54 +159,54 @@ describe DarDaDa::Config do
159
159
  is_allowed_to :c
160
160
  end
161
161
  end
162
-
163
- config.all_rights.should include(:a, :b, :c)
164
- config.all_rights.size.should eql([:a, :b, :c].size)
162
+
163
+ expect(config.all_rights).to include(:a, :b, :c)
164
+ expect(config.all_rights.size).to eql([:a, :b, :c].size)
165
165
  end
166
166
  end
167
-
167
+
168
168
  describe "based_on" do
169
169
  it "should copy rights between roles" do
170
170
  config = DarDaDa::Config.new do
171
-
171
+
172
172
  role :author do
173
173
  based_on :user
174
174
  is_allowed_to :write_articles
175
175
  end
176
-
176
+
177
177
  role :user do
178
178
  is_allowed_to :read_articles
179
179
  end
180
-
180
+
181
181
  role :admin do
182
182
  based_on :author
183
183
  is_allowed_to :cancel_accounts
184
184
  end
185
185
  end
186
-
187
- config[:admin].should == ([:cancel_accounts, :write_articles, :read_articles])
188
- config[:author].should == ([:write_articles, :read_articles])
189
- config[:user].should == ([:read_articles])
186
+
187
+ expect(config[:admin]).to eql ([:cancel_accounts, :write_articles, :read_articles])
188
+ expect(config[:author]).to eql ([:write_articles, :read_articles])
189
+ expect(config[:user]).to eql ([:read_articles])
190
190
  end
191
-
191
+
192
192
  it "should throw error on circular references" do
193
- lambda { config = DarDaDa::Config.new do
194
-
193
+ expect { config = DarDaDa::Config.new do
194
+
195
195
  role :author do
196
196
  based_on :user
197
197
  is_allowed_to :write_articles
198
198
  end
199
-
199
+
200
200
  role :user do
201
201
  based_on :admin
202
202
  is_allowed_to :read_articles
203
203
  end
204
-
204
+
205
205
  role :admin do
206
206
  based_on :author
207
207
  is_allowed_to :cancel_accounts
208
208
  end
209
- end }.should raise_error("You defined a circular reference when configuring DarDaDa with 'based_on'.")
209
+ end }.to raise_error("You defined a circular reference when configuring DarDaDa with 'based_on'.")
210
210
  end
211
211
  end
212
- end
212
+ end
@@ -1,69 +1,69 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe DarDaDa::Role do
4
-
4
+
5
5
  before do
6
6
  @role = DarDaDa::Role.new(:role1)
7
7
  end
8
-
8
+
9
9
  it "should require name as attribute" do
10
- lambda { DarDaDa::Role.new }.should raise_error(ArgumentError)
11
- DarDaDa::Role.new(:role1).name.should eql(:role1)
10
+ expect { DarDaDa::Role.new }.to raise_error(ArgumentError)
11
+ expect(DarDaDa::Role.new(:role1).name).to eql(:role1)
12
12
  end
13
-
13
+
14
14
  it "should store name as symbol" do
15
- DarDaDa::Role.new("role1").name.should eql(:role1)
15
+ expect(DarDaDa::Role.new("role1").name).to eql(:role1)
16
16
  end
17
-
17
+
18
18
  it "should be empty array" do
19
- @role.should eql([])
19
+ expect(@role).to eql([])
20
20
  end
21
-
21
+
22
22
  it "should convert strings to symbols when adding" do
23
23
  @role << :r1
24
- @role.should eql([:r1])
24
+ expect(@role).to eql([:r1])
25
25
  @role << "r2"
26
- @role.should eql([:r1, :r2])
26
+ expect(@role).to eql([:r1, :r2])
27
27
  end
28
-
28
+
29
29
  it "should have include?/memeber? methods that convert strings to symbols" do
30
30
  @role << :manage_projects
31
- @role.include?(:manage_projects).should be_true
32
- @role.include?("manage_projects").should be_true
33
- @role.include?("manage_users").should be_false
34
- @role.member?(:manage_projects).should be_true
35
- @role.member?("manage_projects").should be_true
36
- @role.member?("manage_users").should be_false
31
+ expect(@role.include?(:manage_projects)).to be true
32
+ expect(@role.include?("manage_projects")).to be true
33
+ expect(@role.include?("manage_users")).to be false
34
+ expect(@role.member?(:manage_projects)).to be true
35
+ expect(@role.member?("manage_projects")).to be true
36
+ expect(@role.member?("manage_users")).to be false
37
37
  end
38
-
38
+
39
39
  describe "is_allowed_to" do
40
40
  it "should add new instance to rights" do
41
41
  @role.is_allowed_to :manage_projects
42
- @role.should eql([:manage_projects])
42
+ expect(@role).to eql([:manage_projects])
43
43
  end
44
-
44
+
45
45
  it "should convert strings to symbols" do
46
46
  @role.is_allowed_to "manage_projects"
47
- @role.should eql([:manage_projects])
47
+ expect(@role).to eql([:manage_projects])
48
48
  end
49
-
49
+
50
50
  it "should allow adding multiple rights at once" do
51
51
  @role.is_allowed_to :manage_projects, :cancel_account
52
- @role.should eql([:manage_projects, :cancel_account])
52
+ expect(@role).to eql([:manage_projects, :cancel_account])
53
53
  end
54
54
  end
55
-
55
+
56
56
  describe "based_on" do
57
57
  it "should add new instance to merge_rights_from" do
58
58
  role = DarDaDa::Role.new(:admin)
59
59
  role.based_on "author"
60
- role.merge_rights_from.should eql([:author])
60
+ expect(role.merge_rights_from).to eql([:author])
61
61
  end
62
-
62
+
63
63
  it "should allow adding multiple roles at once" do
64
64
  role = DarDaDa::Role.new(:role1)
65
65
  role.based_on :author, "user"
66
- role.merge_rights_from.should == ([:author, :user])
66
+ expect(role.merge_rights_from).to eql([:author, :user])
67
67
  end
68
68
  end
69
- end
69
+ end
metadata CHANGED
@@ -1,157 +1,94 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dar_da_da
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 2
9
- segments_generated: true
10
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Sebastian Munz
14
- autorequire:
8
+ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-11-10 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: activesupport
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 3
30
- - 0
31
- segments_generated: true
32
- version: "3.0"
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
11
+ date: 2020-07-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
37
14
  name: activerecord
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- segments:
44
- - 3
45
- - 0
46
- segments_generated: true
47
- version: "3.0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
48
20
  type: :runtime
49
21
  prerelease: false
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
52
28
  name: actionpack
53
- requirement: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ~>
57
- - !ruby/object:Gem::Version
58
- segments:
59
- - 3
60
- - 0
61
- segments_generated: true
62
- version: "3.0"
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
63
34
  type: :development
64
35
  prerelease: false
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '4.0'
41
+ - !ruby/object:Gem::Dependency
67
42
  name: rspec
68
- requirement: &id004 !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
71
45
  - - ">="
72
- - !ruby/object:Gem::Version
73
- segments:
74
- - 2
75
- - 4
76
- - 0
77
- segments_generated: true
78
- version: 2.4.0
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
79
48
  type: :development
80
49
  prerelease: false
81
- version_requirements: *id004
82
- - !ruby/object:Gem::Dependency
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
83
56
  name: guard-rspec
84
- requirement: &id005 !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
87
59
  - - ">="
88
- - !ruby/object:Gem::Version
89
- segments:
90
- - 0
91
- - 1
92
- - 9
93
- segments_generated: true
94
- version: 0.1.9
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
95
62
  type: :development
96
63
  prerelease: false
97
- version_requirements: *id005
98
- - !ruby/object:Gem::Dependency
99
- name: growl
100
- requirement: &id006 !ruby/object:Gem::Requirement
101
- none: false
102
- requirements:
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
103
66
  - - ">="
104
- - !ruby/object:Gem::Version
105
- segments:
106
- - 1
107
- - 0
108
- - 3
109
- segments_generated: true
110
- version: 1.0.3
111
- type: :development
112
- prerelease: false
113
- version_requirements: *id006
114
- - !ruby/object:Gem::Dependency
115
- name: rb-fsevent
116
- requirement: &id007 !ruby/object:Gem::Requirement
117
- none: false
118
- requirements:
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
119
73
  - - ">="
120
- - !ruby/object:Gem::Version
121
- segments:
122
- - 0
123
- - 3
124
- - 9
125
- segments_generated: true
126
- version: 0.3.9
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
127
76
  type: :development
128
77
  prerelease: false
129
- version_requirements: *id007
130
- - !ruby/object:Gem::Dependency
131
- name: sqlite3-ruby
132
- requirement: &id008 !ruby/object:Gem::Requirement
133
- none: false
134
- requirements:
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
135
80
  - - ">="
136
- - !ruby/object:Gem::Version
137
- segments:
138
- - 0
139
- segments_generated: true
140
- version: "0"
141
- type: :development
142
- prerelease: false
143
- version_requirements: *id008
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
144
83
  description: Roles easy like sunday morning.
145
- email:
84
+ email:
146
85
  - sebastian@yo.lk
147
86
  executables: []
148
-
149
87
  extensions: []
150
-
151
88
  extra_rdoc_files: []
152
-
153
- files:
154
- - .gitignore
89
+ files:
90
+ - ".gitignore"
91
+ - CHANGES.md
155
92
  - Gemfile
156
93
  - Guardfile
157
94
  - LICENSE
@@ -170,43 +107,29 @@ files:
170
107
  - spec/dar_da_da/config_spec.rb
171
108
  - spec/dar_da_da/role_spec.rb
172
109
  - spec/spec_helper.rb
173
- has_rdoc: true
174
110
  homepage: https://github.com/yolk/dar_da_da
175
111
  licenses: []
176
-
177
- post_install_message:
112
+ metadata: {}
113
+ post_install_message:
178
114
  rdoc_options: []
179
-
180
- require_paths:
115
+ require_paths:
181
116
  - lib
182
- required_ruby_version: !ruby/object:Gem::Requirement
183
- none: false
184
- requirements:
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
185
119
  - - ">="
186
- - !ruby/object:Gem::Version
187
- hash: -433884475567382819
188
- segments:
189
- - 0
190
- segments_generated: true
191
- version: "0"
192
- required_rubygems_version: !ruby/object:Gem::Requirement
193
- none: false
194
- requirements:
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
195
124
  - - ">="
196
- - !ruby/object:Gem::Version
197
- hash: -433884475567382819
198
- segments:
199
- - 0
200
- segments_generated: true
201
- version: "0"
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
202
127
  requirements: []
203
-
204
- rubyforge_project: dar_da_da
205
- rubygems_version: 1.3.7
206
- signing_key:
207
- specification_version: 3
128
+ rubygems_version: 3.0.3
129
+ signing_key:
130
+ specification_version: 4
208
131
  summary: Roles easy like sunday morning.
209
- test_files:
132
+ test_files:
210
133
  - spec/dar_da_da/action_controller_extension_spec.rb
211
134
  - spec/dar_da_da/active_record_extension_spec.rb
212
135
  - spec/dar_da_da/config_spec.rb