arpa 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +2 -8
  4. data/arpa.gemspec +9 -9
  5. data/lib/arpa.rb +0 -1
  6. data/lib/arpa/additions/resource.rb +4 -10
  7. data/lib/arpa/repositories/actions/finder.rb +9 -10
  8. data/lib/arpa/services/verifier.rb +2 -8
  9. data/lib/arpa/version.rb +1 -1
  10. data/spec/lib/{ar → arpa}/additions/resource_spec.rb +0 -0
  11. data/spec/lib/{ar → arpa}/data_mappers/action_mapper_spec.rb +0 -0
  12. data/spec/lib/{ar → arpa}/data_mappers/base_spec.rb +0 -0
  13. data/spec/lib/{ar → arpa}/data_mappers/profile_mapper_spec.rb +0 -0
  14. data/spec/lib/{ar → arpa}/data_mappers/resource_mapper_spec.rb +0 -0
  15. data/spec/lib/{ar → arpa}/data_mappers/role_mapper_spec.rb +0 -0
  16. data/spec/lib/{ar → arpa}/entities/action_spec.rb +0 -0
  17. data/spec/lib/{ar → arpa}/entities/profile_spec.rb +0 -0
  18. data/spec/lib/{ar → arpa}/entities/resource_spec.rb +0 -0
  19. data/spec/lib/{ar → arpa}/entities/role_spec.rb +0 -0
  20. data/spec/lib/arpa/repositories/actions/finder_spec.rb +81 -0
  21. data/spec/lib/{ar → arpa}/repositories/base_spec.rb +0 -0
  22. data/spec/lib/{ar → arpa}/repositories/profiles/finder_spec.rb +0 -0
  23. data/spec/lib/{ar → arpa}/repositories/profiles/remover_spec.rb +0 -0
  24. data/spec/lib/{ar → arpa}/repositories/resources/finder_spec.rb +0 -0
  25. data/spec/lib/{ar → arpa}/repositories/resources/remover_spec.rb +0 -0
  26. data/spec/lib/{ar → arpa}/repositories/roles/finder_spec.rb +0 -0
  27. data/spec/lib/{ar → arpa}/repositories/roles/remover_spec.rb +0 -0
  28. data/spec/lib/{ar → arpa}/requests/profiles/create_request_spec.rb +0 -0
  29. data/spec/lib/{ar → arpa}/requests/profiles/remove_request_spec.rb +0 -0
  30. data/spec/lib/{ar → arpa}/requests/resources/create_request_spec.rb +0 -0
  31. data/spec/lib/{ar → arpa}/requests/roles/create_request_spec.rb +0 -0
  32. data/spec/lib/{ar → arpa}/requests/roles/remove_request_spec.rb +0 -0
  33. data/spec/lib/{ar → arpa}/requests/roles/update_request_spec.rb +0 -0
  34. data/spec/lib/{ar → arpa}/services/actions/create/action_creator_spec.rb +0 -0
  35. data/spec/lib/{ar → arpa}/services/actions/remove/action_remover_spec.rb +0 -0
  36. data/spec/lib/{ar → arpa}/services/base_spec.rb +0 -0
  37. data/spec/lib/{ar → arpa}/services/profiles/create/profile_creator_spec.rb +0 -0
  38. data/spec/lib/{ar → arpa}/services/profiles/profile_manager_creator_spec.rb +0 -0
  39. data/spec/lib/{ar → arpa}/services/profiles/profile_manager_remover_spec.rb +0 -0
  40. data/spec/lib/{ar → arpa}/services/profiles/profile_manager_updater_spec.rb +0 -0
  41. data/spec/lib/{ar → arpa}/services/profiles/remove/profile_remover_spec.rb +0 -0
  42. data/spec/lib/{ar → arpa}/services/profiles/update/profile_updater_spec.rb +0 -0
  43. data/spec/lib/{ar → arpa}/services/resources/create/resource_creator_spec.rb +0 -0
  44. data/spec/lib/{ar → arpa}/services/resources/remove/resource_remover_spec.rb +0 -0
  45. data/spec/lib/{ar → arpa}/services/resources/resource_manager_creator_spec.rb +0 -0
  46. data/spec/lib/{ar → arpa}/services/roles/create/role_creator_spec.rb +0 -0
  47. data/spec/lib/{ar → arpa}/services/roles/remove/role_remover_spec.rb +0 -0
  48. data/spec/lib/{ar → arpa}/services/roles/role_manager_creator_spec.rb +0 -0
  49. data/spec/lib/{ar → arpa}/services/roles/role_manager_remover_spec.rb +0 -0
  50. data/spec/lib/{ar → arpa}/services/roles/role_manager_updater_spec.rb +0 -0
  51. data/spec/lib/{ar → arpa}/services/roles/update/role_updater_spec.rb +0 -0
  52. data/spec/lib/{ar → arpa}/services/verifier_spec.rb +4 -20
  53. data/spec/lib/{ar → arpa}/validators/action_validator_spec.rb +0 -0
  54. data/spec/lib/{ar → arpa}/validators/profile_validator_spec.rb +0 -0
  55. data/spec/lib/{ar → arpa}/validators/resource_validator_spec.rb +0 -0
  56. data/spec/lib/{ar → arpa}/validators/role_validator_spec.rb +0 -0
  57. metadata +121 -105
  58. data/lib/arpa/entities/permissions.rb +0 -33
  59. data/spec/lib/ar/entities/permissions_spec.rb +0 -74
  60. data/spec/lib/ar/repositories/actions/finder_spec.rb +0 -58
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ac4029644c373b6a7478a913a4e165eca5145ef
4
- data.tar.gz: f4f47a1444f7cf74d61b09579816bafead29e91c
3
+ metadata.gz: e186a7ffa777711f8abe3a488b43f3da45e74d69
4
+ data.tar.gz: fb3ac71b712d8a6d31b67f8242a7257cacbb4c82
5
5
  SHA512:
