hydra-access-controls 12.0.0 → 12.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb6758e64e46375378c0ab402d42197ac1ed64af8f9ec87bda1ee603c2fa4e4e
|
4
|
+
data.tar.gz: 2e7f290acefb3924c5947e5ada34b54cdf0a64f3a127422c72cb5fdef8fe88c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80f663ea54a156cf6a5ded46a0aae98a1df9e8953ca0999fa56a8668b266cc855a4db8aa1933dd2989c4c5df9ea989146af1989089059640412a573417901d01
|
7
|
+
data.tar.gz: 299fffeb06237d336774894d209313e968173446276210821a42a896522c5a3d17ee0ae67c428c856405cab04a3246a820fc54bd7fce5b613ea328d27c69b6ff
|
@@ -5,8 +5,8 @@ module Hydra
|
|
5
5
|
include Hydra::AccessControls::WithAccessRight
|
6
6
|
|
7
7
|
included do
|
8
|
-
validates :lease_expiration_date, :'hydra/future_date' => true, if: :enforce_future_date_for_lease
|
9
|
-
validates :embargo_release_date, :'hydra/future_date' => true, if: :enforce_future_date_for_embargo
|
8
|
+
validates :lease_expiration_date, :'hydra/future_date' => true, if: :enforce_future_date_for_lease?, on: :create
|
9
|
+
validates :embargo_release_date, :'hydra/future_date' => true, if: :enforce_future_date_for_embargo?, on: :create
|
10
10
|
|
11
11
|
belongs_to :embargo, predicate: Hydra::ACL.hasEmbargo, class_name: 'Hydra::AccessControls::Embargo', autosave: true
|
12
12
|
belongs_to :lease, predicate: Hydra::ACL.hasLease, class_name: 'Hydra::AccessControls::Lease', autosave: true
|
@@ -41,7 +41,7 @@ module Hydra::AccessControls
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def agent_name
|
44
|
-
|
44
|
+
decode(parsed_agent.last)
|
45
45
|
end
|
46
46
|
|
47
47
|
def update(*)
|
@@ -80,7 +80,7 @@ module Hydra::AccessControls
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def build_agent_resource(prefix, name)
|
83
|
-
[Agent.new(::RDF::URI.new("#{prefix}##{
|
83
|
+
[Agent.new(::RDF::URI.new("#{prefix}##{encode(name)}"))]
|
84
84
|
end
|
85
85
|
|
86
86
|
def build_access(access)
|
@@ -96,5 +96,15 @@ module Hydra::AccessControls
|
|
96
96
|
raise ArgumentError, "Unknown access #{access.inspect}"
|
97
97
|
end
|
98
98
|
end
|
99
|
+
|
100
|
+
private
|
101
|
+
|
102
|
+
def encode(str)
|
103
|
+
URI::RFC2396_Parser.new.escape(str)
|
104
|
+
end
|
105
|
+
|
106
|
+
def decode(str)
|
107
|
+
URI::RFC2396_Parser.new.unescape(str)
|
108
|
+
end
|
99
109
|
end
|
100
110
|
end
|
@@ -83,9 +83,9 @@ describe Hydra::AccessControls::Embargoable do
|
|
83
83
|
end
|
84
84
|
|
85
85
|
describe 'validations' do
|
86
|
-
context "with dates" do
|
86
|
+
context "with past dates" do
|
87
87
|
subject { ModsAsset.new(lease_expiration_date: past_date, embargo_release_date: past_date) }
|
88
|
-
it "validates embargo_release_date and lease_expiration_date" do
|
88
|
+
it "validates embargo_release_date and lease_expiration_date on create" do
|
89
89
|
expect(subject).to_not be_valid
|
90
90
|
expect(subject.errors[:lease_expiration_date]).to eq ['Must be a future date']
|
91
91
|
expect(subject.errors[:embargo_release_date]).to eq ['Must be a future date']
|
@@ -47,17 +47,29 @@ describe Hydra::AccessControls::Permission do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
describe "URI escaping" do
|
50
|
-
let(:
|
51
|
-
let(:
|
50
|
+
let(:user_permission) { described_class.new(type: 'person', name: 'john doe', access: 'read') }
|
51
|
+
let(:user_permission2) { described_class.new(type: 'person', name: 'john%20doe', access: 'read') }
|
52
|
+
let(:user_permission3) { described_class.new(type: 'person', name: 'john+doe', access: 'read') }
|
53
|
+
let(:group_permission) { described_class.new(type: 'group', name: 'hydra devs', access: 'read') }
|
54
|
+
let(:group_permission2) { described_class.new(type: 'group', name: 'hydra%20devs', access: 'read') }
|
55
|
+
let(:group_permission3) { described_class.new(type: 'group', name: 'hydra+devs', access: 'read') }
|
52
56
|
|
53
57
|
it "should escape agent when building" do
|
54
|
-
expect(
|
55
|
-
expect(
|
58
|
+
expect(user_permission.agent.first.rdf_subject.to_s).to eq 'http://projecthydra.org/ns/auth/person#john%20doe'
|
59
|
+
expect(user_permission2.agent.first.rdf_subject.to_s).to eq 'http://projecthydra.org/ns/auth/person#john%2520doe'
|
60
|
+
expect(user_permission3.agent.first.rdf_subject.to_s).to eq 'http://projecthydra.org/ns/auth/person#john+doe'
|
61
|
+
expect(group_permission.agent.first.rdf_subject.to_s).to eq 'http://projecthydra.org/ns/auth/group#hydra%20devs'
|
62
|
+
expect(group_permission2.agent.first.rdf_subject.to_s).to eq 'http://projecthydra.org/ns/auth/group#hydra%2520devs'
|
63
|
+
expect(group_permission3.agent.first.rdf_subject.to_s).to eq 'http://projecthydra.org/ns/auth/group#hydra+devs'
|
56
64
|
end
|
57
65
|
|
58
66
|
it "should unescape agent when parsing" do
|
59
|
-
expect(
|
60
|
-
expect(
|
67
|
+
expect(user_permission.agent_name).to eq 'john doe'
|
68
|
+
expect(user_permission2.agent_name).to eq 'john%20doe'
|
69
|
+
expect(user_permission3.agent_name).to eq 'john+doe'
|
70
|
+
expect(group_permission.agent_name).to eq 'hydra devs'
|
71
|
+
expect(group_permission2.agent_name).to eq 'hydra%20devs'
|
72
|
+
expect(group_permission3.agent_name).to eq 'hydra+devs'
|
61
73
|
end
|
62
74
|
|
63
75
|
context 'with a User instance passed as :name argument' do
|
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: 12.0.
|
4
|
+
version: 12.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: 2021-05-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -223,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
223
|
- !ruby/object:Gem::Version
|
224
224
|
version: '0'
|
225
225
|
requirements: []
|
226
|
-
rubygems_version: 3.1.
|
226
|
+
rubygems_version: 3.1.4
|
227
227
|
signing_key:
|
228
228
|
specification_version: 4
|
229
229
|
summary: Access controls for project hydra
|