activity_permission_engine 0.0.1

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 (33) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +167 -0
  6. data/Rakefile +6 -0
  7. data/activity_permission_engine.gemspec +25 -0
  8. data/lib/activity_permission_engine.rb +47 -0
  9. data/lib/activity_permission_engine/activities_registry.rb +20 -0
  10. data/lib/activity_permission_engine/activity_permissions_registry.rb +59 -0
  11. data/lib/activity_permission_engine/adapters/activity_permissions_registry/memory.rb +39 -0
  12. data/lib/activity_permission_engine/allow_activity.rb +38 -0
  13. data/lib/activity_permission_engine/check_authorization.rb +47 -0
  14. data/lib/activity_permission_engine/disallow_activity.rb +38 -0
  15. data/lib/activity_permission_engine/framework/request.rb +16 -0
  16. data/lib/activity_permission_engine/interface_helpers.rb +31 -0
  17. data/lib/activity_permission_engine/list_activities.rb +27 -0
  18. data/lib/activity_permission_engine/list_activities_permissions.rb +28 -0
  19. data/lib/activity_permission_engine/register_activity.rb +38 -0
  20. data/lib/activity_permission_engine/test_helpers/activity_permissions_registry_test.rb +31 -0
  21. data/lib/activity_permission_engine/unregister_activity.rb +38 -0
  22. data/lib/activity_permission_engine/version.rb +3 -0
  23. data/test/adapters/activities_registry/memory_test.rb +68 -0
  24. data/test/functionnals/activity_permission_engine_test.rb +74 -0
  25. data/test/interface_specifications/allow_activity_test.rb +35 -0
  26. data/test/interface_specifications/check_authorization_test.rb +47 -0
  27. data/test/interface_specifications/disallow_activity_test.rb +33 -0
  28. data/test/interface_specifications/list_activities_permissions_test.rb +26 -0
  29. data/test/interface_specifications/list_activities_test.rb +24 -0
  30. data/test/interface_specifications/register_activity_test.rb +39 -0
  31. data/test/interface_specifications/unregister_activity_test.rb +42 -0
  32. data/test/test_helper.rb +8 -0
  33. metadata +143 -0
