hydra-access-controls 11.0.6 → 11.0.7

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
  SHA256:
3
- metadata.gz: 9a286d397032ccf1ba4e2df1ea63470a75184cc7f7f98ed053663d33f593683c
4
- data.tar.gz: a4c7de8fa18771222b5710bb954ad59c3011420ed7f3b02bc241105559712962
3
+ metadata.gz: c5b5acef420272359ea5685e15459ecbc780955e7ebf3b42d5b65bc1356fcf39
4
+ data.tar.gz: 32f0de6835fad597e00eb8f2bccfb4ef671a56c62775e06f718a979793bc6792
5
5
  SHA512:
6
- metadata.gz: 9647db12b9efdac6049bc6fd770e200b4e9f28e1a8d5e5f8e357f8a8020d5390bd68eb0cc03bda037dc0a4d1db89048dcba5c9db387086d98e0474d770302a81
7
- data.tar.gz: cffcd8456b9e636e4e4957fc02a1709c3fad8764658205ea851bebdc7109bb2f68a7ea8e56f8343bcce33301446dbe29daa02fe47582067291b3894a2108f0c4
6
+ metadata.gz: 85dc230ed0b72e12f330222f4a1082d4edb37764cba991dcf21a6f1e3db31d8db1b5bc1c1d2036ae09cb967055934528d9396a2d85a9ecb8b6f5fd88ded3c6bc
7
+ data.tar.gz: 605d7270804ff8f4251b1f5901f4b47a0a00dd4e5fe85edfe2045ab9f4fecc002c51839ac8986bb4d0e27e4d296fd4fdffc0ec5a9bbf381c62f1cc5e41e0e24f
@@ -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
- URI.decode(parsed_agent.last)
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}##{URI.encode(name)}"))]
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(:permission) { described_class.new(type: 'person', name: 'john doe', access: 'read') }
51
- let(:permission2) { described_class.new(type: 'group', name: 'hydra devs', access: 'read') }
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(permission.agent.first.rdf_subject.to_s).to eq 'http://projecthydra.org/ns/auth/person#john%20doe'
55
- expect(permission2.agent.first.rdf_subject.to_s).to eq 'http://projecthydra.org/ns/auth/group#hydra%20devs'
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(permission.agent_name).to eq 'john doe'
60
- expect(permission2.agent_name).to eq 'hydra devs'
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: 11.0.6
4
+ version: 11.0.7
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: 2021-03-31 00:00:00.000000000 Z
13
+ date: 2021-05-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport