activity_permission_engine 0.0.1

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