6
- metadata.gz: a6f282c6b5d8fff2b6ef47c6a16bcfb18ba7f53648de5119ceb06c35ed7baeeabfdfdc57c454fcaa6bc8457a199fc6dc047f8af3da41a0874760342907cea8c3
7
- data.tar.gz: 0a3e5b3c15a7199bcda8a0188312b548cc8ceec87521e1ee28e8d39f2ff43f1e4a2d88b5b948b80fb1a47d2791ac0ae029deb3c3c7ae8456bcf221104f5c509a
6
+ metadata.gz: 66b5b16cab66695d654fc2f4dff9ed97b2e780107658e7b86ba4905928af10a02316305d13e5a69803be42d980980e7335d498456304ef2081f8af6b2f1a4c27
7
+ data.tar.gz: aa5a31742a16330891c12017b61acfe6d72af273db195ec06ce651b7ec7a0c6ece5e5f106731c8080498fc08365efbd2edce25b6261cb16d993dac3266a79225
data/CHANGELOG.md ADDED
@@ -0,0 +1,6 @@
1
+ ### 0.0.9
2
+
3
+ * removals
4
+ * Change the necessity to use `session` for `Arpa::Additions::Resource`.
5
+ * Change the necessity to pass `session` as parameter on initialize for `Arpa::Services::Verifier`.
6
+ * Remove from `session` to store all user permissions.
data/README.md CHANGED
@@ -105,13 +105,8 @@ To verify if a user has access to some :controler and :action, use the following
105
105
  has_access?('users', 'index')
106
106
  ```
107
107
 
108
- To reset the session permissions created by Arpa, use the following helper:
109
108
 
110
- ```ruby
111
- reset_permissions
112
- ```
113
-
114
- **Obs.:** To that helper method works. You must have **:session** (In Rails app already has) and **:current_user** attribute or method.
109
+ **Obs.:** To that helper method works. You must have **:current_user** attribute or method.
115
110
 
116
111
  ---
117
112
  If you want use that methods inside another object you should use the **Arpa::Services::Verifier** class;
@@ -119,9 +114,8 @@ If you want use that methods inside another object you should use the **Arpa::Se
119
114
  You just need pass as arguments the :session and :current_user:
120
115
 
121
116
  ```ruby
122
- verifier = Arpa::Services::Verifier.new(session, current_user)
117
+ verifier = Arpa::Services::Verifier.new(current_user)
123
118
  verifier.has_access?('users', 'index')
