hydra-access-controls 10.5.0 → 10.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed94a3c77e4473df017f3e8d932af844b5bc4eda
4
- data.tar.gz: 14bf723d584d15d01d35882b3be61fa4d2c14fa5
3
+ metadata.gz: 2ff67011c0dfacf46f43a710b1bf75be300c91f8
4
+ data.tar.gz: 9894ed9ca3d96943443058a9546b32cdd71c8a8c
5
5
  SHA512:
6
- metadata.gz: ac4802b6ab1511152cef8d8f9c4c27194eb6e5f90e4439f35130497d17bb72ccd7676be420a1c80ea487b7bda2f60595dee9acec091e80fcf9a911d8dd8fece8
7
- data.tar.gz: 0f3830cef55ada92f0d9cb4250e433ac56b331eba178e4cbaea785aa68748cfff57355dc2ded2a60d511255b65abc173332ff4179f971642a0d5c955845d2b59
6
+ metadata.gz: 41a3c4f41486967062df9adb768a6002eb5762967e70ce225dfa474eb2c293c2b86edea0a0b7cc935e57518bbcc1dd4d7ea2124b2dc514e600e0221ab209a0fb
7
+ data.tar.gz: c862bc4aa6120634f94370b7d0a0d72c579e4f07de7f135fff793c9ca65024519fbe5462777659ab89c5d91fc0a83955981722aa56284cec9615d82b773614c4
@@ -1,27 +1,26 @@
1
1
  # Repeats access controls evaluation methods, but checks against a governing "Policy" object (or "Collection" object) that provides inherited access controls.
2
2
  module Hydra::PolicyAwareAccessControlsEnforcement
3
3
 
4
- # Extends Hydra::AccessControlsEnforcement.apply_gated_discovery to reflect policy-provided access
5
- # appends the result of policy_clauses into the :fq
6
- # @param solr_parameters the current solr parameters
7
- # @param user_parameters the current user-subitted parameters
4
+ # Extends Hydra::AccessControlsEnforcement.apply_gated_discovery to reflect policy-provided access.
5
+ # Appends the result of policy_clauses into the :fq
6
+ # @param [Hash] solr_parameters the current solr parameters, to be modified herein!
8
7
  def apply_gated_discovery(solr_parameters)
9
8
  super
10
9
  logger.debug("POLICY-aware Solr parameters: #{ solr_parameters.inspect }")
11
10
  end
12
11
 
13
- # returns solr query for finding all objects whose policies grant discover access to current_user
12
+ # @return [String,nil] solr query for finding all objects whose policies grant discover access to current_user
14
13
  def policy_clauses
15
14
  policy_ids = policies_with_access
16
15
  return nil if policy_ids.empty?
17
16
  '(' + policy_ids.map {|id| ActiveFedora::SolrQueryBuilder.construct_query_for_rel(isGovernedBy: id)}.join(' OR '.freeze) + ')'
18
17
  end
19
18
 
20
- # find all the policies that grant discover/read/edit permissions to this user or any of its groups
19
+ # Find all the policies that grant discover/read/edit permissions to this user or any of its groups.
20
+ # Grant access based on user id & group
21
21
  def policies_with_access
22
22
  #### TODO -- Memoize this and put it in the session?
23
23
  user_access_filters = []
24
- # Grant access based on user id & group
25
24
  user_access_filters += apply_policy_group_permissions(discovery_permissions)
26
25
  user_access_filters += apply_policy_user_permissions(discovery_permissions)
27
26
  result = policy_class.search_with_conditions( user_access_filters.join(" OR "), fl: "id", rows: policy_class.count )
@@ -29,8 +28,9 @@ module Hydra::PolicyAwareAccessControlsEnforcement
29
28
  result.map {|h| h['id']}
30
29
  end
31
30
 
31
+ # for groups
32
+ # @param [Array{String,#to_sym}] permission_types symbols (or equivalent) from Hydra.config.permissions.inheritable
32
33
  def apply_policy_group_permissions(permission_types = discovery_permissions)
33
- # for groups
34
34
  user_access_filters = []
