hydra-head 4.0.3 → 4.1.0
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.
- data/.gitignore +1 -0
- data/HISTORY.textile +17 -2
- data/app/assets/stylesheets/hydra/html_refactor.css +3 -30
- data/app/assets/stylesheets/hydra/styles.css +6 -64
- data/app/controllers/downloads_controller.rb +1 -1
- data/app/controllers/hydra/assets_controller.rb +10 -1
- data/app/controllers/hydra/contributors_controller.rb +15 -1
- data/app/controllers/hydra/file_assets_controller.rb +1 -1
- data/app/controllers/hydra/permissions_controller.rb +14 -0
- data/app/helpers/hydra/article_metadata_helper_behavior.rb +14 -1
- data/app/helpers/hydra/downloads_helper_behavior.rb +6 -0
- data/app/helpers/hydra/facets_helper_behavior.rb +7 -0
- data/app/helpers/hydra/generic_content_objects_helper_behavior.rb +6 -0
- data/app/helpers/hydra/hydra_assets_helper_behavior.rb +10 -0
- data/app/helpers/hydra/hydra_fedora_metadata_helper_behavior.rb +31 -0
- data/app/helpers/hydra/hydra_helper_behavior.rb +18 -7
- data/app/helpers/hydra/hydra_uploader_helper_behavior.rb +5 -0
- data/app/helpers/hydra/inline_editable_metadata_helper_behavior.rb +6 -0
- data/app/helpers/hydra/javascript_includes_helper_behavior.rb +7 -0
- data/app/helpers/hydra/personalization_helper_behavior.rb +5 -0
- data/app/helpers/hydra/release_process_helper_behavior.rb +5 -0
- data/app/models/generic_content.rb +3 -0
- data/app/models/generic_image.rb +3 -0
- data/app/models/superuser.rb +4 -2
- data/app/models/user_attribute.rb +7 -2
- data/app/views/_add_assets_links.html.erb +4 -4
- data/app/views/catalog/_index_partials/_default.html.erb +2 -2
- data/app/views/catalog/show.html.erb +1 -1
- data/app/views/generic_contents/_index.html.erb +2 -2
- data/app/views/generic_images/_edit.html.erb +1 -1
- data/app/views/generic_images/_index.html.erb +2 -2
- data/app/views/hydra/file_assets/_file_assets_form.html.erb +1 -1
- data/app/views/hydra/file_assets/_index.html.erb +2 -2
- data/app/views/hydra/file_assets/_result.html.erb +1 -1
- data/app/views/layouts/hydra-head.html.erb +4 -1
- data/app/views/mods_assets/_index_list.html.erb +1 -1
- data/app/views/mods_assets/_index_table.html.erb +2 -2
- data/app/views/mods_assets/_show.html.erb +1 -1
- data/app/views/mods_assets/_show_file_assets.html.erb +1 -1
- data/config/jetty.yml +1 -1
- data/config/locales/hydra.en.yml +7 -0
- data/config/solr.yml +1 -1
- data/config/solr_mappings.yml +2 -2
- data/hydra-head.gemspec +5 -4
- data/lib/generators/hydra/head_generator.rb +6 -5
- data/lib/generators/hydra/templates/config/fedora.yml +1 -1
- data/lib/generators/hydra/templates/config/solr.yml +1 -1
- data/lib/hydra-head/version.rb +1 -1
- data/lib/hydra.rb +13 -11
- data/lib/hydra/assets.rb +5 -135
- data/lib/hydra/catalog.rb +6 -44
- data/lib/hydra/controller.rb +10 -27
- data/lib/hydra/controller/assets_controller_behavior.rb +142 -0
- data/lib/hydra/controller/catalog_controller_behavior.rb +56 -0
- data/lib/hydra/controller/controller_behavior.rb +59 -0
- data/lib/hydra/controller/file_assets_behavior.rb +142 -0
- data/lib/hydra/controller/repository_controller_behavior.rb +119 -0
- data/lib/hydra/controller/upload_behavior.rb +139 -0
- data/lib/hydra/file_assets.rb +3 -138
- data/lib/hydra/file_assets_helper.rb +6 -133
- data/lib/hydra/generic_content.rb +15 -0
- data/lib/hydra/generic_image.rb +10 -0
- data/lib/hydra/global_configurable.rb +46 -0
- data/lib/hydra/model_methods.rb +3 -3
- data/lib/hydra/model_mixins.rb +1 -1
- data/lib/hydra/model_mixins/solr_document_extension.rb +24 -0
- data/lib/hydra/repository_controller.rb +4 -95
- data/lib/hydra/ui/controller.rb +1 -2
- data/lib/hydra/user.rb +13 -1
- data/lib/railties/hydra-fixtures.rake +1 -1
- data/tasks/hydra-head.rake +2 -0
- data/{app/models → test_support/etc}/common_metadata_asset.rb +1 -2
- data/test_support/features/mods_asset_show.feature +1 -1
- data/test_support/features/support/env.rb +2 -0
- data/test_support/features/support/paths.rb +2 -0
- data/test_support/spec/controllers/catalog_controller_spec.rb +8 -0
- data/test_support/spec/controllers/catalog_controller_viewing_context_spec.rb +10 -1
- data/test_support/spec/controllers/catalog_valid_html_spec.rb +8 -0
- data/test_support/spec/controllers/contributors_controller_spec.rb +10 -0
- data/test_support/spec/controllers/file_assets_controller_spec.rb +15 -3
- data/test_support/spec/controllers/hydra-assets_controller_spec.rb +11 -1
- data/test_support/spec/controllers/hydra_controller_spec.rb +15 -4
- data/test_support/spec/controllers/permissions_controller_spec.rb +8 -0
- data/test_support/spec/helpers/access_controls_enforcement_spec.rb +1 -2
- data/test_support/spec/helpers/file_assets_helper_spec.rb +1 -1
- data/test_support/spec/helpers/generic_content_objects_helper_spec.rb +10 -1
- data/test_support/spec/helpers/hydra-repository_controller_spec.rb +1 -1
- data/test_support/spec/helpers/hydra_assets_helper_spec.rb +8 -0
- data/test_support/spec/helpers/hydra_fedora_metadata_helper_spec.rb +11 -0
- data/test_support/spec/helpers/hydra_helper_spec.rb +18 -0
- data/test_support/spec/helpers/hydra_model_methods_spec.rb +0 -12
- data/test_support/spec/helpers/hydra_uploader_helper_spec.rb +8 -0
- data/test_support/spec/helpers/javascript_includes_helper_spec.rb +9 -1
- data/test_support/spec/lib/catalog_spec.rb +10 -3
- data/test_support/spec/lib/global_configurable_spec.rb +98 -0
- data/test_support/spec/lib/model_methods_spec.rb +29 -0
- data/test_support/spec/models/generic_content_spec.rb +11 -0
- data/test_support/spec/models/generic_image_spec.rb +15 -0
- data/test_support/spec/models/user_spec.rb +25 -0
- metadata +39 -37
- data/app/models/ability.rb +0 -5
- data/app/models/hydra/ability.rb +0 -137
- data/app/models/hydra/datastream/common_mods_index_methods.rb +0 -47
- data/app/models/hydra/datastream/mods_article.rb +0 -530
- data/app/models/hydra/datastream/mods_dataset.rb +0 -173
- data/app/models/hydra/datastream/mods_generic_content.rb +0 -498
- data/app/models/hydra/datastream/mods_image.rb +0 -497
- data/app/models/hydra/datastream/rights_metadata.rb +0 -191
- data/app/models/hydra/role_mapper_behavior.rb +0 -33
- data/app/models/role_mapper.rb +0 -6
- data/lib/hydra/access_controls_enforcement.rb +0 -237
- data/lib/hydra/access_controls_evaluation.rb +0 -38
- data/lib/hydra/common_mods_index_methods.rb +0 -46
- data/lib/hydra/model_mixins/mods_object.rb +0 -17
- data/lib/hydra/model_mixins/rights_metadata.rb +0 -357
- data/lib/hydra/mods_article.rb +0 -535
- data/lib/hydra/mods_dataset.rb +0 -177
- data/lib/hydra/mods_generic_content.rb +0 -500
- data/lib/hydra/mods_image.rb +0 -500
- data/lib/uva/mods_index_methods.rb +0 -30
- data/test_support/spec/lib/common_mods_index_methods_spec.rb +0 -26
- data/test_support/spec/models/ability_spec.rb +0 -40
- data/test_support/spec/models/hydra_rights_metadata_spec.rb +0 -175
- data/test_support/spec/models/role_mapper_spec.rb +0 -22
- data/test_support/spec/unit/rights_metadata_spec.rb +0 -80
@@ -1,30 +0,0 @@
|
|
1
|
-
# @deprecated Leftover from Hydrangea; will be removed in release 5.x
|
2
|
-
module Uva
|
3
|
-
module ModsIndexMethods
|
4
|
-
|
5
|
-
def self.included(base)
|
6
|
-
ActiveSupport::Deprecation.warn("Uva::ModsIndexMethods has been deprecated and its functionality has been encorporated into Hydra::Datastream::ModsArticle")
|
7
|
-
end
|
8
|
-
|
9
|
-
# extracts the last_name##full_name##computing_id to be used by home view
|
10
|
-
def extract_person_full_names_and_computing_ids
|
11
|
-
names = {}
|
12
|
-
self.find_by_terms(:person).each do |person|
|
13
|
-
name_parts = person.children.inject({}) do |hash,child|
|
14
|
-
hash[child.get_attribute(:type)] = child.text if ["family","given"].include? child.get_attribute(:type)
|
15
|
-
hash["computing_id"] = child.text if child.name == 'computing_id'
|
16
|
-
hash
|
17
|
-
end
|
18
|
-
if name_parts.length == 3 and person.search(:roleTerm).children.text.include?("Author")
|
19
|
-
if name_parts["family"].blank? && name_parts["given"].blank? && name_parts["computing_id"].blank?
|
20
|
-
value = "Unknown Author"
|
21
|
-
else
|
22
|
-
value = "#{name_parts["family"]}, #{name_parts["given"]} (#{name_parts["computing_id"]})"
|
23
|
-
end
|
24
|
-
::Solrizer::Extractor.insert_solr_field_value(names, "person_full_name_cid_facet", value) if name_parts.length == 3
|
25
|
-
end
|
26
|
-
end
|
27
|
-
names
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# Need way to find way to stub current_user and RoleMapper in order to run these tests
|
2
|
-
require File.expand_path( File.join( File.dirname(__FILE__),'..','spec_helper') )
|
3
|
-
|
4
|
-
|
5
|
-
describe Hydra::Datastream::CommonModsIndexMethods do
|
6
|
-
describe "extract_person_full_names" do
|
7
|
-
it "should return an array of Solr::Field objects for :person_full_name_facet" do
|
8
|
-
ma = ModsAsset.find("hydrangea:fixture_mods_article1")
|
9
|
-
full_names = ma.datastreams["descMetadata"].extract_person_full_names
|
10
|
-
full_names.should be_kind_of Hash
|
11
|
-
full_names["person_full_name_facet"].should == ["FAMILY NAME, GIVEN NAMES", "Lacks, Henrietta"]
|
12
|
-
end
|
13
|
-
end
|
14
|
-
describe "extract_person_organizations" do
|
15
|
-
it "should return an array of Solr::Field objects for :mods_organization_facet" do
|
16
|
-
orgs = ModsAsset.find("hydrangea:fixture_mods_article1").datastreams["descMetadata"].extract_person_organizations
|
17
|
-
orgs.should be_kind_of Hash
|
18
|
-
orgs["mods_organization_facet"].should be_kind_of Array
|
19
|
-
orgs["mods_organization_facet"].length.should == 2
|
20
|
-
orgs["mods_organization_facet"].first.should == "FACULTY, UNIVERSITY"
|
21
|
-
orgs["mods_organization_facet"].last.should == "Baltimore"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
|
3
|
-
describe Ability do
|
4
|
-
it "should call custom_permissions" do
|
5
|
-
Ability.any_instance.expects(:custom_permissions)
|
6
|
-
subject = Ability.new(nil)
|
7
|
-
subject.can?(:delete, 7)
|
8
|
-
end
|
9
|
-
|
10
|
-
context "for a not-signed in user" do
|
11
|
-
subject { Ability.new(nil) }
|
12
|
-
it "should be able to read objects that are public" do
|
13
|
-
public_object = ModsAsset.new
|
14
|
-
public_object.rightsMetadata.update_permissions("group"=>{'public'=>'read'})
|
15
|
-
public_object.save
|
16
|
-
subject.can?(:read, public_object).should be_true
|
17
|
-
end
|
18
|
-
it "should not be able to read objects that are registered" do
|
19
|
-
registered_object = ModsAsset.new
|
20
|
-
registered_object.rightsMetadata.update_permissions("group"=>{'registered'=>'read'})
|
21
|
-
registered_object.save
|
22
|
-
subject.can?(:read, registered_object).should_not be_true
|
23
|
-
end
|
24
|
-
end
|
25
|
-
context "for a signed in user" do
|
26
|
-
subject { Ability.new(FactoryGirl.create(:user)) }
|
27
|
-
it "should be able to read objects that are public" do
|
28
|
-
public_object = ModsAsset.new
|
29
|
-
public_object.rightsMetadata.update_permissions("group"=>{'public'=>'read'})
|
30
|
-
public_object.save
|
31
|
-
subject.can?(:read, public_object).should be_true
|
32
|
-
end
|
33
|
-
it "should be able to read objects that are registered" do
|
34
|
-
registered_object = ModsAsset.new
|
35
|
-
registered_object.rightsMetadata.update_permissions("group"=>{'registered'=>'read'})
|
36
|
-
registered_object.save
|
37
|
-
subject.can?(:read, registered_object).should be_true
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,175 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
require "nokogiri"
|
3
|
-
|
4
|
-
describe Hydra::Datastream::RightsMetadata do
|
5
|
-
|
6
|
-
before(:each) do
|
7
|
-
# The way RubyDora loads objects prevents us from stubbing the fedora connection :(
|
8
|
-
# ActiveFedora::RubydoraConnection.stubs(:instance).returns(stub_everything())
|
9
|
-
obj = ActiveFedora::Base.new
|
10
|
-
@sample = Hydra::Datastream::RightsMetadata.new(obj.inner_object, nil)
|
11
|
-
@sample.stubs(:content).returns('')
|
12
|
-
end
|
13
|
-
|
14
|
-
describe "permissions" do
|
15
|
-
describe "setter" do
|
16
|
-
it "should create/update/delete permissions for the given user/group" do
|
17
|
-
@sample.class.terminology.xpath_for(:access, :person, "person_123").should == '//oxns:access/oxns:machine/oxns:person[contains(., "person_123")]'
|
18
|
-
|
19
|
-
person_123_perms_xpath = @sample.class.terminology.xpath_for(:access, :person, "person_123")
|
20
|
-
group_zzz_perms_xpath = @sample.class.terminology.xpath_for(:access, :group, "group_zzz")
|
21
|
-
|
22
|
-
@sample.find_by_terms(person_123_perms_xpath).should be_empty
|
23
|
-
@sample.permissions({"person"=>"person_123"}, "edit").should == "edit"
|
24
|
-
@sample.permissions({"group"=>"group_zzz"}, "edit").should == "edit"
|
25
|
-
|
26
|
-
@sample.find_by_terms(person_123_perms_xpath).first.ancestors("access").first.attributes["type"].text.should == "edit"
|
27
|
-
@sample.find_by_terms(group_zzz_perms_xpath).first.ancestors("access").first.attributes["type"].text.should == "edit"
|
28
|
-
|
29
|
-
@sample.permissions({"person"=>"person_123"}, "read")
|
30
|
-
@sample.permissions({"group"=>"group_zzz"}, "read")
|
31
|
-
@sample.find_by_terms(person_123_perms_xpath).length.should == 1
|
32
|
-
|
33
|
-
@sample.find_by_terms(person_123_perms_xpath).first.ancestors("access").first.attributes["type"].text.should == "read"
|
34
|
-
@sample.find_by_terms(group_zzz_perms_xpath).first.ancestors("access").first.attributes["type"].text.should == "read"
|
35
|
-
|
36
|
-
@sample.permissions({"person"=>"person_123"}, "none").should == "none"
|
37
|
-
@sample.permissions({"group"=>"group_zzz"}, "none").should == "none"
|
38
|
-
@sample.find_by_terms(person_123_perms_xpath).should be_empty
|
39
|
-
@sample.find_by_terms(person_123_perms_xpath).should be_empty
|
40
|
-
end
|
41
|
-
it "should remove existing permissions (leaving only one permission level per user/group)" do
|
42
|
-
person_123_perms_xpath = @sample.class.terminology.xpath_for(:access, :person, "person_123")
|
43
|
-
group_zzz_perms_xpath = @sample.class.terminology.xpath_for(:access, :group, "group_zzz")
|
44
|
-
|
45
|
-
@sample.find_by_terms(person_123_perms_xpath).length.should == 0
|
46
|
-
@sample.find_by_terms(group_zzz_perms_xpath).length.should == 0
|
47
|
-
@sample.permissions({"person"=>"person_123"}, "read")
|
48
|
-
@sample.permissions({"group"=>"group_zzz"}, "read")
|
49
|
-
@sample.find_by_terms(person_123_perms_xpath).length.should == 1
|
50
|
-
@sample.find_by_terms(group_zzz_perms_xpath).length.should == 1
|
51
|
-
|
52
|
-
@sample.permissions({"person"=>"person_123"}, "edit")
|
53
|
-
@sample.permissions({"group"=>"group_zzz"}, "edit")
|
54
|
-
@sample.find_by_terms(person_123_perms_xpath).length.should == 1
|
55
|
-
@sample.find_by_terms(group_zzz_perms_xpath).length.should == 1
|
56
|
-
end
|
57
|
-
it "should not impact other users permissions" do
|
58
|
-
@sample.permissions({"person"=>"person_123"}, "read")
|
59
|
-
@sample.permissions({"person"=>"person_789"}, "edit")
|
60
|
-
|
61
|
-
@sample.permissions({"person"=>"person_123"}).should == "read"
|
62
|
-
@sample.permissions({"person"=>"person_456"}, "read")
|
63
|
-
@sample.permissions({"person"=>"person_123"}).should == "read"
|
64
|
-
@sample.permissions({"person"=>"person_456"}).should == "read"
|
65
|
-
@sample.permissions({"person"=>"person_789"}).should == "edit"
|
66
|
-
|
67
|
-
|
68
|
-
end
|
69
|
-
end
|
70
|
-
describe "getter" do
|
71
|
-
it "should return permissions level for the given user/group" do
|
72
|
-
@sample.permissions({"person"=>"person_123"}, "edit")
|
73
|
-
@sample.permissions({"group"=>"group_zzz"}, "discover")
|
74
|
-
@sample.permissions({"person"=>"person_123"}).should == "edit"
|
75
|
-
@sample.permissions({"group"=>"group_zzz"}).should == "discover"
|
76
|
-
@sample.permissions({"group"=>"foo_people"}).should == "none"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
describe "groups" do
|
81
|
-
it "should return a hash of all groups with permissions set, along with their permission levels" do
|
82
|
-
@sample.permissions({"group"=>"group_zzz"}, "edit")
|
83
|
-
@sample.permissions({"group"=>"public"}, "discover")
|
84
|
-
|
85
|
-
#@sample.groups.should == {"group_zzz"=>"edit", "public"=>"discover"}
|
86
|
-
@sample.groups.should == {"public"=>"discover", "group_zzz"=>"edit"}
|
87
|
-
end
|
88
|
-
end
|
89
|
-
describe "individuals" do
|
90
|
-
it "should return a hash of all individuals with permissions set, along with their permission levels" do
|
91
|
-
@sample.permissions({"person"=>"person_123"}, "read")
|
92
|
-
@sample.permissions({"person"=>"person_456"}, "edit")
|
93
|
-
@sample.individuals.should == {"person_123"=>"read", "person_456"=>"edit"}
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
describe "update_permissions" do
|
98
|
-
it "should accept a hash of groups and persons, updating their permissions accordingly" do
|
99
|
-
@sample.expects(:permissions).with({"group" => "group1"}, "discover")
|
100
|
-
@sample.expects(:permissions).with({"group" => "group2"}, "edit")
|
101
|
-
@sample.expects(:permissions).with({"person" => "person1"}, "read")
|
102
|
-
@sample.expects(:permissions).with({"person" => "person2"}, "discover")
|
103
|
-
|
104
|
-
@sample.update_permissions( {"group"=>{"group1"=>"discover","group2"=>"edit"}, "person"=>{"person1"=>"read","person2"=>"discover"}} )
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
describe "update_indexed_attributes" do
|
109
|
-
it "should update the declared properties" do
|
110
|
-
@sample.find_by_terms(*[:edit_access, :person]).length.should == 0
|
111
|
-
@sample.update_values([:edit_access, :person]=>"user id").should == {"edit_access_person"=>{"0"=>"user id"}}
|
112
|
-
@sample.find_by_terms(*[:edit_access, :person]).length.should == 1
|
113
|
-
@sample.find_by_terms(*[:edit_access, :person]).first.text.should == "user id"
|
114
|
-
end
|
115
|
-
end
|
116
|
-
describe "to_solr" do
|
117
|
-
it "should populate solr doc with the correct fields" do
|
118
|
-
params = {[:edit_access, :person]=>"Lil Kim", [:edit_access, :group]=>["group1","group2"], [:discover_access, :group]=>["public"],[:discover_access, :person]=>["Joe Schmoe"]}
|
119
|
-
@sample.update_values(params)
|
120
|
-
solr_doc = @sample.to_solr
|
121
|
-
|
122
|
-
solr_doc["edit_access_person_t"].should == ["Lil Kim"]
|
123
|
-
solr_doc["edit_access_group_t"].sort.should == ["group1", "group2"]
|
124
|
-
solr_doc["discover_access_person_t"].should == ["Joe Schmoe"]
|
125
|
-
solr_doc["discover_access_group_t"].should == ["public"]
|
126
|
-
end
|
127
|
-
it "should solrize fixture content correctly" do
|
128
|
-
fixture_xml = Nokogiri::XML::Document.parse( File.new(File.join( File.dirname(__FILE__), "../../fixtures/hydrangea_fixture_mods_article1.foxml.xml") ))
|
129
|
-
fixture_rights = fixture_xml.xpath("//foxml:datastream[@ID='rightsMetadata']/foxml:datastreamVersion[last()]/foxml:xmlContent", {'foxml'=>"info:fedora/fedora-system:def/foxml#"}).first.to_xml
|
130
|
-
lsample = Hydra::Datastream::RightsMetadata.new(nil, nil)
|
131
|
-
lsample.content = fixture_rights
|
132
|
-
# lsample.expects(:content).returns('')
|
133
|
-
lsample = Hydra::Datastream::RightsMetadata.from_xml(fixture_rights, lsample)
|
134
|
-
solr_doc = lsample.to_solr
|
135
|
-
solr_doc["edit_access_person_t"].should == ["researcher1"]
|
136
|
-
solr_doc["edit_access_group_t"].should == ["archivist"]
|
137
|
-
solr_doc["read_access_group_t"].should == ["public"]
|
138
|
-
solr_doc["discover_access_group_t"].should == ["public"]
|
139
|
-
end
|
140
|
-
end
|
141
|
-
describe "embargo_release_date=" do
|
142
|
-
it "should update the appropriate node with the value passed" do
|
143
|
-
@sample.embargo_release_date=("2010-12-01")
|
144
|
-
@sample.embargo_release_date.should == "2010-12-01"
|
145
|
-
end
|
146
|
-
it "should only accept valid date values" do
|
147
|
-
|
148
|
-
end
|
149
|
-
end
|
150
|
-
describe "embargo_release_date" do
|
151
|
-
it "should return solr formatted date" do
|
152
|
-
@sample.embargo_release_date=("2010-12-01")
|
153
|
-
@sample.embargo_release_date(:format=>:solr_date).should == "2010-12-01T23:59:59Z"
|
154
|
-
end
|
155
|
-
|
156
|
-
# this test was returning '' under 1.9 and returning nil under ree and 1.8.7
|
157
|
-
it "should not return anything if the date is empty string" do
|
158
|
-
@sample.update_values({[:embargo,:machine,:date]=>''})
|
159
|
-
@sample.embargo_release_date(:format=>:solr_date).should be_blank
|
160
|
-
end
|
161
|
-
end
|
162
|
-
describe "under_embargo?" do
|
163
|
-
it "should return true if the current date is before the embargo release date" do
|
164
|
-
@sample.embargo_release_date=Date.today+1.month
|
165
|
-
@sample.under_embargo?.should be_true
|
166
|
-
end
|
167
|
-
it "should return false if the current date is after the embargo release date" do
|
168
|
-
@sample.embargo_release_date=Date.today-1.month
|
169
|
-
@sample.under_embargo?.should be_false
|
170
|
-
end
|
171
|
-
it "should return false if there is no embargo date" do
|
172
|
-
@sample.under_embargo?.should be_false
|
173
|
-
end
|
174
|
-
end
|
175
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
|
3
|
-
describe RoleMapper do
|
4
|
-
|
5
|
-
it "should define the 4 roles" do
|
6
|
-
RoleMapper.role_names.sort.should == %w(admin_policy_object_editor archivist donor patron researcher)
|
7
|
-
end
|
8
|
-
it "should quer[iy]able for roles for a given user" do
|
9
|
-
RoleMapper.roles('leland_himself@example.com').sort.should == ['archivist', 'donor', 'patron']
|
10
|
-
RoleMapper.roles('archivist2@example.com').should == ['archivist']
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should return an empty array if there are no roles" do
|
14
|
-
RoleMapper.roles('zeus@olympus.mt').empty?.should == true
|
15
|
-
end
|
16
|
-
it "should know who is what" do
|
17
|
-
RoleMapper.whois('archivist').sort.should == %w(archivist1@example.com archivist2@example.com leland_himself@example.com)
|
18
|
-
RoleMapper.whois('salesman').empty?.should == true
|
19
|
-
RoleMapper.whois('admin_policy_object_editor').sort.should == %w(archivist1@example.com)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
@@ -1,80 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
|
3
|
-
describe Hydra::ModelMixins::RightsMetadata do
|
4
|
-
subject { ModsAsset.new }
|
5
|
-
it "should have a set of permissions" do
|
6
|
-
subject.discover_groups=['group1', 'group2']
|
7
|
-
subject.edit_users=['user1']
|
8
|
-
subject.read_users=['user2', 'user3']
|
9
|
-
subject.permissions.should include({:type=>"group", :access=>"discover", :name=>"group1"},
|
10
|
-
{:type=>"group", :access=>"discover", :name=>"group2"},
|
11
|
-
{:type=>"user", :access=>"read", :name=>"user2"},
|
12
|
-
{:type=>"user", :access=>"read", :name=>"user3"},
|
13
|
-
{:type=>"user", :access=>"edit", :name=>"user1"})
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "updating permissions" do
|
17
|
-
it "should create new group permissions" do
|
18
|
-
subject.permissions = [{:name=>'group1', :access=>'discover', :type=>'group'}]
|
19
|
-
subject.permissions.should == [{:type=>'group', :access=>'discover', :name=>'group1'}]
|
20
|
-
end
|
21
|
-
it "should create new user permissions" do
|
22
|
-
subject.permissions = [{:name=>'user1', :access=>'discover', :type=>'user'}]
|
23
|
-
subject.permissions.should == [{:type=>'user', :access=>'discover', :name=>'user1'}]
|
24
|
-
end
|
25
|
-
it "should not replace existing groups" do
|
26
|
-
subject.permissions = [{:name=>'group1', :access=>'discover', :type=>'group'}]
|
27
|
-
subject.permissions = [{:name=>'group2', :access=>'discover', :type=>'group'}]
|
28
|
-
subject.permissions.should == [{:type=>'group', :access=>'discover', :name=>'group1'},
|
29
|
-
{:type=>'group', :access=>'discover', :name=>'group2'}]
|
30
|
-
end
|
31
|
-
it "should not replace existing users" do
|
32
|
-
subject.permissions = [{:name=>'user1', :access=>'discover', :type=>'user'}]
|
33
|
-
subject.permissions = [{:name=>'user2', :access=>'discover', :type=>'user'}]
|
34
|
-
subject.permissions.should == [{:type=>'user', :access=>'discover', :name=>'user1'},
|
35
|
-
{:type=>'user', :access=>'discover', :name=>'user2'}]
|
36
|
-
end
|
37
|
-
it "should update permissions on existing users" do
|
38
|
-
subject.permissions = [{:name=>'user1', :access=>'discover', :type=>'user'}]
|
39
|
-
subject.permissions = [{:name=>'user1', :access=>'edit', :type=>'user'}]
|
40
|
-
subject.permissions.should == [{:type=>'user', :access=>'edit', :name=>'user1'}]
|
41
|
-
end
|
42
|
-
it "should update permissions on existing groups" do
|
43
|
-
subject.permissions = [{:name=>'group1', :access=>'discover', :type=>'group'}]
|
44
|
-
subject.permissions = [{:name=>'group1', :access=>'edit', :type=>'group'}]
|
45
|
-
subject.permissions.should == [{:type=>'group', :access=>'edit', :name=>'group1'}]
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
context "with rightsMetadata" do
|
51
|
-
before do
|
52
|
-
subject.rightsMetadata.update_permissions("person"=>{"person1"=>"read","person2"=>"discover"}, "group"=>{'group-6' => 'read', "group-7"=>'read', 'group-8'=>'edit'})
|
53
|
-
subject.save
|
54
|
-
end
|
55
|
-
it "should have read groups accessor" do
|
56
|
-
subject.read_groups.should == ['group-6', 'group-7']
|
57
|
-
end
|
58
|
-
it "should have read groups string accessor" do
|
59
|
-
subject.read_groups_string.should == 'group-6, group-7'
|
60
|
-
end
|
61
|
-
it "should have read groups writer" do
|
62
|
-
subject.read_groups = ['group-2', 'group-3']
|
63
|
-
subject.rightsMetadata.groups.should == {'group-2' => 'read', 'group-3'=>'read', 'group-8' => 'edit'}
|
64
|
-
subject.rightsMetadata.individuals.should == {"person1"=>"read","person2"=>"discover"}
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should have read groups string writer" do
|
68
|
-
subject.read_groups_string = 'umg/up.dlt.staff, group-3'
|
69
|
-
subject.rightsMetadata.groups.should == {'umg/up.dlt.staff' => 'read', 'group-3'=>'read', 'group-8' => 'edit'}
|
70
|
-
subject.rightsMetadata.individuals.should == {"person1"=>"read","person2"=>"discover"}
|
71
|
-
end
|
72
|
-
it "should only revoke eligible groups" do
|
73
|
-
subject.set_read_groups(['group-2', 'group-3'], ['group-6'])
|
74
|
-
# 'group-7' is not eligible to be revoked
|
75
|
-
subject.rightsMetadata.groups.should == {'group-2' => 'read', 'group-3'=>'read', 'group-7' => 'read', 'group-8' => 'edit'}
|
76
|
-
subject.rightsMetadata.individuals.should == {"person1"=>"read","person2"=>"discover"}
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|