hydra-head 3.0.1 → 3.1.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +54 -20
- data/HISTORY.textile +0 -7
- data/app/controllers/assets_controller.rb +1 -2
- data/app/controllers/contributors_controller.rb +2 -2
- data/app/controllers/downloads_controller.rb +1 -3
- data/app/controllers/file_assets_controller.rb +2 -4
- data/app/controllers/generic_content_objects_controller.rb +1 -2
- data/app/controllers/get_controller.rb +1 -3
- data/app/controllers/permissions_controller.rb +14 -28
- data/app/models/file_asset.rb +6 -2
- data/app/views/catalog/_edit_partials/_default.html.erb +5 -5
- data/app/views/contributors/_index.html.erb +1 -1
- data/app/views/generic_content_objects/_show_description.html.erb +3 -3
- data/app/views/mods_assets/_publication_form.html.erb +2 -2
- data/app/views/mods_assets/_show_contributors.html.erb +4 -4
- data/app/views/mods_assets/_show_description.html.erb +4 -4
- data/app/views/mods_assets/_show_publication.html.erb +2 -2
- data/app/views/permissions/_edit_person_permissions.html.erb +1 -1
- data/app/views/permissions/_index.html.erb +2 -2
- data/hydra-head.gemspec +3 -4
- data/lib/generators/hydra/head_generator.rb +2 -3
- data/lib/generators/hydra/templates/config/initializers/action_dispatch_http_upload_monkey_patch.rb +12 -0
- data/lib/generators/hydra/templates/config/initializers/blacklight_config.rb +0 -7
- data/lib/generators/hydra/templates/solr_conf/conf/schema.xml +1 -7
- data/lib/generators/hydra/templates/solr_conf/conf/solrconfig.xml +55 -117
- data/lib/hydra/access_controls_enforcement.rb +5 -47
- data/lib/hydra/catalog.rb +1 -1
- data/lib/hydra/common_mods_index_methods.rb +0 -1
- data/lib/hydra/file_assets_helper.rb +0 -1
- data/lib/hydra/generic_content.rb +7 -6
- data/lib/hydra/model_methods.rb +7 -6
- data/lib/hydra/rights_metadata.rb +2 -2
- data/lib/hydra-head/version.rb +1 -1
- data/lib/mediashelf/active_fedora_helper.rb +0 -10
- data/lib/railties/hydra-fixtures.rake +14 -18
- data/lib/railties/hyhead_rspec.rake +0 -10
- data/solr_conf/conf/schema.xml +0 -2
- data/solr_conf/conf/solrconfig.xml +29 -116
- data/tasks/hydra-head.rake +6 -6
- data/test_support/features/absent_model_search_result.feature +8 -2
- data/test_support/features/step_definitions/edit_metadata_steps.rb +1 -1
- data/test_support/fixtures/small_file.txt +1 -0
- data/test_support/spec/controllers/catalog_controller_spec.rb +16 -15
- data/test_support/spec/controllers/file_assets_controller_spec.rb +7 -14
- data/test_support/spec/controllers/permissions_controller_spec.rb +12 -4
- data/test_support/spec/helpers/access_controls_enforcement_spec.rb +0 -77
- data/test_support/spec/helpers/hydra_model_methods_spec.rb +9 -4
- data/test_support/spec/integration/file_asset_spec.rb +115 -102
- data/test_support/spec/lib/active_fedora_helper_spec.rb +1 -1
- data/test_support/spec/models/audio_asset_spec.rb +3 -3
- data/test_support/spec/models/file_asset_spec.rb +6 -5
- data/test_support/spec/models/generic_content_spec.rb +1 -2
- data/test_support/spec/models/generic_image_spec.rb +1 -1
- data/test_support/spec/models/hydra_rights_metadata_spec.rb +8 -3
- data/test_support/spec/models/image_asset_spec.rb +3 -3
- data/test_support/spec/models/mods_asset_spec.rb +3 -3
- data/test_support/spec/models/video_asset_spec.rb +3 -3
- data/vendor/cache/{active-fedora-3.0.7.gem → active-fedora-3.1.0.rc1.gem} +0 -0
- data/vendor/cache/akami-1.0.0.gem +0 -0
- data/vendor/cache/factory_girl-2.2.0.gem +0 -0
- data/vendor/cache/ffi-1.0.10.gem +0 -0
- data/vendor/cache/gherkin-2.5.4.gem +0 -0
- data/vendor/cache/gyoku-0.4.4.gem +0 -0
- data/vendor/cache/httpi-0.9.5.gem +0 -0
- data/vendor/cache/jettywrapper-1.0.1.gem +0 -0
- data/vendor/cache/nori-1.0.2.gem +0 -0
- data/vendor/cache/rdf-0.3.4.1.gem +0 -0
- data/vendor/cache/rdf-rdfxml-0.3.5.gem +0 -0
- data/vendor/cache/rdoc-3.11.gem +0 -0
- data/vendor/cache/rspec-2.7.0.gem +0 -0
- data/vendor/cache/rspec-core-2.7.1.gem +0 -0
- data/vendor/cache/rspec-expectations-2.7.0.gem +0 -0
- data/vendor/cache/rspec-mocks-2.7.0.gem +0 -0
- data/vendor/cache/rspec-rails-2.7.0.gem +0 -0
- data/vendor/cache/rubydora-0.1.9.gem +0 -0
- data/vendor/cache/savon-0.9.7.gem +0 -0
- data/vendor/cache/wasabi-2.0.0.gem +0 -0
- metadata +94 -93
- data/RELEASE_NOTES.textile +0 -8
- data/vendor/cache/factory_girl-2.1.2.gem +0 -0
- data/vendor/cache/ffi-1.0.9.gem +0 -0
- data/vendor/cache/gherkin-2.5.2.gem +0 -0
- data/vendor/cache/jettywrapper-0.0.10.gem +0 -0
- data/vendor/cache/rcov-0.9.11.gem +0 -0
- data/vendor/cache/rdoc-3.10.gem +0 -0
- data/vendor/cache/rspec-2.6.0.gem +0 -0
- data/vendor/cache/rspec-core-2.6.4.gem +0 -0
- data/vendor/cache/rspec-expectations-2.6.0.gem +0 -0
- data/vendor/cache/rspec-mocks-2.6.0.gem +0 -0
- data/vendor/cache/rspec-rails-2.6.1.gem +0 -0
@@ -82,121 +82,36 @@
|
|
82
82
|
</lst>
|
83
83
|
</requestHandler>
|
84
84
|
|
85
|
-
<!--
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
<str name="q.alt">*:*</str>
|
91
|
-
<str name="mm">2<-1 5<-2 6<90%</str>
|
92
|
-
<!-- this qf and pf are used by default, if not otherwise specified by
|
93
|
-
client. The default blacklight_config will use these for the
|
94
|
-
"keywords" search. See the author_qf/author_pf, title_qf, etc
|
95
|
-
below, which the default blacklight_config will specify for
|
96
|
-
those searches. You may also be interested in:
|
97
|
-
http://wiki.apache.org/solr/LocalParams
|
98
|
-
-->
|
99
|
-
<str name="qf">
|
100
|
-
id
|
101
|
-
title_t^25000
|
102
|
-
text
|
103
|
-
active_fedora_model_s
|
104
|
-
object_type_facet
|
105
|
-
</str>
|
106
|
-
<str name="pf">
|
107
|
-
id
|
108
|
-
title_t^250000
|
109
|
-
text^10
|
110
|
-
active_fedora_model_s
|
111
|
-
object_type_facet
|
112
|
-
</str>
|
113
|
-
<str name="author_qf">
|
114
|
-
author_unstem_search^200
|
115
|
-
author_addl_unstem_search^50
|
116
|
-
author_t^20
|
117
|
-
author_addl_t
|
118
|
-
</str>
|
119
|
-
<str name="author_pf">
|
120
|
-
author_unstem_search^2000
|
121
|
-
author_addl_unstem_search^500
|
122
|
-
author_t^200
|
123
|
-
author_addl_t^10
|
124
|
-
</str>
|
125
|
-
<str name="title_qf">
|
126
|
-
title_unstem_search^50000
|
127
|
-
subtitle_unstem_search^25000
|
128
|
-
title_addl_unstem_search^10000
|
129
|
-
title_t^5000
|
130
|
-
subtitle_t^2500
|
131
|
-
title_addl_t^100
|
132
|
-
title_added_entry_unstem_search^50
|
133
|
-
title_added_entry_t^10
|
134
|
-
title_series_unstem_search^5
|
135
|
-
title_series_t
|
136
|
-
</str>
|
137
|
-
<str name="title_pf">
|
138
|
-
title_unstem_search^500000
|
139
|
-
subtitle_unstem_search^250000
|
140
|
-
title_addl_unstem_search^100000
|
141
|
-
title_t^50000
|
142
|
-
subtitle_t^25000
|
143
|
-
title_addl_t^1000
|
144
|
-
title_added_entry_unstem_search^500
|
145
|
-
title_added_entry_t^100
|
146
|
-
title_series_t^50
|
147
|
-
title_series_unstem_search^10
|
148
|
-
</str>
|
149
|
-
<str name="subject_qf">
|
150
|
-
subject_topic_unstem_search^200
|
151
|
-
subject_unstem_search^125
|
152
|
-
subject_topic_facet^100
|
153
|
-
subject_t^50
|
154
|
-
subject_addl_unstem_search^10
|
155
|
-
subject_addl_t
|
156
|
-
</str>
|
157
|
-
<str name="subject_pf">
|
158
|
-
subject_topic_unstem_search^2000
|
159
|
-
subject_unstem_search^1250
|
160
|
-
subject_t^1000
|
161
|
-
subject_topic_facet^500
|
162
|
-
subject_addl_unstem_search^100
|
163
|
-
subject_addl_t^10
|
164
|
-
</str>
|
165
|
-
|
166
|
-
|
167
|
-
<int name="ps">3</int>
|
168
|
-
<float name="tie">0.01</float>
|
169
|
-
|
170
|
-
<!-- NOT using marc_display because it is large and will slow things down for search results -->
|
171
|
-
<str name="fl">
|
172
|
-
*,score
|
173
|
-
</str>
|
174
|
-
|
175
|
-
<str name="facet">true</str>
|
176
|
-
<str name="facet.mincount">1</str>
|
177
|
-
<str name="facet.limit">10</str>
|
178
|
-
<str name="facet.field">format</str>
|
179
|
-
<str name="facet.field">lc_1letter_facet</str>
|
180
|
-
<str name="facet.field">lc_alpha_facet</str>
|
181
|
-
<str name="facet.field">lc_b4cutter_facet</str>
|
182
|
-
<str name="facet.field">language_facet</str>
|
183
|
-
<str name="facet.field">pub_date</str>
|
184
|
-
<str name="facet.field">subject_era_facet</str>
|
185
|
-
<str name="facet.field">subject_geo_facet</str>
|
186
|
-
<str name="facet.field">subject_topic_facet</str>
|
85
|
+
<!-- For complete comments from the Solr project example solrconfig.xml:
|
86
|
+
http://svn.apache.org/repos/asf/lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml
|
87
|
+
See also:
|
88
|
+
http://wiki.apache.org/solr/SolrConfigXml
|
89
|
+
-->
|
187
90
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
</
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
91
|
+
<requestHandler name="search" class="solr.SearchHandler" default="true">
|
92
|
+
<lst name="defaults">
|
93
|
+
<!-- Making defType lucene to exclude file assets -->
|
94
|
+
<str name="defType">lucene</str>
|
95
|
+
<!-- lucene params -->
|
96
|
+
<str name="df">has_model_s</str>
|
97
|
+
<str name="q.op">AND</str>
|
98
|
+
<!-- dismax params -->
|
99
|
+
<str name="mm"> 2<-1 5<-2 6<90% </str>
|
100
|
+
<str name="q.alt">*:*</str>
|
101
|
+
<str name="qf_dismax">id^0.8 id_t^0.8 title_t^0.3 mods_t^0.2</str>
|
102
|
+
<str name="pf_dismax">id^0.9 id_t^0.9 title_t^0.5 mods_t^0.2</str>
|
103
|
+
<int name="ps">100</int>
|
104
|
+
<float name="tie">0.01</float>
|
105
|
+
<!-- general -->
|
106
|
+
<str name="facet">on</str>
|
107
|
+
<str name="facet.mincount">1</str>
|
108
|
+
<str name="echoParams">explicit</str>
|
109
|
+
<str name="fl">
|
110
|
+
*,score
|
111
|
+
</str>
|
112
|
+
</lst>
|
113
|
+
</requestHandler>
|
114
|
+
|
200
115
|
<requestHandler name="public_search" class="solr.SearchHandler" >
|
201
116
|
<lst name="defaults">
|
202
117
|
<!-- Making defType lucene to exclude file assets -->
|
@@ -207,8 +122,6 @@
|
|
207
122
|
<!-- dismax params -->
|
208
123
|
<str name="mm"> 2<-1 5<-2 6<90% </str>
|
209
124
|
<str name="q.alt">*:*</str>
|
210
|
-
<str name="qf">id^0.8 id_t^0.8 format text^0.3 journal_issn_t</str>
|
211
|
-
<str name="pf">id^0.9 id_t^0.9 text^0.5 journal_issn_t</str>
|
212
125
|
<str name="qf_dismax">id^0.8 id_t^0.8 format text^0.3</str>
|
213
126
|
<str name="pf_dismax">id^0.9 id_t^0.9 text^0.5</str>
|
214
127
|
<int name="ps">100</int>
|
data/tasks/hydra-head.rake
CHANGED
@@ -180,19 +180,19 @@ namespace :hyhead do
|
|
180
180
|
FileUtils.cp_r(File.join('..','..','test_support','fixtures'), File.join('.','test_support','fixtures'))
|
181
181
|
|
182
182
|
puts "Executing bundle install --local"
|
183
|
-
%x[bundle install --local]
|
183
|
+
puts %x[bundle install --local]
|
184
184
|
errors << 'Error running bundle install in test app' unless $?.success?
|
185
185
|
|
186
186
|
puts "Installing cucumber in test app"
|
187
|
-
%x[rails g cucumber:install]
|
187
|
+
puts %x[rails g cucumber:install]
|
188
188
|
errors << 'Error installing cucumber in test app' unless $?.success?
|
189
189
|
|
190
190
|
puts "generating default blacklight install"
|
191
|
-
%x[rails generate blacklight --devise]
|
191
|
+
puts %x[rails generate blacklight --devise]
|
192
192
|
errors << 'Error generating default blacklight install' unless $?.success?
|
193
193
|
|
194
194
|
puts "generating default hydra-head install"
|
195
|
-
%x[rails generate hydra:head -df] # using -f to force overwriting of solr.yml
|
195
|
+
puts %x[rails generate hydra:head -df] # using -f to force overwriting of solr.yml
|
196
196
|
errors << 'Error generating default hydra-head install' unless $?.success?
|
197
197
|
|
198
198
|
# set log_level to :warn in the test app's test environment. (:debug is too verbose)
|
@@ -201,7 +201,7 @@ namespace :hyhead do
|
|
201
201
|
|
202
202
|
puts "Running rake db:migrate"
|
203
203
|
%x[rake db:migrate]
|
204
|
-
%x[rake db:
|
204
|
+
%x[rake db:test:prepare]
|
205
205
|
raise "Errors: #{errors.join("; ")}" unless errors.empty?
|
206
206
|
|
207
207
|
|
@@ -223,7 +223,7 @@ namespace :hyhead do
|
|
223
223
|
task :test => [:use_test_app] do
|
224
224
|
|
225
225
|
puts "Running rspec tests"
|
226
|
-
puts %x[rake hyhead:spec
|
226
|
+
puts %x[rake hyhead:spec]
|
227
227
|
rspec_success = $?.success?
|
228
228
|
|
229
229
|
puts "Running cucumber tests"
|
@@ -1,8 +1,14 @@
|
|
1
1
|
Feature: Objects Without Models - Search Results
|
2
2
|
I want to see appropriate information in search results for objects without an (active)fedora model
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
Scenario: Have a Search Result that is an Object Without a Model
|
5
|
+
Given I am logged in as "archivist1@example.com"
|
6
|
+
And I am on the home page
|
7
|
+
And I fill in "q" with "test"
|
8
|
+
When I press "submit"
|
9
|
+
Then I should see a link to "the show document page for hydra:test_no_model"
|
10
|
+
|
11
|
+
# you can't see this object unless you are an editor
|
6
12
|
Scenario: html5 valid - unauthenticated
|
7
13
|
When I am on the home page
|
8
14
|
And I fill in "q" with "test"
|
@@ -48,7 +48,7 @@ Then /^I should see a "([^"]*)" button(?: within "([^"]*)")?$/ do |button_locato
|
|
48
48
|
end
|
49
49
|
|
50
50
|
Given /^that "([^"]*)" has been loaded into fedora$/ do |pid|
|
51
|
-
|
51
|
+
ActiveFedora::FixtureLoader.new('test_support/fixtures').reload(pid)
|
52
52
|
|
53
53
|
end
|
54
54
|
|
@@ -0,0 +1 @@
|
|
1
|
+
small
|
@@ -60,10 +60,8 @@ describe CatalogController do
|
|
60
60
|
|
61
61
|
describe "access controls" do
|
62
62
|
before(:all) do
|
63
|
-
@public_only_results = Blacklight.solr.find Hash[:
|
64
|
-
|
65
|
-
# @private_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"private"}]
|
66
|
-
@private_only_results = Blacklight.solr.find Hash[:fq=>"access_t:private"]
|
63
|
+
@public_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"public"}]
|
64
|
+
@private_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"private"}]
|
67
65
|
end
|
68
66
|
|
69
67
|
it "should only return public documents if role does not have permissions" do
|
@@ -74,8 +72,7 @@ describe CatalogController do
|
|
74
72
|
it "should return all documents if role does have permissions" do
|
75
73
|
User.any_instance.stubs(:login).returns("BigWig")
|
76
74
|
mock_user = User.new
|
77
|
-
|
78
|
-
mock_user.stubs(:is_being_superuser?).returns(true)
|
75
|
+
session[:superuser_mode] = true
|
79
76
|
controller.stubs(:current_user).returns(mock_user)
|
80
77
|
get :index
|
81
78
|
assigns(:document_list).count.should > @public_only_results.docs.count
|
@@ -87,24 +84,28 @@ describe CatalogController do
|
|
87
84
|
describe "load_fedora_document" do
|
88
85
|
|
89
86
|
it "should load @document_fedora and @file_assets" do
|
90
|
-
controller.stubs(:params).returns({:id=>"foo:id"})
|
91
|
-
stub_base_object = stub("Base Object")
|
92
|
-
ActiveFedora::ContentModel.expects(:known_models_for).with( stub_base_object ).returns( [ModsAsset] )
|
93
|
-
stub_mods_asset = stub("MODS Asset")
|
94
|
-
stub_mods_asset.expects(:file_objects).with(:response_format=>:solr).returns("file assets response")
|
87
|
+
# controller.stubs(:params).returns({:id=>"foo:id"})
|
88
|
+
# stub_base_object = stub("Base Object")
|
89
|
+
# ActiveFedora::ContentModel.expects(:known_models_for).with( stub_base_object ).returns( [ModsAsset] )
|
90
|
+
# stub_mods_asset = stub("MODS Asset")
|
91
|
+
# stub_mods_asset.expects(:file_objects).with(:response_format=>:solr).returns("file assets response")
|
95
92
|
|
96
93
|
# Note: Had to stub Fedora::Repository.instance.find_model rather than stubbing ActiveFedora::Base.load_instance and ModsAsset.load_instance because
|
97
94
|
# Mocha was not unstubbing the ModsAsset class
|
98
95
|
#
|
99
96
|
# ActiveFedora::Base.stubs(:load_instance).with("foo:id").returns( stub_base_object )
|
100
97
|
# ModsAsset.stubs(:load_instance).with("foo:id").returns( stub_mods_asset )
|
101
|
-
Fedora::Repository.instance.expects(:find_model).with("foo:id", ActiveFedora::Base).returns( stub_base_object )
|
102
|
-
Fedora::Repository.instance.expects(:find_model).with("foo:id", ModsAsset).returns( stub_mods_asset )
|
98
|
+
# Fedora::Repository.instance.expects(:find_model).with("foo:id", ActiveFedora::Base).returns( stub_base_object )
|
99
|
+
# Fedora::Repository.instance.expects(:find_model).with("foo:id", ModsAsset).returns( stub_mods_asset )
|
103
100
|
|
101
|
+
controller.params[:id]='hydrangea:fixture_mods_article1'
|
104
102
|
controller.load_fedora_document
|
105
103
|
|
106
|
-
assigns[:document_fedora].should ==
|
107
|
-
assigns[:
|
104
|
+
assigns[:document_fedora].class.should == ModsAsset
|
105
|
+
assigns[:document_fedora].pid.should == 'hydrangea:fixture_mods_article1'
|
106
|
+
assigns[:file_assets].class.should == Solr::Response::Standard
|
107
|
+
assigns[:file_assets].hits.size.should == 1
|
108
|
+
assigns[:file_assets].hits.first["id"].should == "hydrangea:fixture_uploaded_svg1"
|
108
109
|
end
|
109
110
|
end
|
110
111
|
|
@@ -65,12 +65,7 @@ describe FileAssetsController do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
describe "index" do
|
68
|
-
before(:each) do
|
69
|
-
Fedora::Repository.stubs(:instance).returns(stub_everything)
|
70
|
-
end
|
71
|
-
|
72
68
|
it "should be refined further!"
|
73
|
-
|
74
69
|
end
|
75
70
|
describe "new" do
|
76
71
|
it "should return the file uploader view"
|
@@ -117,11 +112,11 @@ describe FileAssetsController do
|
|
117
112
|
controller.expects(:model_config).at_least_once.returns(controller.workflow_config[:mods_assets])
|
118
113
|
xhr :post, :create, :container_id=>"_PID_", :wf_step=>"files"
|
119
114
|
response.should redirect_to(:controller=>"catalog", :id=>"_PID_", :action => 'edit', :wf_step=>"permissions")
|
120
|
-
|
115
|
+
request.flash[:notice].should == "You must specify a file to upload."
|
121
116
|
end
|
122
117
|
it "should display a message that you need to select a file to upload if no Filedata is provided" do
|
123
118
|
xhr :post, :create
|
124
|
-
|
119
|
+
request.flash[:notice].include?("You must specify a file to upload.").should be_true
|
125
120
|
end
|
126
121
|
|
127
122
|
end
|
@@ -144,11 +139,10 @@ describe FileAssetsController do
|
|
144
139
|
|
145
140
|
describe "integration tests - " do
|
146
141
|
before(:all) do
|
147
|
-
Fedora::Repository.register(ActiveFedora.fedora_config[:url])
|
148
142
|
ActiveFedora::SolrService.register(ActiveFedora.solr_config[:url])
|
149
143
|
@test_container = ActiveFedora::Base.new
|
150
|
-
@test_container.add_relationship(:is_member_of, "foo:1")
|
151
|
-
@test_container.add_relationship(:has_collection_member, "foo:2")
|
144
|
+
@test_container.add_relationship(:is_member_of, "info:fedora/foo:1")
|
145
|
+
@test_container.add_relationship(:has_collection_member, "info:fedora/foo:2")
|
152
146
|
@test_container.save
|
153
147
|
|
154
148
|
@test_fa = FileAsset.new
|
@@ -182,13 +176,12 @@ describe FileAssetsController do
|
|
182
176
|
end
|
183
177
|
|
184
178
|
it "should set is_part_of relationship on the new File Asset pointing back at the container" do
|
185
|
-
|
186
|
-
test_file = fixture("empty_file.txt")
|
179
|
+
test_file = fixture("small_file.txt")
|
187
180
|
filename = "My File Name"
|
188
181
|
test_file.expects(:original_filename).twice.returns("My File Name")
|
189
182
|
post :create, {:Filedata=>[test_file], :Filename=>filename, :container_id=>@test_container.pid}
|
190
|
-
assigns(:file_asset).
|
191
|
-
retrieved_fa = FileAsset.load_instance(@test_fa.pid).
|
183
|
+
assigns(:file_asset).ids_for_outbound(:is_part_of).should == [@test_container.pid]
|
184
|
+
retrieved_fa = FileAsset.load_instance(@test_fa.pid).ids_for_outbound(:is_part_of).should == [@test_container.pid]
|
192
185
|
end
|
193
186
|
end
|
194
187
|
end
|
@@ -30,15 +30,19 @@ describe PermissionsController do
|
|
30
30
|
stub_solrizer = stub("solrizer", :solrize)
|
31
31
|
Solrizer::Fedora::Solrizer.stubs(:new).returns(stub_solrizer)
|
32
32
|
mock_ds = mock("Datastream")
|
33
|
-
Hydra::RightsMetadata.stubs(:from_xml)
|
33
|
+
Hydra::RightsMetadata.stubs(:from_xml)
|
34
|
+
Hydra::RightsMetadata.stubs(:new).returns(mock_ds)
|
34
35
|
mock_ds.expects(:permissions).with({"person" => "_person_id_"}, "read")
|
35
36
|
# mock_ds.expects(:update_permissions).with({"person"=>{"_person_id_"=>"read"}})
|
36
37
|
mock_ds.stubs(:content)
|
37
38
|
mock_ds.stubs(:pid=)
|
38
39
|
mock_ds.stubs(:dsid=)
|
39
40
|
mock_ds.stubs(:save)
|
41
|
+
mock_ds.stubs(:serialize!)
|
40
42
|
mock_object = mock("object")
|
41
|
-
mock_object.stubs(:
|
43
|
+
mock_object.stubs(:datastreams).returns({"rightsMetadata"=>mock_ds})
|
44
|
+
mock_inner = mock('Mock Inner')
|
45
|
+
mock_object.stubs(:inner_object).returns(mock_inner)
|
42
46
|
|
43
47
|
ActiveFedora::Base.expects(:load_instance).with("_pid_").returns(mock_object)
|
44
48
|
|
@@ -52,14 +56,18 @@ describe PermissionsController do
|
|
52
56
|
stub_solrizer = stub("solrizer", :solrize)
|
53
57
|
Solrizer::Fedora::Solrizer.stubs(:new).returns(stub_solrizer)
|
54
58
|
mock_ds = mock("Datastream")
|
55
|
-
Hydra::RightsMetadata.stubs(:from_xml)
|
59
|
+
Hydra::RightsMetadata.stubs(:from_xml)
|
60
|
+
Hydra::RightsMetadata.stubs(:new).returns(mock_ds)
|
56
61
|
mock_ds.expects(:update_permissions).with({"group" => {"_group_id_"=>"discover"}})
|
57
62
|
mock_ds.stubs(:content)
|
58
63
|
mock_ds.stubs(:pid=)
|
59
64
|
mock_ds.stubs(:dsid=)
|
65
|
+
mock_ds.stubs(:serialize!)
|
60
66
|
mock_ds.stubs(:save)
|
61
67
|
mock_object = mock("object")
|
62
|
-
mock_object.stubs(:
|
68
|
+
mock_object.stubs(:datastreams).returns({"rightsMetadata"=>mock_ds})
|
69
|
+
mock_inner = mock('Mock Inner')
|
70
|
+
mock_object.stubs(:inner_object).returns(mock_inner)
|
63
71
|
|
64
72
|
ActiveFedora::Base.expects(:load_instance).with("_pid_").returns(mock_object)
|
65
73
|
# must define new routes that can handle url like this
|
@@ -2,83 +2,6 @@
|
|
2
2
|
require File.expand_path( File.join( File.dirname(__FILE__),'..','spec_helper') )
|
3
3
|
|
4
4
|
describe Hydra::AccessControlsEnforcement do
|
5
|
-
|
6
|
-
describe "apply_gated_discovery" do
|
7
|
-
before(:each) do
|
8
|
-
@stub_user = User.new :email=>'archivist1@example.com'
|
9
|
-
@stub_user.stubs(:is_being_superuser?).returns false
|
10
|
-
@stub_user.stubs(:login).returns "fred"
|
11
|
-
RoleMapper.stubs(:roles).with(@stub_user.login).returns(["archivist","researcher"])
|
12
|
-
helper.stubs(:current_user).returns(@stub_user)
|
13
|
-
@solr_parameters = {}
|
14
|
-
@user_parameters = {}
|
15
|
-
end
|
16
|
-
it "should set query fields for the user id checking against the discover, access, read fields" do
|
17
|
-
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
18
|
-
["discover","edit","read"].each do |type|
|
19
|
-
@solr_parameters[:fq].first.should match(/#{type}_access_person_t\:#{@stub_user.login}/)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
it "should set query fields for all roles the user is a member of checking against the discover, access, read fields" do
|
23
|
-
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
24
|
-
["discover","edit","read"].each do |type|
|
25
|
-
@solr_parameters[:fq].first.should match(/#{type}_access_group_t\:archivist/)
|
26
|
-
@solr_parameters[:fq].first.should match(/#{type}_access_group_t\:researcher/)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
# it "should filter out any content whose embargo date is in the future" do
|
30
|
-
# helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
31
|
-
# @solr_parameters[:fq].should include("-embargo_release_date_dt:[NOW TO *]")
|
32
|
-
# end
|
33
|
-
it "should allow content owners access to their embargoed content" do
|
34
|
-
pending
|
35
|
-
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
36
|
-
@solr_parameters[:fq].should include("(NOT embargo_release_date_dt:[NOW TO *]) OR depositor_t:#{@stub_user.login}")
|
37
|
-
|
38
|
-
# @solr_parameters[:fq].should include("embargo_release_date_dt:[NOW TO *] AND depositor_t:#{current_user.login}) AND NOT (NOT depositor_t:#{current_user.login} AND embargo_release_date_dt:[NOW TO *]")
|
39
|
-
end
|
40
|
-
|
41
|
-
describe "for superusers" do
|
42
|
-
it "should return superuser access level" do
|
43
|
-
stub_user = User.new
|
44
|
-
stub_user.stubs(:login).returns "suzie"
|
45
|
-
stub_user.stubs(:is_being_superuser?).returns true
|
46
|
-
RoleMapper.stubs(:roles).with(stub_user.login).returns(["archivist","researcher"])
|
47
|
-
helper.stubs(:current_user).returns(stub_user)
|
48
|
-
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
49
|
-
["discover","edit","read"].each do |type|
|
50
|
-
@solr_parameters[:fq].first.should match(/#{type}_access_person_t\:\[\* TO \*\]/)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
it "should not return superuser access to non-superusers" do
|
54
|
-
stub_user = User.new
|
55
|
-
stub_user.stubs(:login).returns "suzie"
|
56
|
-
stub_user.stubs(:is_being_superuser?).returns false
|
57
|
-
RoleMapper.stubs(:roles).with(stub_user.login).returns(["archivist","researcher"])
|
58
|
-
helper.stubs(:current_user).returns(stub_user)
|
59
|
-
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
60
|
-
["discover","edit","read"].each do |type|
|
61
|
-
@solr_parameters[:fq].should_not include("#{type}_access_person_t\:\[\* TO \*\]")
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
describe "exclude_unwanted_models" do
|
69
|
-
before(:each) do
|
70
|
-
stub_user = User.new :email=>'archivist1@example.com'
|
71
|
-
stub_user.stubs(:is_being_superuser?).returns false
|
72
|
-
helper.stubs(:current_user).returns(stub_user)
|
73
|
-
@solr_parameters = {}
|
74
|
-
@user_parameters = {}
|
75
|
-
end
|
76
|
-
it "should set solr query parameters to filter out FileAssets" do
|
77
|
-
helper.send(:exclude_unwanted_models, @solr_parameters, @user_parameters)
|
78
|
-
@solr_parameters[:fq].should include("-has_model_s:\"info:fedora/afmodel:FileAsset\"")
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
5
|
describe "build_lucene_query" do
|
83
6
|
|
84
7
|
it "should return fields for all roles the user is a member of checking against the discover, access, read fields" do
|
@@ -10,7 +10,7 @@ describe Hydra::ModelMethods do
|
|
10
10
|
prop_ds.expects(:depositor_values=).with("foouser")
|
11
11
|
rights_ds.expects(:update_indexed_attributes).with([:edit_access, :person]=>"foouser")
|
12
12
|
|
13
|
-
helper.stubs(:
|
13
|
+
helper.stubs(:datastreams).returns({"rightsMetadata"=>rights_ds,"properties"=>prop_ds})
|
14
14
|
helper.apply_depositor_metadata("foouser")
|
15
15
|
end
|
16
16
|
end
|
@@ -36,13 +36,18 @@ describe Hydra::ModelMethods do
|
|
36
36
|
|
37
37
|
describe "set_title" do
|
38
38
|
it "should set the title if the descMetadata is a NokogiriDatastream that responds to :title term" do
|
39
|
-
|
39
|
+
obj = ActiveFedora::Base.new
|
40
|
+
dm = Hydra::ModsArticle.new(obj.inner_object, nil)
|
41
|
+
dm.stubs(:content).returns('')
|
40
42
|
helper.stubs(:datastreams).returns("descMetadata"=>dm)
|
41
43
|
helper.set_title("My title")
|
42
44
|
dm.term_values(:title).should == ["My title"]
|
43
45
|
end
|
44
46
|
it "should set the title if the descMetadata is a MetadataDatastream with a title field defined" do
|
45
|
-
|
47
|
+
obj = ActiveFedora::Base.new
|
48
|
+
dm = ActiveFedora::QualifiedDublinCoreDatastream.new(obj.inner_object, nil)
|
49
|
+
dm.stubs(:content).returns('')
|
50
|
+
#dm = ActiveFedora::QualifiedDublinCoreDatastream.new nil, nil
|
46
51
|
helper.stubs(:datastreams).returns("descMetadata"=>dm)
|
47
52
|
helper.set_title("My title")
|
48
53
|
dm.title_values.should == ["My title"]
|
@@ -55,7 +60,7 @@ describe Hydra::ModelMethods do
|
|
55
60
|
prop_ds.expects(:respond_to?).with(:collection_values).returns(true)
|
56
61
|
prop_ds.expects(:collection_values=).with("mods_asset")
|
57
62
|
|
58
|
-
helper.stubs(:
|
63
|
+
helper.stubs(:datastreams).returns({"properties"=>prop_ds})
|
59
64
|
helper.set_collection_type("mods_asset")
|
60
65
|
end
|
61
66
|
end
|