35
35
  current_ability.user_groups.each_with_index do |group, i|
36
36
  permission_types.each do |type|
@@ -40,8 +40,9 @@ module Hydra::PolicyAwareAccessControlsEnforcement
40
40
  user_access_filters
41
41
  end
42
42
 
43
+ # for individual user access
44
+ # @param [Array{String,#to_sym}] permission_types
43
45
  def apply_policy_user_permissions(permission_types = discovery_permissions)
44
- # for individual user access
45
46
  user = current_ability.current_user
46
47
  return [] unless user && user.user_key.present?
47
48
  permission_types.map do |type|
@@ -1,4 +1,4 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
 
3
3
  # Users
4
4
 
@@ -5,19 +5,19 @@ describe Hydra::EmbargoService do
5
5
  let(:past_date) { 2.days.ago }
6
6
 
7
7
  let!(:work_with_expired_embargo1) do
8
- FactoryGirl.build(:asset, embargo_release_date: past_date.to_s).tap do |work|
8
+ FactoryBot.build(:asset, embargo_release_date: past_date.to_s).tap do |work|
9
9
  work.save(validate:false)
10
10
  end
11
11
  end
12
12
 
13
13
  let!(:work_with_expired_embargo2) do
14
- FactoryGirl.build(:asset, embargo_release_date: past_date.to_s).tap do |work|
14
+ FactoryBot.build(:asset, embargo_release_date: past_date.to_s).tap do |work|
15
15
  work.save(validate:false)
16
16
  end
17
17
  end
18
18
 
19
- let!(:work_with_embargo_in_effect) { FactoryGirl.create(:asset, embargo_release_date: future_date.to_s)}
20
- let!(:work_without_embargo) { FactoryGirl.create(:asset)}
19
+ let!(:work_with_embargo_in_effect) { FactoryBot.create(:asset, embargo_release_date: future_date.to_s)}
20
+ let!(:work_without_embargo) { FactoryBot.create(:asset)}
21
21
 
22
22
  describe "#assets_with_expired_embargoes" do
23
23
  it "returns an array of assets with expired embargoes" do
@@ -5,19 +5,19 @@ describe Hydra::LeaseService do
5
5
  let(:past_date) { 2.days.ago }
6
6
 
7
7
  let!(:work_with_expired_lease1) do
8
- FactoryGirl.build(:asset, lease_expiration_date: past_date.to_s).tap do |work|
8
+ FactoryBot.build(:asset, lease_expiration_date: past_date.to_s).tap do |work|
9
9
  work.save(validate: false)
10
10
  end
11
11
  end
12
12
 
13
13
  let!(:work_with_expired_lease2) do
14
- FactoryGirl.build(:asset, lease_expiration_date: past_date.to_s).tap do |work|
14
+ FactoryBot.build(:asset, lease_expiration_date: past_date.to_s).tap do |work|
15
15
  work.save(validate: false)
16
16
  end
17
17
  end
18
18
 
19
- let!(:work_with_lease_in_effect) { FactoryGirl.create(:asset, lease_expiration_date: future_date.to_s)}
20
- let!(:work_without_lease) { FactoryGirl.create(:asset)}
19
+ let!(:work_with_lease_in_effect) { FactoryBot.create(:asset, lease_expiration_date: future_date.to_s)}
20
+ let!(:work_without_lease) { FactoryBot.create(:asset)}
21
21
 
22
22
  describe "#assets_with_expired_leases" do
23
23
  it "returns an array of assets with expired embargoes" do
@@ -35,7 +35,7 @@ ActiveSupport::Dependencies.autoload_paths += relative_load_paths
35
35
  require 'support/mods_asset'
36
36
  require 'support/solr_document'
37
37
  require "support/user"
38
- require "factory_girl"
38
+ require "factory_bot"
39
39
  require 'rspec/mocks'
40
40
  require 'rspec/its'
41
41
  require "factories"
@@ -31,7 +31,7 @@ describe Ability do
31
31
  end
32
32
 
33
33
  context "for a signed in user" do
