hydra-access-controls 10.6.2 → 11.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.
- 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
|