124
- verifier.reset_permissions
125
119
  ```
126
120
 
127
121
  ### Controller Filter
data/arpa.gemspec CHANGED
@@ -18,15 +18,15 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.7"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "rspec", "~> 3.3.0"
24
- spec.add_development_dependency "factory_girl"
25
- spec.add_development_dependency "sqlite3", "~> 1.3.3"
26
- spec.add_development_dependency "database_cleaner"
27
- spec.add_development_dependency "pry"
21
+ spec.add_development_dependency 'bundler', '~> 1.7'
22
+ spec.add_development_dependency 'rake', '~> 10.0'
23
+ spec.add_development_dependency 'rspec', '~> 3.3', '>= 3.3.0'
24
+ spec.add_development_dependency 'factory_girl', '~> 0'
25
+ spec.add_development_dependency 'sqlite3', '~> 1.3', '>= 1.3.3'
26
+ spec.add_development_dependency 'database_cleaner', '~> 0'
27
+ spec.add_development_dependency 'pry', '~> 0'
28
28
 
29
- spec.add_dependency "activerecord", ">= 4.2.0"
30
- spec.add_dependency "railties", ">= 4.2.0", "< 5"
29
+ spec.add_dependency 'activerecord', '~> 4.2', '>= 4.2.0'
30
+ spec.add_dependency 'railties', '>= 4.2.0', '< 5'
31
31
 
32
32
  end
data/lib/arpa.rb CHANGED
@@ -12,7 +12,6 @@ require "arpa/entities/resource"
12
12
  require "arpa/entities/action"
13
13
  require "arpa/entities/role"
14
14
  require "arpa/entities/profile"
15
- require "arpa/entities/permissions"
16
15
 
17
16
  # Mappers
18
17
  require "arpa/data_mappers/base"
@@ -7,26 +7,20 @@ module Arpa
7
7
  end
8
8
 
9
9
  def has_access?(resource, action)
10
- return unless has_session_or_current_user?
10
+ return unless has_current_user?
11
11
  verifier.has_access?(resource, action)
12
12
  end
13
13
 
14
- def reset_permissions
15
- verifier.reset_permissions
16
- end
17
-
18
14
  def verifier
19
- @verifier ||= Arpa::Services::Verifier.new(session, current_user)
15
+ @verifier ||= Arpa::Services::Verifier.new(current_user)
20
16
  end
21
17
 
22
18
  private
23
19
 
24
- def has_session_or_current_user?
25
- verified_session = try(:session)
20
+ def has_current_user?
26
21
  verified_current_user = try(:current_user)
27
- return true if verified_session && verified_current_user
22
+ return true if verified_current_user
28
23
  log = Logger.new(STDOUT)
29
- log.warn("The ApplicationController must has a attribute or method 'session'") unless verified_session
30
24
  log.warn("The ApplicationController must has a attribute or method 'current_user'") unless verified_current_user
31
25
  false
32
26
  end
@@ -5,19 +5,18 @@ module Arpa
5
5
  include Arpa::Repositories::Base
6
6
 
7
7
  def by_name_and_resource(name, resource_id)
8
- record = repository_class.where(name: name, repository_resource_id: resource_id).first
8
+ record = repository_class.find_by(name: name, repository_resource_id: resource_id)
9
9
  mapper_instance.map_to_entity(record) if record
10
10
  end
11
11
 
12
- def permissions(profile_ids)
13
- records = repository_class.joins(roles: :profiles)
14
- .where(repository_profiles: {id: profile_ids})
15
-
16
- actions = records.collect do |action|
17
- mapper_instance.map_to_entity(action)
18
- end
19
-
20
- Arpa::Entities::Permissions.new(actions)
12
+ def permission(resource_name, action_name, profile_ids)
13
+ record = repository_class
14
+ .distinct(true)
15
+ .joins(:resource, roles: :profiles)
16
+ .find_by(repository_profiles: {id: profile_ids},
17
+ repository_resources: {name: resource_name},
18
+ name: action_name)
19
+ mapper_instance.map_to_entity(record) if record
21
20
  end
22
21
 
23
22
  def mapper_instance
@@ -2,20 +2,14 @@ module Arpa
2
2
  module Services
3
3
  class Verifier
4
4
 
5
- def initialize(session, current_user)
6
- @session = session
5
+ def initialize(current_user)
7
6
  @current_user = current_user
8
7
  end
9
8
 
10
9
  def has_access?(resource, action)
11
10
  free_access_action = action.to_s.split('_')[0]
12
11
  return true if @current_user.is_arpa_admin? || free_access_action.empty?
13
- @session[:entity_permissions] ||= action_finder.permissions(@current_user.profile_ids)
14
- @session[:entity_permissions].has_permission?(resource.to_s, action.to_s)
15
- end
16
-
17
- def reset_permissions
18
- @session[:entity_permissions] = nil
12
+ action_finder.permission(resource.to_s, action.to_s, @current_user.profile_ids)
19
13
  end
20
14
 
21
15
  private
data/lib/arpa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Arpa
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+
3
+ describe Arpa::Repositories::Actions::Finder, type: :repository, slow: true do
4
+
5
+ let(:resource_record) { create :repository_resource, :user }
6
+ let(:action_record_001) { create :repository_action, :index, resource: resource_record }
7
+ let(:action_record_002) { create :repository_action, :show, resource: resource_record}
8
+
9
+ before do
10
+ action_record_001
11
+ action_record_002
12
+ end
13
+
14
+ describe '#by_name_and_resource' do
15
+
16
+ context 'when exist with the params' do
17
+
18
+ let(:result) { subject.by_name_and_resource('index', resource_record) }
19
+
20
+ it 'should return a resource with name "index"' do
21
+ expect(result.name).to eql 'index'
22
+ end
23
+
24
+ it 'the result should be an instance of Arpa::Entities::Action' do
25
+ expect(result).to be_an Arpa::Entities::Action
26
+ end
27
+ end
28
+
29
+ context 'when nonexist with the params' do
30
+
31
+ let(:result) { subject.by_name_and_resource('nonexist_action', resource_record) }
32
+
33
+ it 'the result should return nil' do
34
+ expect(result).to be_nil
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ describe 'getting permission from action_name, resource_name and profile_ids' do
41
+ let(:resource_name) { '' }
42
+ let(:action_name) { '' }
43
+ let(:profile_ids) { [] }
44
+
45
+ let(:result) { subject.permission(resource_name, action_name, profile_ids) }
46
+
47
+ before { result }
48
+
49
+ context 'when action and resource belongs to some profile' do
50
+ let(:user_resource) { create :repository_resource, :user }
51
+ let(:index_action) { create :repository_action, :index, resource: user_resource }
52
+ let(:show_action) { create :repository_action, :show, resource: user_resource }
53
+
54
+ let(:user_resource_001) { create :repository_resource, :contact }
55
+ let(:index_action_001) { create :repository_action, :index, resource: user_resource }
56
+
57
+ let(:role_001) { create :repository_role, actions: [index_action] }
58
+ let(:role_002) { create :repository_role, actions: [index_action] }
59
+ let(:role_003) { create :repository_role, actions: [index_action_001] }
60
+
61
+ let(:profile_001) { create :repository_profile, roles: [role_001, role_002] }
62
+ let(:profile_002) { create :repository_profile, roles: [role_001, role_003] }
63
+
64
+ let(:resource_name) { 'users' }
65
+ let(:action_name) { 'index' }
66
+ let(:profile_ids) { [profile_001.id, profile_002.id] }
67
+
68
+ it 'should return some permission' do
69
+ expect(result).to be_an Arpa::Entities::Action
70
+ end
71
+ end
72
+
73
+ context 'when action and resource not belogns to any profile' do
74
+
75
+ it 'should not return any permission' do
76
+ expect(result).to be_nil
77
+ end
78
+ end
79
+ end
80
+
81
+ end
File without changes
File without changes
@@ -1,20 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Arpa::Services::Verifier do
4
- let(:session) { {} }
5
4
  let(:current_user) { double is_arpa_admin?: false, profile_ids: [1,2,3] }
6
5
 
7
- subject(:verifier) { Arpa::Services::Verifier.new(session, current_user) }
8
-
9
- describe 'cleaning session of permissions' do
10
- let(:session) { {entity_permissions: [ {'resource': 'users', 'action': 'index'} ] } }
11
-
12
- before { verifier.reset_permissions }
13
-
14
- it 'session[:entity_permissions] should be set to nil' do
15
- expect(session[:entity_permissions]).to be_nil
16
- end
17
- end
6
+ subject(:verifier) { Arpa::Services::Verifier.new(current_user) }
18
7
 
19
8
  describe '#has_access?' do
20
9
 
@@ -35,12 +24,11 @@ describe Arpa::Services::Verifier do
35
24
  context 'when pass a non free action' do
36
25
  let(:action_finder_class) { Arpa::Repositories::Actions::Finder }
37
26
  let(:action_finder) { instance_double action_finder_class }
38
- let(:entity_permissions) { double }
27
+ let(:action) { double }
39
28
 
40
29
  before do
41
30
  allow(action_finder_class).to receive(:new).and_return(action_finder)
42
- allow(action_finder).to receive(:permissions).with([1,2,3]).and_return(entity_permissions)
43
- allow(entity_permissions).to receive(:has_permission?).with('users', 'index')
31
+ allow(action_finder).to receive(:permission).and_return(action)
44
32
 
45
33
  subject.has_access?('users', 'index')
46
34
  end
@@ -50,11 +38,7 @@ describe Arpa::Services::Verifier do
50
38
  end
51
39
 
52
40
  it 'should be called :permissions from Arpa::Repositories::Actions::Finder' do
53
- expect(action_finder).to have_received(:permissions).with([1,2,3]).once
54
- end
55
-
56
- it 'should be called :has_permission? from session[:entity_permissions]' do
57
- expect(entity_permissions).to have_received(:has_permission?).with('users', 'index').once
41
+ expect(action_finder).to have_received(:permission).with('users', 'index', [1,2,3]).once
58
42
  end
59
43
 
60
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arpa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rachid Calazans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-21 00:00:00.000000000 Z
11
+ date: 2016-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -43,6 +43,9 @@ dependencies:
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.3'
48
+ - - ">="
46
49
  - !ruby/object:Gem::Version
47
50
  version: 3.3.0
48
51
  type: :development
@@ -50,20 +53,23 @@ dependencies:
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
55
  - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '3.3'
58
+ - - ">="
53
59
  - !ruby/object:Gem::Version
54
60
  version: 3.3.0
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: factory_girl
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ">="
65
+ - - "~>"
60
66
  - !ruby/object:Gem::Version
61
67
  version: '0'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
- - - ">="
72
+ - - "~>"
67
73
  - !ruby/object:Gem::Version
68
74
  version: '0'
69
75
  - !ruby/object:Gem::Dependency
@@ -71,6 +77,9 @@ dependencies:
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.3'
82
+ - - ">="
74
83
  - !ruby/object:Gem::Version
75
84
  version: 1.3.3
76
85
  type: :development
@@ -78,40 +87,46 @@ dependencies:
78
87
  version_requirements: !ruby/object:Gem::Requirement
79
88
  requirements:
80
89
  - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '1.3'
92
+ - - ">="
81
93
  - !ruby/object:Gem::Version
82
94
  version: 1.3.3
83
95
  - !ruby/object:Gem::Dependency
84
96
  name: database_cleaner
85
97
  requirement: !ruby/object:Gem::Requirement
86
98
  requirements:
87
- - - ">="
99
+ - - "~>"
88
100
  - !ruby/object:Gem::Version
89
101
  version: '0'
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
93
105
  requirements:
94
- - - ">="
106
+ - - "~>"
95
107
  - !ruby/object:Gem::Version
96
108
  version: '0'
97
109
  - !ruby/object:Gem::Dependency
98
110
  name: pry
99
111
  requirement: !ruby/object:Gem::Requirement
100
112
  requirements:
101
- - - ">="
113
+ - - "~>"
102
114
  - !ruby/object:Gem::Version
103
115
  version: '0'
104
116
  type: :development
105
117
  prerelease: false
106
118
  version_requirements: !ruby/object:Gem::Requirement
107
119
  requirements:
108
- - - ">="
120
+ - - "~>"
109
121
  - !ruby/object:Gem::Version
110
122
  version: '0'
111
123
  - !ruby/object:Gem::Dependency
112
124
  name: activerecord
113
125
  requirement: !ruby/object:Gem::Requirement
114
126
  requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '4.2'
115
130
  - - ">="
116
131
  - !ruby/object:Gem::Version
117
132
  version: 4.2.0
@@ -119,6 +134,9 @@ dependencies:
119
134
  prerelease: false
120
135
  version_requirements: !ruby/object:Gem::Requirement
121
136
  requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '4.2'
122
140
  - - ">="
123
141
  - !ruby/object:Gem::Version
124
142
  version: 4.2.0
@@ -152,6 +170,7 @@ files:
152
170
  - ".gitignore"
153
171
  - ".ruby-gemset"
154
172
  - ".ruby-version"
173
+ - CHANGELOG.md
155
174
  - Gemfile
156
175
  - LICENSE.txt
157
176
  - README.md
@@ -165,7 +184,6 @@ files:
165
184
  - lib/arpa/data_mappers/resource_mapper.rb
166
185
  - lib/arpa/data_mappers/role_mapper.rb
167
186
  - lib/arpa/entities/action.rb
168
- - lib/arpa/entities/permissions.rb
169
187
  - lib/arpa/entities/profile.rb
170
188
  - lib/arpa/entities/resource.rb
171
189
  - lib/arpa/entities/role.rb
@@ -238,54 +256,53 @@ files:
238
256
  - spec/factories/repository_profiles.rb
239
257
  - spec/factories/repository_resources.rb
240
258
  - spec/factories/repository_roles.rb
241
- - spec/lib/ar/additions/resource_spec.rb
242
- - spec/lib/ar/data_mappers/action_mapper_spec.rb
243
- - spec/lib/ar/data_mappers/base_spec.rb
244
- - spec/lib/ar/data_mappers/profile_mapper_spec.rb
245
- - spec/lib/ar/data_mappers/resource_mapper_spec.rb
246
- - spec/lib/ar/data_mappers/role_mapper_spec.rb
247
- - spec/lib/ar/entities/action_spec.rb
248
- - spec/lib/ar/entities/permissions_spec.rb
249
- - spec/lib/ar/entities/profile_spec.rb
250
- - spec/lib/ar/entities/resource_spec.rb
251
- - spec/lib/ar/entities/role_spec.rb
252
- - spec/lib/ar/repositories/actions/finder_spec.rb
253
- - spec/lib/ar/repositories/base_spec.rb
254
- - spec/lib/ar/repositories/profiles/finder_spec.rb
255
- - spec/lib/ar/repositories/profiles/remover_spec.rb
256
- - spec/lib/ar/repositories/resources/finder_spec.rb
257
- - spec/lib/ar/repositories/resources/remover_spec.rb
258
- - spec/lib/ar/repositories/roles/finder_spec.rb
259
- - spec/lib/ar/repositories/roles/remover_spec.rb
260
- - spec/lib/ar/requests/profiles/create_request_spec.rb
261
- - spec/lib/ar/requests/profiles/remove_request_spec.rb
262
- - spec/lib/ar/requests/resources/create_request_spec.rb
263
- - spec/lib/ar/requests/roles/create_request_spec.rb
264
- - spec/lib/ar/requests/roles/remove_request_spec.rb
265
- - spec/lib/ar/requests/roles/update_request_spec.rb
266
- - spec/lib/ar/services/actions/create/action_creator_spec.rb
267
- - spec/lib/ar/services/actions/remove/action_remover_spec.rb
268
- - spec/lib/ar/services/base_spec.rb
269
- - spec/lib/ar/services/profiles/create/profile_creator_spec.rb
270
- - spec/lib/ar/services/profiles/profile_manager_creator_spec.rb
271
- - spec/lib/ar/services/profiles/profile_manager_remover_spec.rb
272
- - spec/lib/ar/services/profiles/profile_manager_updater_spec.rb
273
- - spec/lib/ar/services/profiles/remove/profile_remover_spec.rb
274
- - spec/lib/ar/services/profiles/update/profile_updater_spec.rb
275
- - spec/lib/ar/services/resources/create/resource_creator_spec.rb
276
- - spec/lib/ar/services/resources/remove/resource_remover_spec.rb
277
- - spec/lib/ar/services/resources/resource_manager_creator_spec.rb
278
- - spec/lib/ar/services/roles/create/role_creator_spec.rb
279
- - spec/lib/ar/services/roles/remove/role_remover_spec.rb
280
- - spec/lib/ar/services/roles/role_manager_creator_spec.rb
281
- - spec/lib/ar/services/roles/role_manager_remover_spec.rb
282
- - spec/lib/ar/services/roles/role_manager_updater_spec.rb
283
- - spec/lib/ar/services/roles/update/role_updater_spec.rb
284
- - spec/lib/ar/services/verifier_spec.rb
285
- - spec/lib/ar/validators/action_validator_spec.rb
286
- - spec/lib/ar/validators/profile_validator_spec.rb
287
- - spec/lib/ar/validators/resource_validator_spec.rb
288
- - spec/lib/ar/validators/role_validator_spec.rb
259
+ - spec/lib/arpa/additions/resource_spec.rb
260
+ - spec/lib/arpa/data_mappers/action_mapper_spec.rb
261
+ - spec/lib/arpa/data_mappers/base_spec.rb
262
+ - spec/lib/arpa/data_mappers/profile_mapper_spec.rb
263
+ - spec/lib/arpa/data_mappers/resource_mapper_spec.rb
264
+ - spec/lib/arpa/data_mappers/role_mapper_spec.rb
265
+ - spec/lib/arpa/entities/action_spec.rb
266
+ - spec/lib/arpa/entities/profile_spec.rb
267
+ - spec/lib/arpa/entities/resource_spec.rb
268
+ - spec/lib/arpa/entities/role_spec.rb
269
+ - spec/lib/arpa/repositories/actions/finder_spec.rb
270
+ - spec/lib/arpa/repositories/base_spec.rb
271
+ - spec/lib/arpa/repositories/profiles/finder_spec.rb
272
+ - spec/lib/arpa/repositories/profiles/remover_spec.rb
273
+ - spec/lib/arpa/repositories/resources/finder_spec.rb
274
+ - spec/lib/arpa/repositories/resources/remover_spec.rb
275
+ - spec/lib/arpa/repositories/roles/finder_spec.rb
276
+ - spec/lib/arpa/repositories/roles/remover_spec.rb
277
+ - spec/lib/arpa/requests/profiles/create_request_spec.rb
278
+ - spec/lib/arpa/requests/profiles/remove_request_spec.rb
279
+ - spec/lib/arpa/requests/resources/create_request_spec.rb
280
+ - spec/lib/arpa/requests/roles/create_request_spec.rb
281
+ - spec/lib/arpa/requests/roles/remove_request_spec.rb
282
+ - spec/lib/arpa/requests/roles/update_request_spec.rb
283
+ - spec/lib/arpa/services/actions/create/action_creator_spec.rb
284
+ - spec/lib/arpa/services/actions/remove/action_remover_spec.rb
285
+ - spec/lib/arpa/services/base_spec.rb
286
+ - spec/lib/arpa/services/profiles/create/profile_creator_spec.rb
287
+ - spec/lib/arpa/services/profiles/profile_manager_creator_spec.rb
288
+ - spec/lib/arpa/services/profiles/profile_manager_remover_spec.rb
289
+ - spec/lib/arpa/services/profiles/profile_manager_updater_spec.rb
290
+ - spec/lib/arpa/services/profiles/remove/profile_remover_spec.rb
291
+ - spec/lib/arpa/services/profiles/update/profile_updater_spec.rb
292
+ - spec/lib/arpa/services/resources/create/resource_creator_spec.rb
293
+ - spec/lib/arpa/services/resources/remove/resource_remover_spec.rb
294
+ - spec/lib/arpa/services/resources/resource_manager_creator_spec.rb
295
+ - spec/lib/arpa/services/roles/create/role_creator_spec.rb
296
+ - spec/lib/arpa/services/roles/remove/role_remover_spec.rb
297
+ - spec/lib/arpa/services/roles/role_manager_creator_spec.rb
298
+ - spec/lib/arpa/services/roles/role_manager_remover_spec.rb
299
+ - spec/lib/arpa/services/roles/role_manager_updater_spec.rb
300
+ - spec/lib/arpa/services/roles/update/role_updater_spec.rb
301
+ - spec/lib/arpa/services/verifier_spec.rb
302
+ - spec/lib/arpa/validators/action_validator_spec.rb
303
+ - spec/lib/arpa/validators/profile_validator_spec.rb
304
+ - spec/lib/arpa/validators/resource_validator_spec.rb
305
+ - spec/lib/arpa/validators/role_validator_spec.rb
289
306
  - spec/spec_helper.rb
290
307
  - spec/support/repositories/test_repository.rb
291
308
  - spec/support/schema.rb
@@ -318,54 +335,53 @@ test_files:
318
335
  - spec/factories/repository_profiles.rb
319
336
  - spec/factories/repository_resources.rb
320
337
  - spec/factories/repository_roles.rb
321
- - spec/lib/ar/additions/resource_spec.rb
322
- - spec/lib/ar/data_mappers/action_mapper_spec.rb
323
- - spec/lib/ar/data_mappers/base_spec.rb
324
- - spec/lib/ar/data_mappers/profile_mapper_spec.rb
325
- - spec/lib/ar/data_mappers/resource_mapper_spec.rb
326
- - spec/lib/ar/data_mappers/role_mapper_spec.rb
327
- - spec/lib/ar/entities/action_spec.rb
328
- - spec/lib/ar/entities/permissions_spec.rb
329
- - spec/lib/ar/entities/profile_spec.rb
330
- - spec/lib/ar/entities/resource_spec.rb
331
- - spec/lib/ar/entities/role_spec.rb
332
- - spec/lib/ar/repositories/actions/finder_spec.rb
333
- - spec/lib/ar/repositories/base_spec.rb
334
- - spec/lib/ar/repositories/profiles/finder_spec.rb
335
- - spec/lib/ar/repositories/profiles/remover_spec.rb
336
- - spec/lib/ar/repositories/resources/finder_spec.rb
337
- - spec/lib/ar/repositories/resources/remover_spec.rb
338
- - spec/lib/ar/repositories/roles/finder_spec.rb
339
- - spec/lib/ar/repositories/roles/remover_spec.rb
340
- - spec/lib/ar/requests/profiles/create_request_spec.rb
341
- - spec/lib/ar/requests/profiles/remove_request_spec.rb
342
- - spec/lib/ar/requests/resources/create_request_spec.rb
343
- - spec/lib/ar/requests/roles/create_request_spec.rb
344
- - spec/lib/ar/requests/roles/remove_request_spec.rb
345
- - spec/lib/ar/requests/roles/update_request_spec.rb
346
- - spec/lib/ar/services/actions/create/action_creator_spec.rb
347
- - spec/lib/ar/services/actions/remove/action_remover_spec.rb
348
- - spec/lib/ar/services/base_spec.rb
349
- - spec/lib/ar/services/profiles/create/profile_creator_spec.rb
350
- - spec/lib/ar/services/profiles/profile_manager_creator_spec.rb
351
- - spec/lib/ar/services/profiles/profile_manager_remover_spec.rb
352
- - spec/lib/ar/services/profiles/profile_manager_updater_spec.rb
353
- - spec/lib/ar/services/profiles/remove/profile_remover_spec.rb
354
- - spec/lib/ar/services/profiles/update/profile_updater_spec.rb
355
- - spec/lib/ar/services/resources/create/resource_creator_spec.rb
356
- - spec/lib/ar/services/resources/remove/resource_remover_spec.rb
357
- - spec/lib/ar/services/resources/resource_manager_creator_spec.rb
358
- - spec/lib/ar/services/roles/create/role_creator_spec.rb
359
- - spec/lib/ar/services/roles/remove/role_remover_spec.rb
360
- - spec/lib/ar/services/roles/role_manager_creator_spec.rb
361
- - spec/lib/ar/services/roles/role_manager_remover_spec.rb
362
- - spec/lib/ar/services/roles/role_manager_updater_spec.rb
363
- - spec/lib/ar/services/roles/update/role_updater_spec.rb
364
- - spec/lib/ar/services/verifier_spec.rb
365
- - spec/lib/ar/validators/action_validator_spec.rb
366
- - spec/lib/ar/validators/profile_validator_spec.rb
367
- - spec/lib/ar/validators/resource_validator_spec.rb
368
- - spec/lib/ar/validators/role_validator_spec.rb
338
+ - spec/lib/arpa/additions/resource_spec.rb
339
+ - spec/lib/arpa/data_mappers/action_mapper_spec.rb
340
+ - spec/lib/arpa/data_mappers/base_spec.rb
341
+ - spec/lib/arpa/data_mappers/profile_mapper_spec.rb
342
+ - spec/lib/arpa/data_mappers/resource_mapper_spec.rb
343
+ - spec/lib/arpa/data_mappers/role_mapper_spec.rb
344
+ - spec/lib/arpa/entities/action_spec.rb
345
+ - spec/lib/arpa/entities/profile_spec.rb
346
+ - spec/lib/arpa/entities/resource_spec.rb
347
+ - spec/lib/arpa/entities/role_spec.rb
348
+ - spec/lib/arpa/repositories/actions/finder_spec.rb
349
+ - spec/lib/arpa/repositories/base_spec.rb
350
+ - spec/lib/arpa/repositories/profiles/finder_spec.rb
351
+ - spec/lib/arpa/repositories/profiles/remover_spec.rb
352
+ - spec/lib/arpa/repositories/resources/finder_spec.rb
353
+ - spec/lib/arpa/repositories/resources/remover_spec.rb
354
+ - spec/lib/arpa/repositories/roles/finder_spec.rb
355
+ - spec/lib/arpa/repositories/roles/remover_spec.rb
356
+ - spec/lib/arpa/requests/profiles/create_request_spec.rb
357
+ - spec/lib/arpa/requests/profiles/remove_request_spec.rb
358
+ - spec/lib/arpa/requests/resources/create_request_spec.rb
359
+ - spec/lib/arpa/requests/roles/create_request_spec.rb
360
+ - spec/lib/arpa/requests/roles/remove_request_spec.rb
361
+ - spec/lib/arpa/requests/roles/update_request_spec.rb
362
+ - spec/lib/arpa/services/actions/create/action_creator_spec.rb
363
+ - spec/lib/arpa/services/actions/remove/action_remover_spec.rb
364
+ - spec/lib/arpa/services/base_spec.rb
365
+ - spec/lib/arpa/services/profiles/create/profile_creator_spec.rb
366
+ - spec/lib/arpa/services/profiles/profile_manager_creator_spec.rb
367
+ - spec/lib/arpa/services/profiles/profile_manager_remover_spec.rb
368
+ - spec/lib/arpa/services/profiles/profile_manager_updater_spec.rb
369
+ - spec/lib/arpa/services/profiles/remove/profile_remover_spec.rb
370
+ - spec/lib/arpa/services/profiles/update/profile_updater_spec.rb
371
+ - spec/lib/arpa/services/resources/create/resource_creator_spec.rb
372
+ - spec/lib/arpa/services/resources/remove/resource_remover_spec.rb
373
+ - spec/lib/arpa/services/resources/resource_manager_creator_spec.rb
374
+ - spec/lib/arpa/services/roles/create/role_creator_spec.rb
375
+ - spec/lib/arpa/services/roles/remove/role_remover_spec.rb
376
+ - spec/lib/arpa/services/roles/role_manager_creator_spec.rb
377
+ - spec/lib/arpa/services/roles/role_manager_remover_spec.rb
378
+ - spec/lib/arpa/services/roles/role_manager_updater_spec.rb
379
+ - spec/lib/arpa/services/roles/update/role_updater_spec.rb
380
+ - spec/lib/arpa/services/verifier_spec.rb
381
+ - spec/lib/arpa/validators/action_validator_spec.rb
382
+ - spec/lib/arpa/validators/profile_validator_spec.rb
383
+ - spec/lib/arpa/validators/resource_validator_spec.rb
384
+ - spec/lib/arpa/validators/role_validator_spec.rb
369
385
  - spec/spec_helper.rb
370
386
  - spec/support/repositories/test_repository.rb
371
387
  - spec/support/schema.rb
@@ -1,33 +0,0 @@
1
- module Arpa
2
- module Entities
3
- class Permissions
4
-
5
- attr_reader :permissions
6
-
7
- def initialize(actions)
8
- @actions = actions
9
- @permissions = Array.new
10
- build_permissions
11
- end
12
-
13
- def has_permission?(resource_name, action_name)
14
- hash_permission = build_hash_permission(resource_name, action_name)
15
- permissions.include?(hash_permission)
16
- end
17
-
18
- private
19
- def build_permissions
20
- @actions.collect do |action|
21
- hash_permission = build_hash_permission(action.resource_name, action.name)
22
- @permissions << hash_permission unless permissions.include?(hash_permission)
23
- end
24
- end
25
-
26
- def build_hash_permission(resource_name, action_name)
27
- {'resource' => resource_name, 'action' => action_name }
28
- end
29
-
30
- end
31
- end
32
- end
33
-
@@ -1,74 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Arpa::Entities::Permissions, type: :entity, fast: true do
4
- let(:action_001) { double name: 'index', resource_name: 'users' }
5
- let(:action_002) { double name: 'show', resource_name: 'users' }
6
- let(:action_003) { double name: 'show', resource_name: 'users' }
7
- let(:actions) { [action_001, action_002, action_003] }
8
-
9
- subject { Arpa::Entities::Permissions.new(actions)}
10
-
11
- describe 'intializing' do
12
- let(:result) { subject.permissions }
13
-
14
- it 'attr :permissions should be an Array' do
15
- expect(result).to be_an Array
16
- end
17
-
18
- it 'should fill attr :permissions as an Array of Hash with keys :resource and :action' do
19
- first = result.first
20
-
21
- expect(first).to be_a Hash
22
- expect(first.has_key?('resource')).to be_truthy
23
- expect(first.has_key?('action')).to be_truthy
24
- end
25
-
26
- context 'when try fill permissions with duplicate resource and action' do
27
-
28
- it 'should has only one Hash with that duplicated resource and action' do
29
- duplicated_hash_permission = result.detect{ |e| result.count(e) > 1 }
30
- expect(duplicated_hash_permission).to be_nil
31
- end
32
- end
33
-
34
- end
35
-
36
- describe '#has_permission?' do
37
- let(:result) { subject.has_permission?(resource_name, action_name) }
38
-
39
- context 'when pass a resource name with permission' do
40
- let(:resource_name) { 'users' }
41
-
42
- context 'when pass an action with permission' do
43
- let(:action_name) { 'index' }
44
-
45
- it 'should return true' do
46
- expect(result).to be_truthy
47
- end
48
- end
49
-
50
- context 'when pass an action with no permission' do
51
- let(:action_name) { 'index_old' }
52
-
53
- it 'should return false' do
54
- expect(result).to be_falsey
55
- end
56
- end
57
- end
58
-
59
- context 'when pass a resource name with no permission' do
60
- let(:resource_name) { 'users_2' }
61
-
62
- context 'when pass some action' do
63
- let(:action_name) { 'index' }
64
-
65
- it 'should return false' do
66
- expect(result).to be_falsey
67
- end
68
- end
69
- end
70
-
71
- end
72
-
73
- end
74
-
@@ -1,58 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Arpa::Repositories::Actions::Finder, type: :repository, slow: true do
4
-
5
- let(:resource_record) { create :repository_resource, :user }
6
- let(:action_record_001) { create :repository_action, :index, resource: resource_record }
7
- let(:action_record_002) { create :repository_action, :show, resource: resource_record}
8
-
9
- before do
10
- action_record_001
11
- action_record_002
12
- end
13
-
14
- describe '#by_name_and_resource' do
15
-
16
- context 'when exist with the params' do
17
-
18
- let(:result) { subject.by_name_and_resource('index', resource_record) }
19
-
20
- it 'should return a resource with name "index"' do
21
- expect(result.name).to eql 'index'
22
- end
23
-
24
- it 'the result should be an instance of Arpa::Entities::Action' do
25
- expect(result).to be_an Arpa::Entities::Action
26
- end
27
- end
28
-
29
- context 'when nonexist with the params' do
30
-
31
- let(:result) { subject.by_name_and_resource('nonexist_action', resource_record) }
32
-
33
- it 'the result should return nil' do
34
- expect(result).to be_nil
35
- end
36
- end
37
-
38
- end
39
-
40
- describe 'getting permissions from profile_ids' do
41
- let(:profile_001) { create :repository_profile, :with_complete_association, name: 'prof_001' }
42
- let(:profile_002) { create :repository_profile, :with_complete_association, name: 'prof_002' }
43
- let(:profile_ids) { [profile_001.id, profile_002.id] }
44
-
45
- let(:result) { subject.permissions(profile_ids) }
46
- let(:first) { result.first }
47
-
48
- it 'should return an Arpa::Entities::Permissions' do
49
- expect(result).to be_an Arpa::Entities::Permissions
50
- end
51
-
52
- it 'should has just one permission' do
53
- expect(result.permissions.size).to be == 1
54
- end
55
-
56
- end
57
-
58
- end