34
- let(:user) { FactoryGirl.build(:registered_user) }
34
+ let(:user) { FactoryBot.build(:registered_user) }
35
35
 
36
36
  it { should_not be_able_to(:create, ActiveFedora::Base) }
37
37
  end
@@ -42,7 +42,7 @@ describe Ability do
42
42
  # Test coverage for discover permission is in spec/requests/gated_discovery_spec.rb
43
43
 
44
44
  describe "Given an asset that has been made publicly discoverable" do
45
- let(:asset) { FactoryGirl.create(:asset) }
45
+ let(:asset) { FactoryBot.create(:asset) }
46
46
  before do
47
47
  asset.permissions_attributes = [{ name: "public", access: "discover", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }, { name: "calvin_collaborator", access: "edit", type: "person" }]
48
48
  asset.save
@@ -58,7 +58,7 @@ describe Ability do
58
58
  end
59
59
 
60
60
  context "Then a registered user" do
61
- let(:user) { FactoryGirl.build(:registered_user) }
61
+ let(:user) { FactoryBot.build(:registered_user) }
62
62
  it { should be_able_to(:discover, asset) }
63
63
  it { should_not be_able_to(:read, asset) }
64
64
  it { should_not be_able_to(:edit, asset) }
@@ -68,8 +68,8 @@ describe Ability do
68
68
  end
69
69
 
70
70
  describe "Given an asset that has been made publicly available (ie. open access)" do
71
- #let(:asset) { FactoryGirl.create(:open_access_asset) }
72
- let(:asset) { FactoryGirl.create(:asset) }
71
+ #let(:asset) { FactoryBot.create(:open_access_asset) }
72
+ let(:asset) { FactoryBot.create(:asset) }
73
73
  before do
74
74
  asset.permissions_attributes = [{ name: "public", access: "read", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }, { name: "calvin_collaborator", access: "edit", type: "person" }]
75
75
  asset.save
@@ -85,7 +85,7 @@ describe Ability do
85
85
  end
86
86
 
87
87
  context "Then a registered user" do
88
- let(:user) { FactoryGirl.build(:registered_user) }
88
+ let(:user) { FactoryBot.build(:registered_user) }
89
89
  it { should be_able_to(:discover, asset) }
90
90
  it { should be_able_to(:read, asset) }
91
91
  it { should_not be_able_to(:edit, asset) }
@@ -95,7 +95,7 @@ describe Ability do
95
95
  end
96
96
 
97
97
  describe "Given an asset with no custom access set" do
98
- let(:asset) { FactoryGirl.create(:asset) }
98
+ let(:asset) { FactoryBot.create(:asset) }
99
99
  before do
100
100
  asset.permissions_attributes = [{ name: "joe_creator", access: "edit", type: "person" }]
101
101
  asset.save
@@ -110,7 +110,7 @@ describe Ability do
110
110
  it { should_not be_able_to(:destroy, asset) }
111
111
  end
112
112
  context "Then a registered user" do
113
- let(:user) { FactoryGirl.build(:registered_user) }
113
+ let(:user) { FactoryBot.build(:registered_user) }
114
114
  it { should_not be_able_to(:discover, asset) }
115
115
  it { should_not be_able_to(:read, asset) }
116
116
  it { should_not be_able_to(:edit, asset) }
@@ -118,7 +118,7 @@ describe Ability do
118
118
  it { should_not be_able_to(:destroy, asset) }
119
119
  end
120
120
  context "Then the Creator" do
121
- let(:user) { FactoryGirl.build(:joe_creator) }
121
+ let(:user) { FactoryBot.build(:joe_creator) }
122
122
  it { should be_able_to(:discover, asset) }
123
123
  it { should be_able_to(:read, asset) }
124
124
  it { should be_able_to(:edit, asset) }
@@ -132,14 +132,14 @@ describe Ability do
132
132
  end
133
133
 
134
134
  describe "Given an asset which registered users have read access to" do
