hydra-access-controls 10.6.2 → 11.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/concerns/hydra/access_controls/embargoable.rb +2 -2
- data/app/models/hydra/access_control.rb +2 -2
- data/hydra-access-controls.gemspec +2 -2
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/accessible_by_spec.rb +1 -1
- data/spec/unit/embargoable_spec.rb +53 -0
- data/tasks/hydra-access-controls.rake +1 -1
- metadata +4 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4b22da24ea67d1fdb58bfce4044fa0d7c7167640bd7fb7c89bce988e0571595
|
4
|
+
data.tar.gz: 6adce22a2c6036385cd97550dfb51e11e23eea2b72b11076fcd0e54bb96f0ee6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17ae9693da60445afd084147a730c0cb86d585d5402ca8e88f4483d6cfd8b75cae3a41f4b241121dafba1d2ef6e868a33cf887cc8ba4d9cbf2e02deae415bd35
|
7
|
+
data.tar.gz: 0e4891b4c48b83db40d5e9e95da32630807a964dfbdd9ea84c5687adbf1092d319682c3fa5e006c1c4b76dc423ce5b50a77c2baae25916830a5b3ae0b5a44396
|
@@ -8,8 +8,8 @@ module Hydra
|
|
8
8
|
validates :lease_expiration_date, :'hydra/future_date' => true, if: :enforce_future_date_for_lease?
|
9
9
|
validates :embargo_release_date, :'hydra/future_date' => true, if: :enforce_future_date_for_embargo?
|
10
10
|
|
11
|
-
belongs_to :embargo, predicate: Hydra::ACL.hasEmbargo, class_name: 'Hydra::AccessControls::Embargo'
|
12
|
-
belongs_to :lease, predicate: Hydra::ACL.hasLease, class_name: 'Hydra::AccessControls::Lease'
|
11
|
+
belongs_to :embargo, predicate: Hydra::ACL.hasEmbargo, class_name: 'Hydra::AccessControls::Embargo', autosave: true
|
12
|
+
belongs_to :lease, predicate: Hydra::ACL.hasLease, class_name: 'Hydra::AccessControls::Lease', autosave: true
|
13
13
|
|
14
14
|
delegate :visibility_during_embargo, :visibility_during_embargo=, :visibility_after_embargo, :visibility_after_embargo=, :embargo_release_date, :embargo_release_date=, :embargo_history, :embargo_history=, to: :existing_or_new_embargo
|
15
15
|
delegate :visibility_during_lease, :visibility_during_lease=, :visibility_after_lease, :visibility_after_lease=, :lease_expiration_date, :lease_expiration_date=, :lease_history, :lease_history=, to: :existing_or_new_lease
|
@@ -31,11 +31,11 @@ module Hydra
|
|
31
31
|
obj.update(attributes.except(:id, '_destroy'))
|
32
32
|
end
|
33
33
|
else
|
34
|
-
relationship.
|
34
|
+
relationship.build(attributes)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
# Poison the cache
|
38
|
-
relationship.reset if any_destroyed
|
38
|
+
save! && relationship.reset if any_destroyed
|
39
39
|
end
|
40
40
|
|
41
41
|
def relationship
|
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
|
|
6
6
|
gem.email = ["hydra-tech@googlegroups.com"]
|
7
7
|
gem.description = %q{Access controls for project hydra}
|
8
8
|
gem.summary = %q{Access controls for project hydra}
|
9
|
-
gem.homepage = "
|
9
|
+
gem.homepage = "https://github.com/samvera/hydra-head/tree/master/hydra-access-controls"
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
12
12
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |gem|
|
|
19
19
|
gem.required_ruby_version = '>= 1.9.3'
|
20
20
|
|
21
21
|
gem.add_dependency 'activesupport', '>= 4', '< 6'
|
22
|
-
gem.add_dependency "active-fedora", '>= 10.0.0'
|
22
|
+
gem.add_dependency "active-fedora", '>= 10.0.0'
|
23
23
|
gem.add_dependency "blacklight", '>= 5.16'
|
24
24
|
gem.add_dependency "blacklight-access_controls", '~> 0.6.0'
|
25
25
|
gem.add_dependency 'cancancan', '~> 1.8'
|
data/spec/spec_helper.rb
CHANGED
@@ -12,7 +12,7 @@ Hydra::Engine.config.autoload_paths.each { |path| $LOAD_PATH.unshift path }
|
|
12
12
|
require 'byebug' unless ENV['CI']
|
13
13
|
|
14
14
|
def coverage_needed?
|
15
|
-
ENV['COVERAGE'] || ENV['
|
15
|
+
ENV['COVERAGE'] || ENV['CI']
|
16
16
|
end
|
17
17
|
|
18
18
|
if RUBY_VERSION =~ /^1.9/ && coverage_needed?
|
@@ -23,7 +23,7 @@ describe "active_fedora/accessible_by" do
|
|
23
23
|
|
24
24
|
describe "#accsesible_by" do
|
25
25
|
it "should return objects readable by the ability" do
|
26
|
-
expect(ModsAsset.accessible_by(ability)).to
|
26
|
+
expect(ModsAsset.accessible_by(ability)).to contain_exactly(public_obj, editable_obj)
|
27
27
|
end
|
28
28
|
it "should return object editable by the ability" do
|
29
29
|
expect(ModsAsset.accessible_by(ability, :edit)).to eq [editable_obj]
|
@@ -19,6 +19,59 @@ describe Hydra::AccessControls::Embargoable do
|
|
19
19
|
let(:model) { TestModel.new }
|
20
20
|
subject { model }
|
21
21
|
|
22
|
+
describe 'an object under embargo/lease' do
|
23
|
+
before do
|
24
|
+
class ModelWithPersistence < ActiveFedora::Base
|
25
|
+
include Hydra::AccessControls::Embargoable
|
26
|
+
end
|
27
|
+
end
|
28
|
+
after { Object.send(:remove_const, :ModelWithPersistence) }
|
29
|
+
let(:original_date) { 7.days.from_now }
|
30
|
+
let(:updated_date) { 14.days.from_now }
|
31
|
+
subject { ModelWithPersistence.new }
|
32
|
+
context 'saved with a new embargo release date' do
|
33
|
+
it 'will persist the new date' do
|
34
|
+
subject.visibility_during_embargo = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
35
|
+
subject.visibility_after_embargo = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
36
|
+
subject.embargo_release_date = original_date
|
37
|
+
subject.save
|
38
|
+
|
39
|
+
# These next three lines are to verify the round-trip for saves.
|
40
|
+
persisted_object = subject.class.find(subject.id)
|
41
|
+
expect(persisted_object).to be_under_embargo
|
42
|
+
expect(persisted_object.embargo_release_date).to eq(original_date)
|
43
|
+
|
44
|
+
expect do
|
45
|
+
persisted_object.embargo_release_date = updated_date
|
46
|
+
persisted_object.save
|
47
|
+
end.to change { persisted_object.class.find(persisted_object.id).embargo_release_date }
|
48
|
+
.from(original_date)
|
49
|
+
.to(updated_date)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'saved with a new lease expiration date' do
|
54
|
+
it 'will persist the new date' do
|
55
|
+
subject.visibility_during_lease = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
56
|
+
subject.visibility_after_lease = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
57
|
+
subject.lease_expiration_date = original_date
|
58
|
+
subject.save
|
59
|
+
|
60
|
+
# These next three lines are to verify the round-trip for saves.
|
61
|
+
persisted_object = subject.class.find(subject.id)
|
62
|
+
expect(persisted_object).to be_active_lease
|
63
|
+
expect(persisted_object.lease_expiration_date).to eq(original_date)
|
64
|
+
|
65
|
+
expect do
|
66
|
+
persisted_object.lease_expiration_date = updated_date
|
67
|
+
persisted_object.save
|
68
|
+
end.to change { persisted_object.class.find(persisted_object.id).lease_expiration_date }
|
69
|
+
.from(original_date)
|
70
|
+
.to(updated_date)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
22
75
|
describe '#embargo_indexer_class' do
|
23
76
|
subject { model.embargo_indexer_class }
|
24
77
|
it { is_expected.to eq Hydra::AccessControls::EmbargoIndexer }
|
@@ -6,7 +6,7 @@ namespace "hydra-access" do
|
|
6
6
|
fcrepo_params = { port: 8986, verbose: true, managed: true,
|
7
7
|
no_jms: true, fcrepo_home_dir: 'fcrepo4-test-data' }
|
8
8
|
SolrWrapper.wrap(solr_params) do |solr|
|
9
|
-
solr.with_collection(name: 'hydra-test', dir: File.join(File.expand_path("../..", File.dirname(__FILE__)), "solr", "
|
9
|
+
solr.with_collection(name: 'hydra-test', dir: File.join(File.expand_path("../..", File.dirname(__FILE__)), "solr", "conf")) do
|
10
10
|
FcrepoWrapper.wrap(fcrepo_params) do
|
11
11
|
Rake::Task['spec'].invoke
|
12
12
|
end
|
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:
|
4
|
+
version: 11.0.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:
|
13
|
+
date: 2020-10-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -39,9 +39,6 @@ dependencies:
|
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: 10.0.0
|
42
|
-
- - "<"
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: '13'
|
45
42
|
type: :runtime
|
46
43
|
prerelease: false
|
47
44
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,9 +46,6 @@ dependencies:
|
|
49
46
|
- - ">="
|
50
47
|
- !ruby/object:Gem::Version
|
51
48
|
version: 10.0.0
|
52
|
-
- - "<"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '13'
|
55
49
|
- !ruby/object:Gem::Dependency
|
56
50
|
name: blacklight
|
57
51
|
requirement: !ruby/object:Gem::Requirement
|
@@ -217,7 +211,7 @@ files:
|
|
217
211
|
- spec/unit/with_depositor_spec.rb
|
218
212
|
- spec/validators/future_date_validator_spec.rb
|
219
213
|
- tasks/hydra-access-controls.rake
|
220
|
-
homepage:
|
214
|
+
homepage: https://github.com/samvera/hydra-head/tree/master/hydra-access-controls
|
221
215
|
licenses:
|
222
216
|
- APACHE-2.0
|
223
217
|
metadata: {}
|
@@ -236,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
236
230
|
- !ruby/object:Gem::Version
|
237
231
|
version: '0'
|
238
232
|
requirements: []
|
239
|
-
rubygems_version: 3.
|
233
|
+
rubygems_version: 3.1.2
|
240
234
|
signing_key:
|
241
235
|
specification_version: 4
|
242
236
|
summary: Access controls for project hydra
|