indulgence 0.1.2 → 0.2.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.
- checksums.yaml +5 -13
- data/README.rdoc +1 -1
- data/Rakefile +7 -3
- data/lib/indulgence.rb +1 -1
- data/lib/indulgence/ability.rb +14 -14
- data/lib/indulgence/version.rb +21 -19
- data/test/db/test.sqlite3.db +0 -0
- data/test/test_helper.rb +1 -1
- data/test/units/indulgence/ability_tests/method_only.rb +2 -2
- data/test/units/indulgence/ability_tests/with_lambdas.rb +2 -2
- data/test/units/indulgence/permission_test.rb +1 -1
- data/test/units/role_permission_test.rb +8 -7
- data/test/units/role_test.rb +1 -1
- data/test/units/thing_permission_test.rb +4 -4
- data/test/units/thing_test.rb +33 -33
- data/test/units/user_test.rb +1 -1
- data/test/units/work_process_test.rb +2 -2
- metadata +29 -29
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MTA3MjYwOTkwMGQyNjk2NzZmNWE3NzdmM2I4NDYyNTMxNjFlM2Q2MQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f8f234d4658451ecf9f338b09b0c483f4fc269d6
|
4
|
+
data.tar.gz: aa0a25dc4d605700df60ac1aff1edcc08dc61447
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MzI4NmNiOGFmNjI0YTc0N2MxMGVhNzFlZjc4YzdmYTMxY2ZhNTJkY2VkYzQw
|
11
|
-
N2FmYjM1NTA1YTFhNGZlNjFkYzM5MzU3MTA4YjFmY2I2YjA1M2I=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZDY4Y2ZhYTZmZDE0MjBmZDZmNTQ1ZWIzNjA2OGRmYjE5ZmYwM2ZhNjczMGQ1
|
14
|
-
N2IzYmE2NjVlZGIwZGFhMmNiMTExYThlODgzMmI3ZjkzY2E0N2NlYmY3YTBl
|
15
|
-
ODFiNTJlZmE5N2U0ZmVmNDNjZmM0OTIzOTU1Y2VmYTM5ZTU3MzA=
|
6
|
+
metadata.gz: 3a9d519a3b1a14393a0c9ccc0c8e4300c4370ac96bfdfa10d5599eb10156b45be7af5f6a69b96089e046b58d04c3c2c99ada60fa1e7730fb4eec480c7af83963
|
7
|
+
data.tar.gz: b907d7477881668bcec5aea9525a44824b2774dc019abeecfa0f15c1ce33919110447749706cb5d19b4bc9d2322b236f343f688f7f650f93072a74fea8d280b2
|
data/README.rdoc
CHANGED
@@ -118,7 +118,7 @@ Let's give Emperors the right to see and do anything by first creating an empero
|
|
118
118
|
emperor = Role.create(:name => 'emperor')
|
119
119
|
caesar = User.create(
|
120
120
|
:first_name => 'Julius',
|
121
|
-
:last_name => '
|
121
|
+
:last_name => 'Caesar',
|
122
122
|
:role => emperor
|
123
123
|
)
|
124
124
|
|
data/Rakefile
CHANGED
@@ -4,17 +4,21 @@ require 'rake'
|
|
4
4
|
require 'rake/clean'
|
5
5
|
require 'rake/testtask'
|
6
6
|
|
7
|
-
Rake::TestTask.new do |t|
|
7
|
+
Rake::TestTask.new(:test) do |t|
|
8
|
+
t.libs << "test"
|
9
|
+
t.libs << "lib"
|
8
10
|
t.test_files = FileList['test/**/*_test.rb']
|
9
11
|
end
|
10
12
|
|
13
|
+
task :default => :test
|
14
|
+
|
11
15
|
require 'standalone_migrations'
|
12
16
|
StandaloneMigrations::Tasks.load_tasks
|
13
17
|
|
14
18
|
task :console do
|
15
19
|
require 'irb'
|
16
20
|
require 'irb/completion'
|
17
|
-
require 'indulgence'
|
21
|
+
require 'indulgence'
|
18
22
|
ARGV.clear
|
19
23
|
IRB.start
|
20
|
-
end
|
24
|
+
end
|
data/lib/indulgence.rb
CHANGED
data/lib/indulgence/ability.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
module Indulgence
|
3
3
|
class Ability
|
4
4
|
attr_reader :name, :relationship, :args
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(args = {})
|
7
7
|
@name = args[:name]
|
8
8
|
@compare_single = args[:compare_single]
|
@@ -11,14 +11,14 @@ module Indulgence
|
|
11
11
|
@args = args
|
12
12
|
valid?
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def ==(another_ability)
|
16
16
|
[:name, :args].each do |method|
|
17
17
|
return false if send(method) != another_ability.send(method)
|
18
18
|
end
|
19
19
|
return true
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def valid?
|
23
23
|
must_be_name
|
24
24
|
unless relationship
|
@@ -26,41 +26,41 @@ module Indulgence
|
|
26
26
|
must_respond_to_call @filter_many
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def compare_single(thing, entity)
|
31
31
|
return @compare_single.call thing, entity if @compare_single
|
32
|
-
|
32
|
+
|
33
33
|
identifier = thing.send(relationship)
|
34
|
-
if identifier.kind_of?(Array)
|
34
|
+
if identifier.kind_of?(Array) || identifier.kind_of?(ActiveRecord::Relation)
|
35
35
|
identifier.include? entity
|
36
|
-
else
|
37
|
-
identifier == entity.id || identifier == entity
|
36
|
+
else
|
37
|
+
identifier == entity.id || identifier == entity
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
def filter_many(things, entity)
|
42
42
|
return @filter_many.call things, entity if @filter_many
|
43
|
-
|
43
|
+
|
44
44
|
if things.reflect_on_association(relationship)
|
45
45
|
things.joins(relationship).where(entity.class.table_name => {:id => entity.id})
|
46
46
|
else
|
47
47
|
things.where(relationship => entity.id)
|
48
48
|
end
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
private
|
52
52
|
def must_be_name
|
53
53
|
unless name
|
54
54
|
raise AbilityConfigurationError, "A name is required for each ability"
|
55
55
|
end
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
def must_respond_to_call(item)
|
59
59
|
unless item.respond_to? :call
|
60
60
|
raise AbilityConfigurationError, "item must respond to call: #{item.inspect}"
|
61
61
|
end
|
62
62
|
end
|
63
|
-
|
64
|
-
|
63
|
+
|
64
|
+
|
65
65
|
end
|
66
66
|
end
|
data/lib/indulgence/version.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
module Indulgence
|
2
|
-
VERSION = "0.
|
2
|
+
VERSION = "0.2.0"
|
3
3
|
end
|
4
4
|
|
5
5
|
# History
|
6
6
|
# =======
|
7
7
|
#
|
8
|
+
# 0.2.0 Updated to work with ActiveRecord 5.
|
9
|
+
#
|
8
10
|
# 0.1.2 Adds strict mode - to allow more flexible use (if a none user object
|
9
11
|
# is passed to indulge?, in strict mode a no method error is raised. When
|
10
12
|
# indulgence.strict = false, indulge? will use the default abilities)
|
11
|
-
#
|
13
|
+
#
|
12
14
|
# 0.1.1 Makes it easier to use the state of an object to determine permissions
|
13
15
|
# rather than a user's role.
|
14
16
|
#
|
@@ -20,38 +22,38 @@ end
|
|
20
22
|
#
|
21
23
|
# 0.0.6 Specifies the default behaviour as assigning the none ability to
|
22
24
|
# all CRUD actions.
|
23
|
-
#
|
25
|
+
#
|
24
26
|
# 0.0.5 Allows simplified ability definition to be used with has_many
|
25
|
-
#
|
27
|
+
#
|
26
28
|
# 0.0.4 Simplifies defining abilities
|
27
|
-
#
|
28
|
-
# Allows and ability to be defined by passing in the name of the
|
29
|
+
#
|
30
|
+
# Allows and ability to be defined by passing in the name of the
|
29
31
|
# association that it refers to.
|
30
|
-
#
|
32
|
+
#
|
31
33
|
# 0.0.3 Updated to use latest version of standalone_migrations
|
32
|
-
#
|
34
|
+
#
|
33
35
|
# Branch this app has been using has been merged into standalone_migrations
|
34
36
|
# main. So config in .standalone_migrations now works without
|
35
37
|
# using a specific clone branch.
|
36
|
-
#
|
38
|
+
#
|
37
39
|
# 0.0.2 Rebuild with lessons learnt from first usage in host app
|
38
|
-
#
|
39
|
-
# Adds automatic caching of abilites. Required a reworking of ability
|
40
|
+
#
|
41
|
+
# Adds automatic caching of abilites. Required a reworking of ability
|
40
42
|
# lambdas, so that a particular entity id wasn't cached
|
41
|
-
#
|
42
|
-
# Renamed ability methods truth as compare_single, and where_clause as
|
43
|
+
#
|
44
|
+
# Renamed ability methods truth as compare_single, and where_clause as
|
43
45
|
# filter_many as more descriptive.
|
44
|
-
#
|
45
|
-
# Forced Ability methods #compare_single and #filter_many to use lambdas
|
46
|
+
#
|
47
|
+
# Forced Ability methods #compare_single and #filter_many to use lambdas
|
46
48
|
# (or other object that responds to call). The reasons:
|
47
|
-
#
|
49
|
+
#
|
48
50
|
# 1. To remove the special way that the none ability was handled.
|
49
51
|
# 2. Previously, if Ability#filter_many was nil everything would be returned,
|
50
52
|
# which I think is counter-intuitive.
|
51
53
|
# 3. Also if Ability#filter_many was undefined, then everything would
|
52
54
|
# be returned, which is just poor design for a permission tool. Now
|
53
|
-
# an error is raised.
|
54
|
-
#
|
55
|
+
# an error is raised.
|
56
|
+
#
|
55
57
|
# 0.0.1 Initial build
|
56
58
|
# First alpa version
|
57
|
-
#
|
59
|
+
#
|
data/test/db/test.sqlite3.db
CHANGED
Binary file
|
data/test/test_helper.rb
CHANGED
@@ -3,7 +3,7 @@ $:.unshift File.join(File.dirname(__FILE__),'units')
|
|
3
3
|
$:.unshift File.join(File.dirname(__FILE__),'lib')
|
4
4
|
$:.unshift File.join(File.dirname(__FILE__),'..','lib','indulgence')
|
5
5
|
|
6
|
-
require
|
6
|
+
require "minitest/autorun"
|
7
7
|
|
8
8
|
require 'active_record'
|
9
9
|
ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => "test/db/test.sqlite3.db"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
module Indulgence
|
3
3
|
module AbilityTests
|
4
|
-
class MethodOnly < Test
|
4
|
+
class MethodOnly < Minitest::Test
|
5
5
|
|
6
6
|
def setup
|
7
7
|
@attributes = {
|
@@ -28,7 +28,7 @@ module Indulgence
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def assert_initiation_raises_error
|
31
|
-
|
31
|
+
assert_raises AbilityConfigurationError do
|
32
32
|
Ability.new(@attributes)
|
33
33
|
end
|
34
34
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Indulgence
|
4
4
|
module AbilityTests
|
5
|
-
class WithLambdas < Test
|
5
|
+
class WithLambdas < Minitest::Test
|
6
6
|
|
7
7
|
def setup
|
8
8
|
@attributes = {
|
@@ -35,7 +35,7 @@ module Indulgence
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def assert_initiation_raises_error
|
38
|
-
|
38
|
+
assert_raises AbilityConfigurationError do
|
39
39
|
Ability.new(@attributes)
|
40
40
|
end
|
41
41
|
end
|
@@ -3,35 +3,36 @@ require 'user'
|
|
3
3
|
require 'role'
|
4
4
|
require 'role_permission'
|
5
5
|
|
6
|
-
class RolePermissionTest < Test
|
6
|
+
class RolePermissionTest < Minitest::Test
|
7
7
|
def setup
|
8
8
|
@role = Role.create(:name => 'mortal')
|
9
9
|
@user = User.create(:name => 'Trevor', :role_id => @role.id)
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def test_indulge_with_has_many
|
13
|
+
@role.reload
|
13
14
|
assert_equal(true, @role.indulge?(@user, :read))
|
14
15
|
assert_equal(false, @role.indulge?(@user, :delete))
|
15
16
|
end
|
16
|
-
|
17
|
+
|
17
18
|
def test_indulgence_with_has_many
|
18
19
|
assert_equal([@role], Role.indulgence(@user, :read))
|
19
|
-
|
20
|
+
assert_raises ActiveRecord::RecordNotFound do
|
20
21
|
Role.indulgence(@user, :delete)
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
24
25
|
def test_null_entity_indulge
|
25
26
|
assert_equal(false, @role.indulge?(nil, :update))
|
26
|
-
|
27
|
+
refute_equal(@role.indulge?(@user, :update), @role.indulge?(nil, :update))
|
27
28
|
end
|
28
29
|
|
29
30
|
def test_null_entity_indulgence
|
30
|
-
|
31
|
+
assert_raises ActiveRecord::RecordNotFound do
|
31
32
|
assert_equal(0, Role.indulgence(nil, :update).count)
|
32
33
|
end
|
33
34
|
end
|
34
|
-
|
35
|
+
|
35
36
|
def teardown
|
36
37
|
User.delete_all
|
37
38
|
Role.delete_all
|
data/test/units/role_test.rb
CHANGED
@@ -3,7 +3,7 @@ require 'user'
|
|
3
3
|
require 'role'
|
4
4
|
require 'thing_permission'
|
5
5
|
|
6
|
-
class ThingPermissionTest < Test
|
6
|
+
class ThingPermissionTest < Minitest::Test
|
7
7
|
|
8
8
|
Permission = Indulgence::Permission
|
9
9
|
|
@@ -47,7 +47,7 @@ class ThingPermissionTest < Test::Unit::TestCase
|
|
47
47
|
|
48
48
|
def test_setting_unknown_role_method_causes_error
|
49
49
|
Permission.role_method = :something_else
|
50
|
-
|
50
|
+
assert_raises NoMethodError do
|
51
51
|
ThingPermission.new(@super_user, :read).role_name
|
52
52
|
end
|
53
53
|
end
|
@@ -59,7 +59,7 @@ class ThingPermissionTest < Test::Unit::TestCase
|
|
59
59
|
|
60
60
|
def test_setting_unknown_role_name_method_causes_error
|
61
61
|
Permission.role_name_method = :something_else
|
62
|
-
|
62
|
+
assert_raises NoMethodError do
|
63
63
|
ThingPermission.new(@super_user, :read).role_name
|
64
64
|
end
|
65
65
|
end
|
@@ -70,7 +70,7 @@ class ThingPermissionTest < Test::Unit::TestCase
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def test_with_unspecified_ability
|
73
|
-
|
73
|
+
assert_raises Indulgence::AbilityNotFound do
|
74
74
|
ThingPermission.new(@user, :unspecified)
|
75
75
|
end
|
76
76
|
end
|
data/test/units/thing_test.rb
CHANGED
@@ -2,8 +2,8 @@ require_relative '../test_helper'
|
|
2
2
|
require 'user'
|
3
3
|
require 'thing'
|
4
4
|
|
5
|
-
class ThingTest < Test
|
6
|
-
|
5
|
+
class ThingTest < Minitest::Test
|
6
|
+
|
7
7
|
def setup
|
8
8
|
@god = Role.create(:name => 'god')
|
9
9
|
@demigod = Role.create(:name => 'demigod')
|
@@ -13,38 +13,38 @@ class ThingTest < Test::Unit::TestCase
|
|
13
13
|
@thing = Thing.create(:name => 'Stuff', :owner => @owner)
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
|
17
17
|
def test_user
|
18
18
|
assert_equal(@owner, @thing.owner)
|
19
|
-
assert_equal([@thing], @owner.things)
|
19
|
+
assert_equal([@thing], @owner.things)
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def test_indulge
|
23
23
|
make_second_thing
|
24
24
|
assert_equal(false, @thing.indulge?(@owner, :read))
|
25
25
|
assert_equal(false, @thing.indulge?(@owner, :delete))
|
26
26
|
assert_equal(false, @other_thing.indulge?(@owner, :delete))
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def test_indulge_by_god
|
30
30
|
make_second_thing
|
31
31
|
@owner.update_attribute(:role, @god)
|
32
32
|
assert_equal(true, @thing.indulge?(@owner, :read))
|
33
33
|
assert_equal(true, @thing.indulge?(@owner, :delete))
|
34
|
-
assert_equal(true, @other_thing.indulge?(@owner, :delete))
|
34
|
+
assert_equal(true, @other_thing.indulge?(@owner, :delete))
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def test_indulgence_by_god
|
38
38
|
make_second_thing
|
39
39
|
@owner.update_attribute(:role, @god)
|
40
|
-
assert_equal(Thing.all, Thing.indulgence(@owner, :delete))
|
40
|
+
assert_equal(Thing.all, Thing.indulgence(@owner, :delete))
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
def test_indulge_by_demigod
|
44
44
|
make_second_thing
|
45
45
|
@owner.update_attribute(:role, @demigod)
|
46
46
|
assert_equal(true, @thing.indulge?(@owner, :read))
|
47
|
-
assert_equal(true, @thing.indulge?(@owner, :delete))
|
47
|
+
assert_equal(true, @thing.indulge?(@owner, :delete))
|
48
48
|
assert_equal(false, @other_thing.indulge?(@owner, :delete))
|
49
49
|
end
|
50
50
|
|
@@ -52,15 +52,15 @@ class ThingTest < Test::Unit::TestCase
|
|
52
52
|
make_second_thing
|
53
53
|
@owner.update_attribute(:role, @thief)
|
54
54
|
assert_equal(true, @thing.indulge?(@owner, :read))
|
55
|
-
assert_equal(true, @thing.indulge?(@owner, :update))
|
55
|
+
assert_equal(true, @thing.indulge?(@owner, :update))
|
56
56
|
assert_equal(false, @thing.indulge?(@owner, :delete))
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
def test_indulge_via_entity_association
|
60
60
|
make_second_thing
|
61
61
|
@owner.update_attribute(:role, @friend)
|
62
62
|
assert_equal(true, @thing.indulge?(@owner, :read))
|
63
|
-
assert_equal(true, @thing.indulge?(@owner, :update))
|
63
|
+
assert_equal(true, @thing.indulge?(@owner, :update))
|
64
64
|
assert_equal(false, @thing.indulge?(@owner, :delete))
|
65
65
|
end
|
66
66
|
|
@@ -90,53 +90,53 @@ class ThingTest < Test::Unit::TestCase
|
|
90
90
|
@owner.update_attribute(:role, @demigod)
|
91
91
|
assert_equal(false, Thing.indulge?(@owner, :update))
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
def test_indulge_other_thing
|
95
95
|
other_thing = OtherThing.create(:name => 'Other Stuff', :owner => @owner)
|
96
96
|
assert_equal(false, other_thing.indulge?(@owner, :read))
|
97
97
|
assert_equal(false, other_thing.indulge?(@owner, :delete))
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
def test_indulgence
|
101
101
|
make_second_thing
|
102
102
|
@owner.update_attribute(:role, @demigod)
|
103
103
|
assert_equal(Thing.order('id'), Thing.indulgence(@owner, :read).order('id'))
|
104
|
-
|
104
|
+
assert_raises ActiveRecord::RecordNotFound do
|
105
105
|
Thing.indulgence(@user, :read).order('id')
|
106
106
|
end
|
107
107
|
assert_equal([@thing], Thing.indulgence(@owner, :delete))
|
108
|
-
|
108
|
+
assert_raises ActiveRecord::RecordNotFound do
|
109
109
|
Thing.indulgence(@user, :delete)
|
110
110
|
end
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
def test_indulgence_via_entity_id_method
|
114
114
|
make_second_thing
|
115
115
|
@owner.update_attribute(:role, @thief)
|
116
116
|
assert_equal(Thing.where(:owner_id => @owner.id), Thing.indulgence(@owner, :update))
|
117
117
|
end
|
118
|
-
|
118
|
+
|
119
119
|
def test_indulgence_via_entity_association
|
120
120
|
make_second_thing
|
121
121
|
@owner.update_attribute(:role, @friend)
|
122
|
-
assert_equal(Thing.where(:owner_id => @owner.id).
|
122
|
+
assert_equal(Thing.where(:owner_id => @owner.id).to_a, Thing.indulgence(@owner, :update).to_a)
|
123
123
|
end
|
124
|
-
|
124
|
+
|
125
125
|
def test_indulgence_with_unspecified_ability
|
126
|
-
|
126
|
+
assert_raises ActiveRecord::RecordNotFound do
|
127
127
|
Thing.indulgence(@owner, :unspecified)
|
128
|
-
end
|
128
|
+
end
|
129
129
|
end
|
130
|
-
|
130
|
+
|
131
131
|
def test_find
|
132
132
|
make_second_thing
|
133
133
|
@owner.update_attribute(:role, @demigod)
|
134
134
|
assert_equal(@thing, Thing.indulgence(@owner, :delete).find(@thing.id))
|
135
|
-
|
135
|
+
assert_raises ActiveRecord::RecordNotFound do
|
136
136
|
assert_equal(@thing, Thing.indulgence(@user, :delete).find(@thing.id))
|
137
137
|
end
|
138
138
|
end
|
139
|
-
|
139
|
+
|
140
140
|
def test_aliased_compare_single_method
|
141
141
|
make_second_thing
|
142
142
|
assert_equal(false, @thing.permit?(@owner, :read))
|
@@ -149,29 +149,29 @@ class ThingTest < Test::Unit::TestCase
|
|
149
149
|
@owner.update_attribute(:role, @god)
|
150
150
|
assert_equal(true, Thing.permit?(@owner, :read))
|
151
151
|
end
|
152
|
-
|
152
|
+
|
153
153
|
def test_aliased_filter_many_method
|
154
154
|
make_second_thing
|
155
155
|
@owner.update_attribute(:role, @demigod)
|
156
156
|
assert_equal(Thing.order('id'), Thing.permitted(@owner, :read).order('id'))
|
157
|
-
|
157
|
+
assert_raises ActiveRecord::RecordNotFound do
|
158
158
|
Thing.permitted(@user, :read).order('id')
|
159
159
|
end
|
160
160
|
assert_equal([@thing], Thing.permitted(@owner, :delete))
|
161
|
-
|
161
|
+
assert_raises ActiveRecord::RecordNotFound do
|
162
162
|
Thing.permitted(@user, :delete)
|
163
163
|
end
|
164
164
|
end
|
165
|
-
|
165
|
+
|
166
166
|
def make_second_thing
|
167
167
|
@user = User.create(:name => 'Clive')
|
168
168
|
@other_thing = Thing.create(:name => 'Debris', :owner => @user)
|
169
169
|
end
|
170
|
-
|
170
|
+
|
171
171
|
def teardown
|
172
172
|
Role.delete_all
|
173
173
|
User.delete_all
|
174
174
|
Thing.delete_all
|
175
175
|
end
|
176
|
-
|
176
|
+
|
177
177
|
end
|
data/test/units/user_test.rb
CHANGED
@@ -3,7 +3,7 @@ require 'user'
|
|
3
3
|
require 'work_process'
|
4
4
|
require 'work_process_permission'
|
5
5
|
|
6
|
-
class WorkProcessTest < Test
|
6
|
+
class WorkProcessTest < Minitest::Test
|
7
7
|
|
8
8
|
def teardown
|
9
9
|
User.delete_all
|
@@ -49,7 +49,7 @@ class WorkProcessTest < Test::Unit::TestCase
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def test_indulgence_when_not_permitted
|
52
|
-
|
52
|
+
assert_raises ActiveRecord::RecordNotFound do
|
53
53
|
WorkProcess.indulgence(user, :update, :beginning)
|
54
54
|
end
|
55
55
|
end
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: indulgence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob Nichols
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: sqlite3
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: standalone_migrations
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 2.1.1
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.1.1
|
55
55
|
description: Packages permission functionality into a set of permission objects.
|
@@ -104,43 +104,43 @@ require_paths:
|
|
104
104
|
- lib
|
105
105
|
required_ruby_version: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
|
-
- -
|
107
|
+
- - ">="
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
111
|
requirements:
|
112
|
-
- -
|
112
|
+
- - ">="
|
113
113
|
- !ruby/object:Gem::Version
|
114
114
|
version: '0'
|
115
115
|
requirements: []
|
116
116
|
rubyforge_project:
|
117
|
-
rubygems_version: 2.
|
117
|
+
rubygems_version: 2.6.14
|
118
118
|
signing_key:
|
119
119
|
specification_version: 4
|
120
120
|
summary: Yet another permissions gem
|
121
121
|
test_files:
|
122
|
-
- test/
|
122
|
+
- test/db/migrate/20141008101147_create_work_processes.rb
|
123
|
+
- test/db/migrate/20130408085511_create_users.rb
|
124
|
+
- test/db/migrate/20130408103015_create_roles.rb
|
125
|
+
- test/db/migrate/20130408132217_create_things.rb
|
126
|
+
- test/db/test.sqlite3.db
|
127
|
+
- test/db/schema.rb
|
128
|
+
- test/db/config.yml
|
129
|
+
- test/units/user_test.rb
|
130
|
+
- test/units/work_process_test.rb
|
131
|
+
- test/units/thing_test.rb
|
132
|
+
- test/units/indulgence/ability_tests/with_lambdas.rb
|
133
|
+
- test/units/indulgence/ability_tests/method_only.rb
|
123
134
|
- test/units/indulgence/permission_test.rb
|
124
135
|
- test/units/indulgence/ability_test.rb
|
125
|
-
- test/units/indulgence/ability_tests/method_only.rb
|
126
|
-
- test/units/indulgence/ability_tests/with_lambdas.rb
|
127
|
-
- test/units/user_test.rb
|
128
136
|
- test/units/role_permission_test.rb
|
129
|
-
- test/units/work_process_test.rb
|
130
137
|
- test/units/thing_permission_test.rb
|
131
|
-
- test/units/
|
132
|
-
- test/lib/role.rb
|
133
|
-
- test/lib/work_process.rb
|
134
|
-
- test/lib/user.rb
|
138
|
+
- test/units/role_test.rb
|
135
139
|
- test/lib/thing.rb
|
136
|
-
- test/lib/thing_permission.rb
|
137
|
-
- test/lib/work_process_permission.rb
|
138
140
|
- test/lib/role_permission.rb
|
139
|
-
- test/
|
140
|
-
- test/
|
141
|
-
- test/
|
142
|
-
- test/
|
143
|
-
- test/
|
144
|
-
- test/db/test.sqlite3.db
|
145
|
-
- test/db/schema.rb
|
141
|
+
- test/lib/work_process_permission.rb
|
142
|
+
- test/lib/user.rb
|
143
|
+
- test/lib/role.rb
|
144
|
+
- test/lib/thing_permission.rb
|
145
|
+
- test/lib/work_process.rb
|
146
146
|
- test/test_helper.rb
|