135
- # let(:asset) { FactoryGirl.create(:org_read_access_asset) }
136
- let(:asset) { FactoryGirl.create(:asset) }
135
+ # let(:asset) { FactoryBot.create(:org_read_access_asset) }
136
+ let(:asset) { FactoryBot.create(:asset) }
137
137
  before do
138
138
  asset.permissions_attributes = [{ name: "registered", access: "read", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }, { name: "calvin_collaborator", access: "edit", type: "person" }]
139
139
  asset.save
140
140
  end
141
141
  context "The a registered user" do
142
- let(:user) { FactoryGirl.build(:registered_user) }
142
+ let(:user) { FactoryBot.build(:registered_user) }
143
143
  before do
144
144
  allow(user).to receive(:new_record?).and_return(false)
145
145
  end
@@ -154,7 +154,7 @@ describe Ability do
154
154
  end
155
155
 
156
156
  describe "Given an asset with collaborator" do
157
- let(:asset) { FactoryGirl.create(:asset) }
157
+ let(:asset) { FactoryBot.create(:asset) }
158
158
  before do
159
159
  asset.permissions_attributes = [{ name:"africana-faculty", access: "edit", type: "group" }, {name: "calvin_collaborator", access: "edit", type: "person"}]
160
160
  asset.save
@@ -162,7 +162,7 @@ describe Ability do
162
162
  after { asset.destroy }
163
163
 
164
164
  context "Then a collaborator with edit access (user permision)" do
165
- let(:user) { FactoryGirl.build(:calvin_collaborator) }
165
+ let(:user) { FactoryBot.build(:calvin_collaborator) }
166
166
 
167
167
  it { should be_able_to(:discover, asset) }
168
168
  it { should be_able_to(:read, asset) }
@@ -173,7 +173,7 @@ describe Ability do
173
173
  end
174
174
 
175
175
  context "Then a collaborator with edit access (group permision)" do
176
- let(:user) { FactoryGirl.build(:martia_morocco) }
176
+ let(:user) { FactoryBot.build(:martia_morocco) }
177
177
  before do
178
178
  allow(user).to receive(:groups).and_return(["faculty", "africana-faculty"])
179
179
  end
@@ -183,14 +183,14 @@ describe Ability do
183
183
  end
184
184
 
185
185
  describe "Given an asset where dept can read & registered users can discover" do
186
- # let(:asset) { FactoryGirl.create(:dept_access_asset) }
187
- let(:asset) { FactoryGirl.create(:asset) }
186
+ # let(:asset) { FactoryBot.create(:dept_access_asset) }
187
+ let(:asset) { FactoryBot.create(:asset) }
188
188
  before do
189
189
  asset.permissions_attributes = [{ name: "africana-faculty", access: "read", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }]
190
190
  asset.save
191
191
  end
192
192
  context "Then a registered user" do
193
- let(:user) { FactoryGirl.build(:registered_user) }
193
+ let(:user) { FactoryBot.build(:registered_user) }
194
194
 
195
195
  it { should_not be_able_to(:discover, asset) }
196
196
  it { should_not be_able_to(:read, asset) }
@@ -201,7 +201,7 @@ describe Ability do
201
201
  end
202
202
 
203
203
  context "Then someone whose role/group has read access" do
204
- let(:user) { FactoryGirl.build(:martia_morocco) }
204
+ let(:user) { FactoryBot.build(:martia_morocco) }
205
205
  before do
206
206
  allow(user).to receive(:groups).and_return(["faculty", "africana-faculty"])
207
207
  end
@@ -228,7 +228,7 @@ describe Ability do
228
228
  end
229
229
  end
230
230
  end
231
- let(:user) { FactoryGirl.build(:staff) }
231
+ let(:user) { FactoryBot.build(:staff) }
232
232
 
233
233
  after do
234
234
  Object.send(:remove_const, :MyAbility)
@@ -241,13 +241,13 @@ describe Ability do
241
241
  end
242
242
 
243
243
  describe "calling ability on two separate objects" do
244
- let(:asset1) { FactoryGirl.create(:asset) }
245
- let(:asset2) { FactoryGirl.create(:asset) }
244
+ let(:asset1) { FactoryBot.create(:asset) }
245
+ let(:asset2) { FactoryBot.create(:asset) }
246
246
  before do