@@ -0,0 +1,35 @@
1
+ require_relative '../test_helper'
2
+
3
+ module ActivityPermissionEngine
4
+ describe 'ActivityPermissionEngine.allow_activity(activity_ref, role_ref)' do
5
+ let(:succeed) { true }
6
+ let(:activity_ref) { 'foo' }
7
+ let(:role_ref) { 'bar' }
8
+ let(:activity_permissions_registry) { Minitest::Mock.new.expect(:add_role, succeed, [activity_ref, role_ref]) }
9
+
10
+ before(:each) do
11
+ ActivityPermissionEngine.configuration.activity_permissions_registry = activity_permissions_registry
12
+ end
13
+
14
+ subject { ActivityPermissionEngine.allow_activity(activity_ref, role_ref) }
15
+
16
+ it 'returns AllowActivity::Response' do
17
+ subject.must_be_kind_of AllowActivity::Response
18
+ end
19
+
20
+ describe 'when succeed' do
21
+ describe 'AllowActivity::Response#success?' do
22
+ it 'returns true' do
23
+ subject.success?.must_equal true
24
+ end
25
+ end
26
+ end
27
+
28
+ describe 'AllowActivity::Request#new(activity_ref, role_ref)' do
29
+ it 'require activity_ref, role_ref as string' do
30
+ -> { AllowActivity::Request.new('') }.must_raise ArgumentError
31
+ end
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,47 @@
1
+ require_relative '../test_helper'
2
+
3
+ module ActivityPermissionEngine
4
+ describe 'ActivityPermissionEngine.check_authorization(check_authorization_request)' do
5
+ let(:activity_ref) { 'activity_ref' }
6
+ let(:user_role_refs) { ['baz','buzz'] }
7
+ let(:role_refs) { ['foo', 'bar'] }
8
+ let(:activity_permissions_registry) { Minitest::Mock.new.expect(:find_by_activity_ref, activity, [activity_ref]) }
9
+ let(:activity) { Minitest::Mock.new }
10
+
11
+ before(:each) do
12
+ activity.expect(:activity_ref, activity_ref)
13
+ activity.expect(:role_refs, role_refs)
14
+ ActivityPermissionEngine.configuration.activity_permissions_registry = activity_permissions_registry
15
+ end
16
+
17
+ subject { ActivityPermissionEngine.check_authorization(activity_ref, user_role_refs) }
18
+
19
+ it 'return CheckAuthorization::Response' do
20
+ subject.must_be_kind_of CheckAuthorization::Response
21
+ end
22
+
23
+ describe 'CheckAuthorization::Response#authorized?' do
24
+ it 'returns false' do
25
+ subject.authorized?.must_equal false
26
+ end
27
+ end
28
+
29
+ describe 'when activity is permitted to role' do
30
+ let(:user_role_refs) { ['foo','baz'] }
31
+
32
+ describe 'CheckAuthorization::Response#authorized?' do
33
+ it 'returns true' do
34
+ subject.authorized?.must_equal true
35
+ end
36
+ end
37
+ end
38
+
39
+ describe 'it require a CheckAuthorization::Request as parameter' do
40
+ describe 'CheckAuthorization::Request.new(activity_ref,role_refs)' do
41
+ it 'require an activity_ref string and role_refs array' do
42
+ lambda { CheckAuthorization::Request.new('') }.must_raise ArgumentError
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,33 @@
1
+ require_relative '../test_helper'
2
+
3
+ module ActivityPermissionEngine
4
+ describe 'ActivityPermissionEngine.disallow_activity(disallow_activity_request)' do
5
+ let(:activity_ref) { 'activity_ref' }
6
+ let(:role_ref) { 'role_ref' }
7
+ let(:activity_permissions_registry) { Minitest::Mock.new.expect(:remove_role, true, [activity_ref, role_ref]) }
8
+
9
+ subject { ActivityPermissionEngine.disallow_activity(activity_ref, role_ref) }
10
+
11
+ before(:each) do
12
+ ActivityPermissionEngine.configuration.activity_permissions_registry = activity_permissions_registry
13
+ end
14
+
15
+ it 'returns DisallowActivity::Response' do
16
+ subject.must_be_kind_of DisallowActivity::Response
17
+ end
18
+
19
+ describe 'when succeed' do
20
+ describe 'DisallowActivity::Response#success?' do
21
+ it 'returns true' do
22
+ subject.success?.must_equal true
23
+ end
24
+ end
25
+ end
26
+
27
+ describe 'DisallowActivity::Request#new(activity_ref, role_ref)' do
28
+ it 'require an activity_ref and role string' do
29
+ -> { DisallowActivity::Request.new('') }.must_raise ArgumentError
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,26 @@
1
+ require_relative '../test_helper'
2
+
3
+ module ActivityPermissionEngine
4
+ describe 'ActivityPermissionEngine.list_activities_permissions' do
5
+ let(:activity_refs) { ['foo', 'bar'] }
6
+ let(:registry) { Minitest::Mock.new }
7
+ subject { ActivityPermissionEngine.list_activities_permissions }
8
+
9
+ before(:each) do
10
+ registry.expect(:all, [])
11
+ ActivityPermissionEngine.configuration = Configuration.new(activity_permissions_registry: registry)
12
+ end
13
+
14
+ it 'returns ListActivities::Response' do
15
+ subject.must_be_kind_of ListActivitiesPermissions::Response
16
+ end
17
+
18
+ describe 'ListActivities::Response#activities_permissions' do
19
+ subject { ActivityPermissionEngine.list_activities_permissions.activities_permissions }
20
+ it 'returns Array()' do
21
+ subject.must_be_kind_of Array
22
+ end
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,24 @@
1
+ require_relative '../test_helper'
2
+
3
+ module ActivityPermissionEngine
4
+ describe 'ActivityPermissionEngine.list_activities' do
5
+ let(:activity_refs) { ['foo', 'bar'] }
6
+ subject { ActivityPermissionEngine.list_activities }
7
+
8
+ before(:each) do
9
+ ActivityPermissionEngine.configuration = Configuration.new(activities: activity_refs)
10
+ end
11
+
12
+ it 'returns ListActivities::Response' do
13
+ subject.must_be_kind_of ListActivities::Response
14
+ end
15
+
16
+ describe 'ListActivities::Response#activity_refs' do
17
+ subject { ActivityPermissionEngine.list_activities.activity_refs }
18
+ it 'returns Array(activity_ref)' do
19
+ subject.must_equal activity_refs
20
+ end
21
+ end
22
+ end
23
+ end
24
+
@@ -0,0 +1,39 @@
1
+ require_relative '../test_helper'
2
+
3
+ module ActivityPermissionEngine
4
+ describe 'ActivityPermissionEngine.register_activity(activity_ref)' do
5
+ let(:activity_ref) { 'activity_ref' }
6
+ let(:succeed) { true }
7
+
8
+ subject { ActivityPermissionEngine.register_activity(activity_ref) }
9
+
10
+ it 'returns RegisterActivity::Response' do
11
+ subject.must_be_kind_of RegisterActivity::Response
12
+ end
13
+
14
+ describe 'when registration succeed' do
15
+ describe 'RegisterActivity::Response#success?' do
16
+ it 'returns true' do
17
+ subject.success?.must_equal true
18
+ end
19
+ end
20
+ end
21
+
22
+ describe 'when registration fail' do
23
+ describe 'RegisterActivity::Response#success?' do
24
+ it 'returns false' do
25
+ activities_registry = Minitest::Mock.new.expect(:add, false, ['activity_ref'])
26
+ ActivityPermissionEngine.configuration.stub(:activities_registry, activities_registry) do
27
+ subject.success?.must_equal false
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ describe 'RegisterActivity::Request#new(activity_ref)' do
35
+ it 'require activity_ref string as parameter' do
36
+ -> {RegisterActivity::Request.new}.must_raise ArgumentError
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../test_helper'
2
+
3
+ module ActivityPermissionEngine
4
+ describe 'ActivityPermissionEngine.unregister_activity(activity_ref)' do
5
+ let(:activity_ref) { 'foo' }
6
+ let(:succeed) { true }
7
+ let(:activity_permissions_registry) { Minitest::Mock.new.expect(:del, succeed, [activity_ref]) }
8
+
9
+ subject { ActivityPermissionEngine.unregister_activity(activity_ref) }
10
+
11
+ before(:each) do
12
+ ActivityPermissionEngine.configuration.activity_permissions_registry = activity_permissions_registry
13
+ end
14
+
15
+ it 'returns UnregisterActivity::Response' do
16
+ subject.must_be_kind_of UnregisterActivity::Response
17
+ end
18
+
19
+ describe 'when succeed' do
20
+ describe 'UnregisterActivity::Response#success?' do
21
+ it 'returns true' do
22
+ subject.success?.must_equal true
23
+ end
24
+ end
25
+ end
26
+
27
+ describe 'when fail' do
28
+ let(:succeed) { false }
29
+ describe 'UnregisterActivity::Response#success?' do
30
+ it 'returns false' do
31
+ subject.success?.must_equal false
32
+ end
33
+ end
34
+ end
35
+
36
+ describe 'UnregisterActivity::Request#new(activity_ref)' do
37
+ it 'require activity_ref string as parameter' do
38
+ -> { UnregisterActivity::Request.new }.must_raise ArgumentError
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,8 @@
1
+ require 'simplecov'
2
+
3
+ SimpleCov.start do
4
+ root(File.expand_path('../../', __FILE__))
5
+ add_filter '/test/'
6
+ end
7
+ require 'minitest/autorun'
8
+ require_relative '../lib/activity_permission_engine'
metadata ADDED
@@ -0,0 +1,143 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: activity_permission_engine
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Cedric Brancourt
8
+ - Synbioz
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2016-03-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.7'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.7'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '10.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '10.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: minitest
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '5.8'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '5.8'
56
+ - !ruby/object:Gem::Dependency
57
+ name: simplecov
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.11'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.11'
70
+ description: Allow you to map roles to activities and to check for allowance
71
+ email:
72
+ - cedric.brancourt@gmail.com
73
+ - opensource@synbioz.com
74
+ executables: []
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - ".gitignore"
79
+ - Gemfile
80
+ - LICENSE.txt
81
+ - README.md
82
+ - Rakefile
83
+ - activity_permission_engine.gemspec
84
+ - lib/activity_permission_engine.rb
85
+ - lib/activity_permission_engine/activities_registry.rb
86
+ - lib/activity_permission_engine/activity_permissions_registry.rb
87
+ - lib/activity_permission_engine/adapters/activity_permissions_registry/memory.rb
88
+ - lib/activity_permission_engine/allow_activity.rb
89
+ - lib/activity_permission_engine/check_authorization.rb
90
+ - lib/activity_permission_engine/disallow_activity.rb
91
+ - lib/activity_permission_engine/framework/request.rb
92
+ - lib/activity_permission_engine/interface_helpers.rb
93
+ - lib/activity_permission_engine/list_activities.rb
94
+ - lib/activity_permission_engine/list_activities_permissions.rb
95
+ - lib/activity_permission_engine/register_activity.rb
96
+ - lib/activity_permission_engine/test_helpers/activity_permissions_registry_test.rb
97
+ - lib/activity_permission_engine/unregister_activity.rb
98
+ - lib/activity_permission_engine/version.rb
99
+ - test/adapters/activities_registry/memory_test.rb
100
+ - test/functionnals/activity_permission_engine_test.rb
101
+ - test/interface_specifications/allow_activity_test.rb
102
+ - test/interface_specifications/check_authorization_test.rb
103
+ - test/interface_specifications/disallow_activity_test.rb
104
+ - test/interface_specifications/list_activities_permissions_test.rb
105
+ - test/interface_specifications/list_activities_test.rb
106
+ - test/interface_specifications/register_activity_test.rb
107
+ - test/interface_specifications/unregister_activity_test.rb
108
+ - test/test_helper.rb
109
+ homepage: https://github.com/synbioz/activity_permission_engine
110
+ licenses:
111
+ - MIT
112
+ metadata: {}
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project:
129
+ rubygems_version: 2.4.5.1
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: Simple library to manage permissions
133
+ test_files:
134
+ - test/adapters/activities_registry/memory_test.rb
135
+ - test/functionnals/activity_permission_engine_test.rb
136
+ - test/interface_specifications/allow_activity_test.rb
137
+ - test/interface_specifications/check_authorization_test.rb
138
+ - test/interface_specifications/disallow_activity_test.rb
139
+ - test/interface_specifications/list_activities_permissions_test.rb
140
+ - test/interface_specifications/list_activities_test.rb
141
+ - test/interface_specifications/register_activity_test.rb
142
+ - test/interface_specifications/unregister_activity_test.rb
143
+ - test/test_helper.rb