247
247
  asset1.permissions_attributes = [{ name: "registered", access: "read", type: "group" }, { name: "joe_creator", access: "edit", type: "person" }, { name: "calvin_collaborator", access: "edit", type: "person" }]
248
248
  asset1.save
249
249
  end
250
- let(:user) { FactoryGirl.build(:calvin_collaborator) } # has access to @asset1, but not @asset2
250
+ let(:user) { FactoryBot.build(:calvin_collaborator) } # has access to @asset1, but not @asset2
251
251
  after do
252
252
  asset1.destroy
253
253
  asset2.destroy
@@ -261,8 +261,8 @@ describe Ability do
261
261
  end
262
262
 
263
263
  describe "download permissions" do
264
- let(:asset) { FactoryGirl.create(:asset) }
265
- let(:user) { FactoryGirl.build(:user) }
264
+ let(:asset) { FactoryBot.create(:asset) }
265
+ let(:user) { FactoryBot.build(:user) }
266
266
  let(:file) { ActiveFedora::File.new() }
267
267
 
268
268
  before { allow(file).to receive(:uri).and_return(uri) }
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "active_fedora/accessible_by" do
4
- let(:user) {FactoryGirl.build(:ira_instructor)}
4
+ let(:user) {FactoryBot.build(:ira_instructor)}
5
5
  let(:ability) {Ability.new(user)}
6
- let(:private_obj) {FactoryGirl.create(:asset)}
7
- let(:public_obj) {FactoryGirl.create(:asset)}
8
- let(:editable_obj) {FactoryGirl.create(:asset)}
6
+ let(:private_obj) {FactoryBot.create(:asset)}
7
+ let(:public_obj) {FactoryBot.create(:asset)}
8
+ let(:editable_obj) {FactoryBot.create(:asset)}
9
9
 
10
10
  before do
11
11
  private_obj.permissions_attributes = [{ name: "joe_creator", access: "edit", type: "person" }]
@@ -120,7 +120,7 @@ describe Hydra::AdminPolicy do
120
120
  # Policy-based Access Controls
121
121
  #
122
122
  describe "When accessing assets with Policies associated" do
123
- let(:user) { FactoryGirl.build(:martia_morocco) }
123
+ let(:user) { FactoryBot.build(:martia_morocco) }
124
124
 
125
125
  before do
126
126
  allow(user).to receive(:groups).and_return(["faculty", "africana-faculty"])
@@ -62,7 +62,7 @@ describe Hydra::AccessControls::Permission do
62
62
 
63
63
  context 'with a User instance passed as :name argument' do
64
64
  let(:permission) { described_class.new(type: 'person', name: user, access: 'read') }
65
- let(:user) { FactoryGirl.build(:archivist, email: 'archivist1@example.com') }
65
+ let(:user) { FactoryBot.build(:archivist, email: 'archivist1@example.com') }
66
66
 
67
67
  it "uses string and escape agent when building" do
68
68
  expect(permission.agent.first.rdf_subject.to_s).to eq 'http://projecthydra.org/ns/auth/person#archivist1@example.com'
@@ -92,7 +92,7 @@ describe Hydra::PolicyAwareAccessControlsEnforcement do
92
92
 
93
93
  let(:current_ability) { Ability.new(user) }
94
94
  subject { PolicyMockSearchBuilder.new(current_ability) }
95
- let(:user) { FactoryGirl.build(:sara_student) }
95
+ let(:user) { FactoryBot.build(:sara_student) }
96
96
 
97
97
  before do
98
98
  @solr_parameters = {}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-access-controls
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.5.0
4
+ version: 10.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-06-09 00:00:00.000000000 Z
13
+ date: 2018-04-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -237,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
237
  version: '0'
238
238
  requirements: []
239
239
  rubyforge_project:
240
- rubygems_version: 2.6.12
240
+ rubygems_version: 2.6.14
241
241
  signing_key:
242
242
  specification_version: 4
243
243
  summary: Access controls for project hydra