hydra-head 3.1.0.pre2 → 3.1.0.pre3
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/Gemfile.lock +12 -14
- data/app/helpers/application_helper.rb +1 -0
- data/app/helpers/hydra_helper.rb +6 -1
- data/app/views/_user_util_links.html.erb +1 -1
- data/app/views/permissions/_edit_person_permissions.html.erb +1 -1
- data/hydra-head.gemspec +4 -4
- data/lib/hydra-head/version.rb +1 -1
- data/lib/hydra/access_controls_enforcement.rb +11 -9
- data/lib/hydra/access_controls_evaluation.rb +1 -1
- data/lib/hydra/assets_controller_helper.rb +5 -5
- data/lib/hydra/controller.rb +6 -1
- data/lib/railties/hydra_jetty.rake +3 -40
- data/spec/controllers/catalog_valid_html_spec.rb +3 -3
- data/tasks/hydra-head.rake +53 -53
- data/tasks/hydra_jetty.rake +5 -39
- data/test_support/etc/Gemfile +1 -0
- data/test_support/features/html_validity.feature +1 -0
- data/test_support/spec/controllers/catalog_controller_spec.rb +1 -1
- data/test_support/spec/controllers/catalog_controller_viewing_context_spec.rb +1 -1
- data/test_support/spec/controllers/file_assets_controller_spec.rb +2 -5
- data/test_support/spec/helpers/access_controls_enforcement_spec.rb +11 -14
- data/test_support/spec/helpers/access_controls_evaluation_spec.rb +3 -3
- data/vendor/cache/jettywrapper-1.0.4.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
- metadata +29 -59
- data/vendor/cache/jettywrapper-1.0.2.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
data/Gemfile.lock
CHANGED
@@ -144,7 +144,7 @@ GEM
|
|
144
144
|
httpi (0.9.5)
|
145
145
|
rack
|
146
146
|
i18n (0.5.0)
|
147
|
-
jettywrapper (1.0.
|
147
|
+
jettywrapper (1.0.4)
|
148
148
|
activesupport (>= 3.0.0)
|
149
149
|
childprocess
|
150
150
|
i18n
|
@@ -213,19 +213,19 @@ GEM
|
|
213
213
|
builder (>= 2.1.2)
|
214
214
|
rsolr-ext (1.0.3)
|
215
215
|
rsolr (>= 1.0.2)
|
216
|
-
rspec (2.
|
217
|
-
rspec-core (~> 2.
|
218
|
-
rspec-expectations (~> 2.
|
219
|
-
rspec-mocks (~> 2.
|
220
|
-
rspec-core (2.
|
221
|
-
rspec-expectations (2.
|
216
|
+
rspec (2.7.0)
|
217
|
+
rspec-core (~> 2.7.0)
|
218
|
+
rspec-expectations (~> 2.7.0)
|
219
|
+
rspec-mocks (~> 2.7.0)
|
220
|
+
rspec-core (2.7.1)
|
221
|
+
rspec-expectations (2.7.0)
|
222
222
|
diff-lcs (~> 1.1.2)
|
223
|
-
rspec-mocks (2.
|
224
|
-
rspec-rails (2.
|
223
|
+
rspec-mocks (2.7.0)
|
224
|
+
rspec-rails (2.7.0)
|
225
225
|
actionpack (~> 3.0)
|
226
226
|
activesupport (~> 3.0)
|
227
227
|
railties (~> 3.0)
|
228
|
-
rspec (~> 2.
|
228
|
+
rspec (~> 2.7.0)
|
229
229
|
ruby-debug (0.10.4)
|
230
230
|
columnize (>= 0.1)
|
231
231
|
ruby-debug-base (~> 0.10.4.0)
|
@@ -295,12 +295,10 @@ DEPENDENCIES
|
|
295
295
|
factory_girl
|
296
296
|
gherkin
|
297
297
|
hydra-head!
|
298
|
-
jettywrapper (>= 1.0.
|
298
|
+
jettywrapper (>= 1.0.4)
|
299
299
|
mocha
|
300
300
|
rake
|
301
|
-
|
302
|
-
rspec (>= 2.0.0)
|
303
|
-
rspec-rails (>= 2.0.0)
|
301
|
+
rspec-rails (>= 2.7.0)
|
304
302
|
ruby-debug
|
305
303
|
ruby-debug-base
|
306
304
|
yard
|
data/app/helpers/hydra_helper.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
<% end %>
|
12
12
|
<%= link_to "Log Out", destroy_user_session_path %>
|
13
13
|
[
|
14
|
-
<%= link_to current_user.
|
14
|
+
<%= link_to current_user.to_s, edit_user_registration_path %>
|
15
15
|
]
|
16
16
|
|
|
17
17
|
<%= link_to 'Your Bookmarks', bookmarks_path %>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
-# In the future, we should show current_user's permissions and just disable the ability to modify
|
10
10
|
%>
|
11
11
|
|
12
|
-
<% if person_id !=
|
12
|
+
<% if person_id != user_key %>
|
13
13
|
<% field_name = "#{person_id}_access" %>
|
14
14
|
<% choices = [{"No Access" => "none"},{"Discover" => "discover"}, {"Read & Download" => "read"}, {"Edit & Upload" => "edit"}] %>
|
15
15
|
<% current_permissions = @document_fedora.datastreams["rightsMetadata"].permissions({"person"=>person_id}) %>
|
data/hydra-head.gemspec
CHANGED
@@ -48,12 +48,12 @@ Gem::Specification.new do |s|
|
|
48
48
|
s.add_dependency 'sanitize'
|
49
49
|
|
50
50
|
s.add_development_dependency 'yard'
|
51
|
-
s.add_development_dependency 'jettywrapper', ">=1.0.
|
51
|
+
s.add_development_dependency 'jettywrapper', ">=1.0.4"
|
52
52
|
s.add_development_dependency 'ruby-debug'
|
53
53
|
s.add_development_dependency 'ruby-debug-base'
|
54
|
-
s.add_development_dependency 'rspec', '>= 2.0.0'
|
55
|
-
s.add_development_dependency 'rspec-rails', '>= 2.
|
56
|
-
s.add_development_dependency 'rest-client'
|
54
|
+
# s.add_development_dependency 'rspec', '>= 2.0.0'
|
55
|
+
s.add_development_dependency 'rspec-rails', '>= 2.7.0'
|
56
|
+
# s.add_development_dependency 'rest-client'
|
57
57
|
s.add_development_dependency 'mocha'
|
58
58
|
s.add_development_dependency 'cucumber', '>=0.8.5'
|
59
59
|
s.add_development_dependency 'cucumber-rails', '>=1.0.0'
|
data/lib/hydra-head/version.rb
CHANGED
@@ -96,8 +96,9 @@ module Hydra::AccessControlsEnforcement
|
|
96
96
|
if @permissions_solr_document["embargo_release_date_dt"]
|
97
97
|
embargo_date = Date.parse(@permissions_solr_document["embargo_release_date_dt"].split(/T/)[0])
|
98
98
|
if embargo_date > Date.parse(Time.now.to_s)
|
99
|
-
# check for depositor raise "#{@document["depositor_t"].first} --- #{
|
100
|
-
|
99
|
+
# check for depositor raise "#{@document["depositor_t"].first} --- #{user_key}"
|
100
|
+
### Assuming we're using devise and have only one authentication key
|
101
|
+
unless current_user && user_key == @permissions_solr_document["depositor_t"].first
|
101
102
|
flash[:notice] = "This item is under embargo. You do not have sufficient access privileges to read this document."
|
102
103
|
redirect_to(:action=>'index', :q=>nil, :f=>nil) and return false
|
103
104
|
end
|
@@ -184,14 +185,14 @@ module Hydra::AccessControlsEnforcement
|
|
184
185
|
# Grant access based on user id & role
|
185
186
|
unless current_user.nil?
|
186
187
|
# for roles
|
187
|
-
RoleMapper.roles(
|
188
|
+
RoleMapper.roles(user_key).each_with_index do |role, i|
|
188
189
|
permission_types.each do |type|
|
189
190
|
user_access_filters << "#{type}_access_group_t:#{role}"
|
190
191
|
end
|
191
192
|
end
|
192
193
|
# for individual person access
|
193
194
|
permission_types.each do |type|
|
194
|
-
user_access_filters << "#{type}_access_person_t:#{
|
195
|
+
user_access_filters << "#{type}_access_person_t:#{user_key}"
|
195
196
|
end
|
196
197
|
if current_user.is_being_superuser?(session)
|
197
198
|
permission_types.each do |type|
|
@@ -203,8 +204,8 @@ module Hydra::AccessControlsEnforcement
|
|
203
204
|
# If you want to do this, set up your own solr_search_params before_filter that injects the appropriate :fq constraints for a field that expresses your objects' embargo status.
|
204
205
|
#
|
205
206
|
# include docs in results if the embargo date is NOT in the future OR if the current user is depositor
|
206
|
-
# embargo_query = "(NOT embargo_release_date_dt:[NOW TO *]) OR depositor_t:#{
|
207
|
-
# embargo_query = "(NOT embargo_release_date_dt:[NOW TO *]) OR (embargo_release_date_dt:[NOW TO *] AND depositor_t:#{
|
207
|
+
# embargo_query = "(NOT embargo_release_date_dt:[NOW TO *]) OR depositor_t:#{user_key}"
|
208
|
+
# embargo_query = "(NOT embargo_release_date_dt:[NOW TO *]) OR (embargo_release_date_dt:[NOW TO *] AND depositor_t:#{user_key}) AND NOT (NOT depositor_t:#{user_key} AND embargo_release_date_dt:[NOW TO *])"
|
208
209
|
# solr_parameters[:fq] << embargo_query
|
209
210
|
end
|
210
211
|
solr_parameters[:fq] << user_access_filters.join(" OR ")
|
@@ -252,14 +253,14 @@ module Hydra::AccessControlsEnforcement
|
|
252
253
|
|
253
254
|
unless current_user.nil?
|
254
255
|
# for roles
|
255
|
-
RoleMapper.roles(
|
256
|
+
RoleMapper.roles(user_key).each do |role|
|
256
257
|
permission_types.each do |type|
|
257
258
|
field_queries << "_query_:\"#{type}_access_group_t:#{role}\""
|
258
259
|
end
|
259
260
|
end
|
260
261
|
# for individual person access
|
261
262
|
permission_types.each do |type|
|
262
|
-
field_queries << "_query_:\"#{type}_access_person_t:#{
|
263
|
+
field_queries << "_query_:\"#{type}_access_person_t:#{user_key}\""
|
263
264
|
end
|
264
265
|
if current_user.is_being_superuser?(session)
|
265
266
|
permission_types.each do |type|
|
@@ -269,7 +270,7 @@ module Hydra::AccessControlsEnforcement
|
|
269
270
|
|
270
271
|
# if it is the depositor and it is under embargo, that is ok
|
271
272
|
# otherwise if it not the depositor and it is under embargo, don't show it
|
272
|
-
embargo_query = " OR ((_query_:\"embargo_release_date_dt:[NOW TO *]\" AND _query_:\"depositor_t:#{
|
273
|
+
embargo_query = " OR ((_query_:\"embargo_release_date_dt:[NOW TO *]\" AND _query_:\"depositor_t:#{user_key}\") AND NOT (NOT _query_:\"depositor_t:#{user_key}\" AND _query_:\"embargo_release_date_dt:[NOW TO *]\"))"
|
273
274
|
end
|
274
275
|
|
275
276
|
# remove anything with an embargo release date in the future
|
@@ -281,4 +282,5 @@ module Hydra::AccessControlsEnforcement
|
|
281
282
|
return q
|
282
283
|
end
|
283
284
|
|
285
|
+
|
284
286
|
end
|
@@ -4,12 +4,12 @@ module Hydra::AssetsControllerHelper
|
|
4
4
|
# This makes sure that assets have the current user marked as their depositor/owner.
|
5
5
|
# Relies on the asset's model to define _what_ apply_depositor_metadata should do. Most Hydra assets will rely on {Hydra::ModelMethods#apply_depositor_metadata}
|
6
6
|
#
|
7
|
-
# Attempts to call apply_depositor_metadata on the +asset+, passing
|
8
|
-
# Does nothing if the asset doesn't respond to .apply_depositor_metadata
|
7
|
+
# Attempts to call apply_depositor_metadata on the +asset+, passing user_key as the depositor
|
8
|
+
# Does nothing if the asset doesn't respond to .apply_depositor_metadata
|
9
9
|
# @param asset to call apply_depositor_metadata on
|
10
10
|
def apply_depositor_metadata(asset)
|
11
|
-
if asset.respond_to?(:apply_depositor_metadata) &&
|
12
|
-
asset.apply_depositor_metadata(
|
11
|
+
if asset.respond_to?(:apply_depositor_metadata) && user_key
|
12
|
+
asset.apply_depositor_metadata(user_key)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -147,4 +147,4 @@ module Hydra::AssetsControllerHelper
|
|
147
147
|
h
|
148
148
|
end
|
149
149
|
|
150
|
-
end
|
150
|
+
end
|
data/lib/hydra/controller.rb
CHANGED
@@ -1,18 +1,4 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
# if you would like to see solr startup messages on STDERR
|
4
|
-
# when starting solr test server during functional tests use:
|
5
|
-
#
|
6
|
-
# rake SOLR_CONSOLE=true
|
7
|
-
JETTY_PARAMS = {
|
8
|
-
:quiet => ENV['HYDRA_CONSOLE'] ? false : true,
|
9
|
-
:jetty_home => ENV['HYDRA_JETTY_HOME'],
|
10
|
-
:jetty_port => 8983,
|
11
|
-
:solr_home => ENV['HYDRA_SOLR_HOME'],
|
12
|
-
:fedora_home => ENV['HYDRA_SOLR_HOME']
|
13
|
-
}
|
14
|
-
|
15
|
-
#:jetty_port => ENV['HYDRA_JETTY_PORT'],
|
1
|
+
require 'jettywrapper'
|
16
2
|
|
17
3
|
namespace :jetty do
|
18
4
|
desc "Apply all configs to Testing Server (relies on hydra:jetty:config tasks unless you override it)"
|
@@ -23,24 +9,6 @@ end
|
|
23
9
|
|
24
10
|
namespace :hydra do
|
25
11
|
namespace :jetty do
|
26
|
-
desc "Starts the bundled Hydra Testing Server"
|
27
|
-
task :start do
|
28
|
-
Hydra::TestingServer.configure(JETTY_PARAMS)
|
29
|
-
Hydra::TestingServer.instance.start
|
30
|
-
end
|
31
|
-
|
32
|
-
desc "Stops the bundled Hydra Testing Server"
|
33
|
-
task :stop do
|
34
|
-
Hydra::TestingServer.instance.stop
|
35
|
-
end
|
36
|
-
|
37
|
-
desc "Restarts the bundled Hydra Testing Server"
|
38
|
-
task :restart do
|
39
|
-
Hydra::TestingServer.instance.stop
|
40
|
-
Hydra::TestingServer.configure(JETTY_PARAMS)
|
41
|
-
Hydra::TestingServer.instance.start
|
42
|
-
end
|
43
|
-
|
44
12
|
desc "Copies the default Solr & Fedora configs into the bundled Hydra Testing Server"
|
45
13
|
task :config do
|
46
14
|
Rake::Task["hydra:jetty:config_fedora"].invoke
|
@@ -50,8 +18,8 @@ namespace :hydra do
|
|
50
18
|
desc "Copies the contents of solr_conf into the Solr development-core and test-core of Testing Server"
|
51
19
|
task :config_solr do
|
52
20
|
FileList['solr_conf/*'].each do |f|
|
53
|
-
|
54
|
-
|
21
|
+
cp("#{f}", 'jetty/solr/development-core/', :verbose => true)
|
22
|
+
cp("#{f}", 'jetty/solr/test-core/', :verbose => true)
|
55
23
|
end
|
56
24
|
end
|
57
25
|
|
@@ -77,10 +45,5 @@ namespace :hydra do
|
|
77
45
|
desc "Copies the default SOLR config files and starts up the fedora instance."
|
78
46
|
task :load => [:config, :start]
|
79
47
|
|
80
|
-
desc "Returns the status of the Hydra::TestingServer."
|
81
|
-
task :status do
|
82
|
-
status = Hydra::TestingServer.instance.pid ? "Running: #{Hydra::TestingServer.instance.pid}" : "Not running"
|
83
|
-
puts status
|
84
|
-
end
|
85
48
|
end
|
86
49
|
end
|
@@ -52,7 +52,7 @@ describe CatalogController do
|
|
52
52
|
it "Should have Valid HTML when I'm logged in" do
|
53
53
|
|
54
54
|
mock_user = mock("User")
|
55
|
-
mock_user.stubs(:
|
55
|
+
mock_user.stubs(:email).returns("archivist1@example.com")
|
56
56
|
mock_user.stubs(:can_be_superuser?).returns(true)
|
57
57
|
mock_user.stubs(:is_being_superuser?).returns(true)
|
58
58
|
mock_user.stubs(:last_search_url).returns(nil)
|
@@ -67,7 +67,7 @@ describe CatalogController do
|
|
67
67
|
|
68
68
|
before(:each) do
|
69
69
|
mock_user = mock("User")
|
70
|
-
mock_user.stubs(:
|
70
|
+
mock_user.stubs(:email).returns("archivist1@example.com")
|
71
71
|
mock_user.stubs(:can_be_superuser?).returns(true)
|
72
72
|
mock_user.stubs(:is_being_superuser?).returns(true)
|
73
73
|
mock_user.stubs(:last_search_url).returns(nil)
|
@@ -125,4 +125,4 @@ describe CatalogController do
|
|
125
125
|
|
126
126
|
end #Document pages
|
127
127
|
|
128
|
-
end
|
128
|
+
end
|
data/tasks/hydra-head.rake
CHANGED
@@ -6,31 +6,19 @@ namespace :hyhead do
|
|
6
6
|
|
7
7
|
desc "Execute Continuous Integration build (docs, tests with coverage)"
|
8
8
|
task :ci do
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
:solr_home => File.expand_path(File.dirname(__FILE__) + '/../jetty/solr'),
|
19
|
-
:fedora_home => File.expand_path(File.dirname(__FILE__) + '/../jetty/fedora/default'),
|
20
|
-
:startup_wait => 30
|
21
|
-
}
|
22
|
-
|
23
|
-
# does this make jetty run in TEST environment???
|
24
|
-
error = Jettywrapper.wrap(jetty_params) do
|
25
|
-
Rake::Task['hyhead:setup_test_app'].invoke
|
26
|
-
puts %x[rake hyhead:fixtures:refresh RAILS_ENV=test] # calling hydra:fixtures:refresh from the root of the test app
|
9
|
+
# Docs are broken
|
10
|
+
#Rake::Task["hyhead:doc"].invoke
|
11
|
+
Rake::Task["hydra:jetty:config"].invoke
|
12
|
+
|
13
|
+
require 'jettywrapper'
|
14
|
+
jetty_params = Jettywrapper.load_config.merge({:jetty_home => File.expand_path(File.dirname(__FILE__) + '/../jetty')})
|
15
|
+
|
16
|
+
error = nil
|
17
|
+
error = Jettywrapper.wrap(jetty_params) do
|
27
18
|
Rake::Task['hyhead:test'].invoke
|
28
|
-
|
29
|
-
raise "test failures: #{error}" if error
|
30
|
-
else
|
31
|
-
system("rake hyhead:ci environment=test")
|
32
|
-
fail unless $?.success?
|
19
|
+
Rake::Task['hyhead:cucumber'].invoke
|
33
20
|
end
|
21
|
+
raise "test failures: #{error}" if error
|
34
22
|
end
|
35
23
|
|
36
24
|
|
@@ -40,16 +28,19 @@ namespace :hyhead do
|
|
40
28
|
namespace :rspec do
|
41
29
|
|
42
30
|
desc "Run the hydra-head specs - need to have jetty running, test host set up and fixtures loaded."
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
31
|
+
ENV['RAILS_ROOT'] = File.join(File.expand_path(File.dirname(__FILE__)),'..','tmp','test_app')
|
32
|
+
RSpec::Core::RakeTask.new(:run) do |t|
|
33
|
+
t.rspec_opts = "--colour"
|
34
|
+
|
35
|
+
# pattern directory name defaults to ./**/*_spec.rb, but has a more concise command line echo
|
36
|
+
t.pattern = File.join(File.expand_path(File.dirname(__FILE__)),'..','test_support','spec')
|
47
37
|
end
|
48
38
|
|
39
|
+
|
49
40
|
desc "Sets up test host, loads fixtures, then runs specs - need to have jetty running."
|
50
41
|
task :setup_and_run => ["hyhead:setup_test_app"] do
|
51
42
|
puts "Reloading fixtures"
|
52
|
-
puts %x[rake hyhead:fixtures:refresh RAILS_ENV=test]
|
43
|
+
puts %x[rake hyhead:fixtures:refresh RAILS_ENV=test]
|
53
44
|
Rake::Task["hyhead:rspec:run"].invoke
|
54
45
|
end
|
55
46
|
|
@@ -99,16 +90,21 @@ namespace :hyhead do
|
|
99
90
|
|
100
91
|
|
101
92
|
namespace :cucumber do
|
93
|
+
|
94
|
+
require 'cucumber/rake/task'
|
95
|
+
|
96
|
+
### Don't call this directly, use hyhead:cucumber:run
|
97
|
+
Cucumber::Rake::Task.new(:cmd) do |t|
|
98
|
+
t.cucumber_opts = "../../test_support/features --format pretty"
|
99
|
+
end
|
102
100
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
FileUtils.cd('../../')
|
111
|
-
end
|
101
|
+
desc "Run cucumber tests for hyhead - need to have jetty running, test host set up and fixtures loaded."
|
102
|
+
task :run => :set_test_host_path do
|
103
|
+
Dir.chdir(TEST_HOST_PATH)
|
104
|
+
puts "Running cucumber features in test host app"
|
105
|
+
Rake::Task["hyhead:cucumber:cmd"].invoke
|
106
|
+
FileUtils.cd('../../')
|
107
|
+
end
|
112
108
|
|
113
109
|
# desc "Sets up test host, loads fixtures, then runs cucumber features - need to have jetty running."
|
114
110
|
# task :setup_and_run => ["hyhead:setup_test_app", "hyhead:remove_features_from_host", "hyhead:copy_features_to_host"] do
|
@@ -218,26 +214,30 @@ namespace :hyhead do
|
|
218
214
|
#
|
219
215
|
# Test
|
220
216
|
#
|
221
|
-
|
222
217
|
desc "Run tests against test app"
|
223
|
-
task :test => [:
|
218
|
+
task :test => [:spec, :cucumber] do
|
224
219
|
|
225
|
-
|
226
|
-
puts %x[rake hyhead:spec]
|
227
|
-
rspec_success = $?.success?
|
220
|
+
end
|
228
221
|
|
229
|
-
|
230
|
-
|
231
|
-
|
222
|
+
# desc "Run tests against test app"
|
223
|
+
# task :test => [:use_test_app] do
|
224
|
+
#
|
225
|
+
# puts "Running rspec tests"
|
226
|
+
# puts %x[rake hyhead:spec]
|
227
|
+
# rspec_success = $?.success?
|
232
228
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
229
|
+
# puts "Running cucumber tests"
|
230
|
+
# puts %x[rake hyhead:cucumber]
|
231
|
+
# cucumber_success = $?.success?
|
232
|
+
|
233
|
+
# FileUtils.cd('../../')
|
234
|
+
# if rspec_success && cucumber_success
|
235
|
+
# puts "Completed test suite with no errors"
|
236
|
+
# else
|
237
|
+
# puts "Test suite encountered failures... check console output for details."
|
238
|
+
# fail
|
239
|
+
# end
|
240
|
+
# end
|
241
241
|
|
242
242
|
desc "Make sure the test app is installed, then run the tasks from its root directory"
|
243
243
|
task :use_test_app => [:set_test_host_path] do
|
data/tasks/hydra_jetty.rake
CHANGED
@@ -1,38 +1,9 @@
|
|
1
|
-
|
1
|
+
##For jettywrapper set the app_ROOT
|
2
|
+
APP_ROOT= File.expand_path(File.join(File.dirname(__FILE__),".."))
|
3
|
+
require 'jettywrapper'
|
2
4
|
|
3
|
-
# if you would like to see solr startup messages on STDERR
|
4
|
-
# when starting solr test server during functional tests use:
|
5
|
-
#
|
6
|
-
# rake SOLR_CONSOLE=true
|
7
|
-
JETTY_PARAMS = {
|
8
|
-
:quiet => ENV['HYDRA_CONSOLE'] ? false : true,
|
9
|
-
:jetty_home => ENV['HYDRA_JETTY_HOME'],
|
10
|
-
:jetty_port => 8983,
|
11
|
-
:solr_home => ENV['HYDRA_SOLR_HOME'],
|
12
|
-
:fedora_home => ENV['HYDRA_SOLR_HOME']
|
13
|
-
}
|
14
|
-
|
15
|
-
#:jetty_port => ENV['HYDRA_JETTY_PORT'],
|
16
5
|
namespace :hydra do
|
17
6
|
namespace :jetty do
|
18
|
-
desc "Starts the bundled Hydra Testing Server"
|
19
|
-
task :start do
|
20
|
-
Hydra::TestingServer.configure(JETTY_PARAMS)
|
21
|
-
Hydra::TestingServer.instance.start
|
22
|
-
end
|
23
|
-
|
24
|
-
desc "Stops the bundled Hydra Testing Server"
|
25
|
-
task :stop do
|
26
|
-
Hydra::TestingServer.instance.stop
|
27
|
-
end
|
28
|
-
|
29
|
-
desc "Restarts the bundled Hydra Testing Server"
|
30
|
-
task :restart do
|
31
|
-
Hydra::TestingServer.instance.stop
|
32
|
-
Hydra::TestingServer.configure(JETTY_PARAMS)
|
33
|
-
Hydra::TestingServer.instance.start
|
34
|
-
end
|
35
|
-
|
36
7
|
desc "Copies the default Solr & Fedora configs into the bundled Hydra Testing Server"
|
37
8
|
task :config do
|
38
9
|
Rake::Task["hydra:jetty:config_fedora"].invoke
|
@@ -44,7 +15,7 @@ namespace :hydra do
|
|
44
15
|
FileList['solr_conf/conf/*'].each do |f|
|
45
16
|
cp("#{f}", 'jetty/solr/development-core/conf/', :verbose => true)
|
46
17
|
cp("#{f}", 'jetty/solr/test-core/conf/', :verbose => true)
|
47
|
-
|
18
|
+
end
|
48
19
|
|
49
20
|
end
|
50
21
|
|
@@ -68,12 +39,7 @@ namespace :hydra do
|
|
68
39
|
end
|
69
40
|
|
70
41
|
desc "Copies the default SOLR config files and starts up the fedora instance."
|
71
|
-
task :load => [:config, :start]
|
42
|
+
task :load => [:config, 'jetty:start']
|
72
43
|
|
73
|
-
desc "Returns the status of the Hydra::TestingServer."
|
74
|
-
task :status do
|
75
|
-
status = Hydra::TestingServer.instance.pid ? "Running: #{Hydra::TestingServer.instance.pid}" : "Not running"
|
76
|
-
puts status
|
77
|
-
end
|
78
44
|
end
|
79
45
|
end
|
data/test_support/etc/Gemfile
CHANGED
@@ -22,6 +22,7 @@ Feature: HTML validity
|
|
22
22
|
Given I am logged in as "archivist1@example.com"
|
23
23
|
When I am on the home page
|
24
24
|
And I follow "Article"
|
25
|
+
#This may fail if there are a lot of articles in fedora and the expected article is not on the first page
|
25
26
|
Then I should see "TITLE OF HOST JOURNAL"
|
26
27
|
And the page should be HTML5 valid
|
27
28
|
|
@@ -72,7 +72,7 @@ describe CatalogController do
|
|
72
72
|
assigns(:document_list).count.should == @public_only_results.docs.count
|
73
73
|
end
|
74
74
|
it "should return all documents if role does have permissions" do
|
75
|
-
|
75
|
+
User.any_instance.stubs(:email).returns("BigWig@example.com")
|
76
76
|
mock_user = User.new
|
77
77
|
# session[:superuser_mode] = true
|
78
78
|
mock_user.stubs(:is_being_superuser?).returns(true)
|
@@ -44,7 +44,7 @@ describe CatalogController do
|
|
44
44
|
describe "edit" do
|
45
45
|
it "should enforce edit permissions, redirecting to show action and resetting session context if user does not have edit permissions" do
|
46
46
|
mock_user = mock("User")
|
47
|
-
mock_user.stubs(:
|
47
|
+
mock_user.stubs(:email).returns("patron1@example.com")
|
48
48
|
mock_user.stubs(:is_being_superuser?).returns(false)
|
49
49
|
controller.stubs(:current_user).returns(mock_user)
|
50
50
|
|
@@ -64,11 +64,7 @@ describe FileAssetsController do
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
describe "index" do
|
68
|
-
it "should be refined further!"
|
69
|
-
end
|
70
67
|
describe "new" do
|
71
|
-
it "should return the file uploader view"
|
72
68
|
it "should set :container_id to value of :container_id if available" do
|
73
69
|
xhr :get, :new, :asset_id=>"_PID_"
|
74
70
|
@controller.params[:asset_id].should == "_PID_"
|
@@ -78,7 +74,7 @@ describe FileAssetsController do
|
|
78
74
|
describe "show" do
|
79
75
|
it "should redirect to index view if current_user does not have read or edit permissions" do
|
80
76
|
mock_user = mock("User")
|
81
|
-
mock_user.stubs(:
|
77
|
+
mock_user.stubs(:email).returns("fake_user@example.com")
|
82
78
|
mock_user.stubs(:is_being_superuser?).returns(false)
|
83
79
|
controller.stubs(:current_user).returns(mock_user)
|
84
80
|
get(:show, :id=>"hydrangea:fixture_file_asset1")
|
@@ -170,6 +166,7 @@ describe FileAssetsController do
|
|
170
166
|
describe "create" do
|
171
167
|
before :each do
|
172
168
|
mock_user = mock("User")
|
169
|
+
mock_user.stubs(:email).returns('user@example.com')
|
173
170
|
mock_warden = mock("Warden")
|
174
171
|
mock_warden.stubs(:authenticate).returns(mock_user)
|
175
172
|
request.env['warden'] = mock_warden
|
@@ -7,8 +7,7 @@ describe Hydra::AccessControlsEnforcement do
|
|
7
7
|
before(:each) do
|
8
8
|
@stub_user = User.new :email=>'archivist1@example.com'
|
9
9
|
@stub_user.stubs(:is_being_superuser?).returns false
|
10
|
-
|
11
|
-
RoleMapper.stubs(:roles).with(@stub_user.login).returns(["archivist","researcher"])
|
10
|
+
RoleMapper.stubs(:roles).with(@stub_user.email).returns(["archivist","researcher"])
|
12
11
|
helper.stubs(:current_user).returns(@stub_user)
|
13
12
|
@solr_parameters = {}
|
14
13
|
@user_parameters = {}
|
@@ -16,7 +15,7 @@ describe Hydra::AccessControlsEnforcement do
|
|
16
15
|
it "should set query fields for the user id checking against the discover, access, read fields" do
|
17
16
|
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
18
17
|
["discover","edit","read"].each do |type|
|
19
|
-
@solr_parameters[:fq].first.should match(/#{type}_access_person_t\:#{@stub_user.
|
18
|
+
@solr_parameters[:fq].first.should match(/#{type}_access_person_t\:#{@stub_user.email}/)
|
20
19
|
end
|
21
20
|
end
|
22
21
|
it "should set query fields for all roles the user is a member of checking against the discover, access, read fields" do
|
@@ -33,17 +32,16 @@ describe Hydra::AccessControlsEnforcement do
|
|
33
32
|
it "should allow content owners access to their embargoed content" do
|
34
33
|
pending
|
35
34
|
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.
|
35
|
+
@solr_parameters[:fq].should include("(NOT embargo_release_date_dt:[NOW TO *]) OR depositor_t:#{@stub_user.email}")
|
37
36
|
|
38
|
-
# @solr_parameters[:fq].should include("embargo_release_date_dt:[NOW TO *] AND depositor_t:#{current_user.
|
37
|
+
# @solr_parameters[:fq].should include("embargo_release_date_dt:[NOW TO *] AND depositor_t:#{current_user.email}) AND NOT (NOT depositor_t:#{current_user.email} AND embargo_release_date_dt:[NOW TO *]")
|
39
38
|
end
|
40
39
|
|
41
40
|
describe "for superusers" do
|
42
41
|
it "should return superuser access level" do
|
43
|
-
stub_user = User.new
|
44
|
-
stub_user.stubs(:login).returns "suzie"
|
42
|
+
stub_user = User.new(:email=>'suzie@example.com')
|
45
43
|
stub_user.stubs(:is_being_superuser?).returns true
|
46
|
-
RoleMapper.stubs(:roles).with(stub_user.
|
44
|
+
RoleMapper.stubs(:roles).with(stub_user.email).returns(["archivist","researcher"])
|
47
45
|
helper.stubs(:current_user).returns(stub_user)
|
48
46
|
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
49
47
|
["discover","edit","read"].each do |type|
|
@@ -51,10 +49,9 @@ describe Hydra::AccessControlsEnforcement do
|
|
51
49
|
end
|
52
50
|
end
|
53
51
|
it "should not return superuser access to non-superusers" do
|
54
|
-
stub_user = User.new
|
55
|
-
stub_user.stubs(:login).returns "suzie"
|
52
|
+
stub_user = User.new(:email=>'suzie@example.com')
|
56
53
|
stub_user.stubs(:is_being_superuser?).returns false
|
57
|
-
RoleMapper.stubs(:roles).with(stub_user.
|
54
|
+
RoleMapper.stubs(:roles).with(stub_user.email).returns(["archivist","researcher"])
|
58
55
|
helper.stubs(:current_user).returns(stub_user)
|
59
56
|
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
60
57
|
["discover","edit","read"].each do |type|
|
@@ -87,9 +84,9 @@ describe Hydra::AccessControlsEnforcement do
|
|
87
84
|
helper.stubs(:current_user).returns(stub_user)
|
88
85
|
# This example assumes that archivist1 is in the archivist and researcher groups.
|
89
86
|
# Tried stubbing RoleMapper.roles instead, but that broke 26 other tests because mocha fails to release the expectation.
|
90
|
-
# RoleMapper.stubs(:roles).with(stub_user.
|
87
|
+
# RoleMapper.stubs(:roles).with(stub_user.email).returns(["archivist", "researcher"])
|
91
88
|
query = helper.send(:build_lucene_query, "query_string")
|
92
|
-
# RoleMapper.stubs(:roles).with(stub_user.
|
89
|
+
# RoleMapper.stubs(:roles).with(stub_user.email).returns(["archivist", "researcher"])
|
93
90
|
# query = helper.send(:build_lucene_query, "string")
|
94
91
|
|
95
92
|
["discover","edit","read"].each do |type|
|
@@ -112,7 +109,7 @@ describe Hydra::AccessControlsEnforcement do
|
|
112
109
|
helper.stubs(:current_user).returns(stub_user)
|
113
110
|
query = helper.send(:build_lucene_query, "string")
|
114
111
|
["discover","edit","read"].each do |type|
|
115
|
-
query.should match(/_query_\:\"#{type}_access_person_t\:#{stub_user.
|
112
|
+
query.should match(/_query_\:\"#{type}_access_person_t\:#{stub_user.email}/)
|
116
113
|
end
|
117
114
|
end
|
118
115
|
describe "for superusers" do
|
@@ -4,7 +4,7 @@ describe Hydra::AccessControlsEvaluation do
|
|
4
4
|
|
5
5
|
describe "test_permission" do
|
6
6
|
it "should automatically add logged-in users to 'registered' group" do
|
7
|
-
mock_user = mock("User", :
|
7
|
+
mock_user = mock("User", :email => "logged_in_person@example.com")
|
8
8
|
helper.stubs(:read_groups).returns(["registered"])
|
9
9
|
helper.stubs(:current_user).returns(nil)
|
10
10
|
helper.test_permission(:read).should == false
|
@@ -15,7 +15,7 @@ describe Hydra::AccessControlsEvaluation do
|
|
15
15
|
|
16
16
|
describe "editor?" do
|
17
17
|
it "should return true if current_user.is_being_superuser? is true" do
|
18
|
-
mock_user = mock("User", :
|
18
|
+
mock_user = mock("User", :email => "BigWig@example.com")
|
19
19
|
mock_user.stubs(:is_being_superuser?).returns true
|
20
20
|
helper.stubs(:current_user).returns mock_user
|
21
21
|
helper.editor?.should be_true
|
@@ -25,7 +25,7 @@ describe Hydra::AccessControlsEvaluation do
|
|
25
25
|
helper.editor?.should be_false
|
26
26
|
end
|
27
27
|
it "should return false if the session[:user] does not have an editor role" do
|
28
|
-
mock_user = mock("User", :
|
28
|
+
mock_user = mock("User", :email=>"nobody_special@example.com")
|
29
29
|
mock_user.stubs(:is_being_superuser?).returns(false)
|
30
30
|
helper.stubs(:current_user).returns(mock_user)
|
31
31
|
helper.editor?.should be_false
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-head
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1923832031
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 1
|
9
9
|
- 0
|
10
10
|
- pre
|
11
|
-
-
|
12
|
-
version: 3.1.0.
|
11
|
+
- 3
|
12
|
+
version: 3.1.0.pre3
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Matt Zumwalt, Bess Sadler, Julie Meloni, Naomi Dushay, Jessie Keck, John Scofield, Justin Coyne & many more. See https://github.com/projecthydra/hydra-head/contributors
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2011-11-
|
20
|
+
date: 2011-11-11 00:00:00 -06:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -540,12 +540,12 @@ dependencies:
|
|
540
540
|
requirements:
|
541
541
|
- - ">="
|
542
542
|
- !ruby/object:Gem::Version
|
543
|
-
hash:
|
543
|
+
hash: 31
|
544
544
|
segments:
|
545
545
|
- 1
|
546
546
|
- 0
|
547
|
-
-
|
548
|
-
version: 1.0.
|
547
|
+
- 4
|
548
|
+
version: 1.0.4
|
549
549
|
type: :development
|
550
550
|
version_requirements: *id036
|
551
551
|
- !ruby/object:Gem::Dependency
|
@@ -577,55 +577,25 @@ dependencies:
|
|
577
577
|
type: :development
|
578
578
|
version_requirements: *id038
|
579
579
|
- !ruby/object:Gem::Dependency
|
580
|
-
name: rspec
|
580
|
+
name: rspec-rails
|
581
581
|
prerelease: false
|
582
582
|
requirement: &id039 !ruby/object:Gem::Requirement
|
583
583
|
none: false
|
584
584
|
requirements:
|
585
585
|
- - ">="
|
586
586
|
- !ruby/object:Gem::Version
|
587
|
-
hash:
|
587
|
+
hash: 19
|
588
588
|
segments:
|
589
589
|
- 2
|
590
|
+
- 7
|
590
591
|
- 0
|
591
|
-
|
592
|
-
version: 2.0.0
|
592
|
+
version: 2.7.0
|
593
593
|
type: :development
|
594
594
|
version_requirements: *id039
|
595
|
-
- !ruby/object:Gem::Dependency
|
596
|
-
name: rspec-rails
|
597
|
-
prerelease: false
|
598
|
-
requirement: &id040 !ruby/object:Gem::Requirement
|
599
|
-
none: false
|
600
|
-
requirements:
|
601
|
-
- - ">="
|
602
|
-
- !ruby/object:Gem::Version
|
603
|
-
hash: 15
|
604
|
-
segments:
|
605
|
-
- 2
|
606
|
-
- 0
|
607
|
-
- 0
|
608
|
-
version: 2.0.0
|
609
|
-
type: :development
|
610
|
-
version_requirements: *id040
|
611
|
-
- !ruby/object:Gem::Dependency
|
612
|
-
name: rest-client
|
613
|
-
prerelease: false
|
614
|
-
requirement: &id041 !ruby/object:Gem::Requirement
|
615
|
-
none: false
|
616
|
-
requirements:
|
617
|
-
- - ">="
|
618
|
-
- !ruby/object:Gem::Version
|
619
|
-
hash: 3
|
620
|
-
segments:
|
621
|
-
- 0
|
622
|
-
version: "0"
|
623
|
-
type: :development
|
624
|
-
version_requirements: *id041
|
625
595
|
- !ruby/object:Gem::Dependency
|
626
596
|
name: mocha
|
627
597
|
prerelease: false
|
628
|
-
requirement: &
|
598
|
+
requirement: &id040 !ruby/object:Gem::Requirement
|
629
599
|
none: false
|
630
600
|
requirements:
|
631
601
|
- - ">="
|
@@ -635,11 +605,11 @@ dependencies:
|
|
635
605
|
- 0
|
636
606
|
version: "0"
|
637
607
|
type: :development
|
638
|
-
version_requirements: *
|
608
|
+
version_requirements: *id040
|
639
609
|
- !ruby/object:Gem::Dependency
|
640
610
|
name: cucumber
|
641
611
|
prerelease: false
|
642
|
-
requirement: &
|
612
|
+
requirement: &id041 !ruby/object:Gem::Requirement
|
643
613
|
none: false
|
644
614
|
requirements:
|
645
615
|
- - ">="
|
@@ -651,11 +621,11 @@ dependencies:
|
|
651
621
|
- 5
|
652
622
|
version: 0.8.5
|
653
623
|
type: :development
|
654
|
-
version_requirements: *
|
624
|
+
version_requirements: *id041
|
655
625
|
- !ruby/object:Gem::Dependency
|
656
626
|
name: cucumber-rails
|
657
627
|
prerelease: false
|
658
|
-
requirement: &
|
628
|
+
requirement: &id042 !ruby/object:Gem::Requirement
|
659
629
|
none: false
|
660
630
|
requirements:
|
661
631
|
- - ">="
|
@@ -667,11 +637,11 @@ dependencies:
|
|
667
637
|
- 0
|
668
638
|
version: 1.0.0
|
669
639
|
type: :development
|
670
|
-
version_requirements: *
|
640
|
+
version_requirements: *id042
|
671
641
|
- !ruby/object:Gem::Dependency
|
672
642
|
name: gherkin
|
673
643
|
prerelease: false
|
674
|
-
requirement: &
|
644
|
+
requirement: &id043 !ruby/object:Gem::Requirement
|
675
645
|
none: false
|
676
646
|
requirements:
|
677
647
|
- - ">="
|
@@ -681,11 +651,11 @@ dependencies:
|
|
681
651
|
- 0
|
682
652
|
version: "0"
|
683
653
|
type: :development
|
684
|
-
version_requirements: *
|
654
|
+
version_requirements: *id043
|
685
655
|
- !ruby/object:Gem::Dependency
|
686
656
|
name: factory_girl
|
687
657
|
prerelease: false
|
688
|
-
requirement: &
|
658
|
+
requirement: &id044 !ruby/object:Gem::Requirement
|
689
659
|
none: false
|
690
660
|
requirements:
|
691
661
|
- - ">="
|
@@ -695,11 +665,11 @@ dependencies:
|
|
695
665
|
- 0
|
696
666
|
version: "0"
|
697
667
|
type: :development
|
698
|
-
version_requirements: *
|
668
|
+
version_requirements: *id044
|
699
669
|
- !ruby/object:Gem::Dependency
|
700
670
|
name: rake
|
701
671
|
prerelease: false
|
702
|
-
requirement: &
|
672
|
+
requirement: &id045 !ruby/object:Gem::Requirement
|
703
673
|
none: false
|
704
674
|
requirements:
|
705
675
|
- - ">="
|
@@ -709,7 +679,7 @@ dependencies:
|
|
709
679
|
- 0
|
710
680
|
version: "0"
|
711
681
|
type: :development
|
712
|
-
version_requirements: *
|
682
|
+
version_requirements: *id045
|
713
683
|
description: "Hydra-Head is a Rails Engine containing the core code for a Hydra application. The full hydra stack includes: Blacklight, Fedora, Solr, active-fedora, solrizer, and om"
|
714
684
|
email:
|
715
685
|
- hydra-tech@googlegroups.com
|
@@ -1198,7 +1168,7 @@ files:
|
|
1198
1168
|
- vendor/cache/httparty-0.8.1.gem
|
1199
1169
|
- vendor/cache/httpi-0.9.5.gem
|
1200
1170
|
- vendor/cache/i18n-0.5.0.gem
|
1201
|
-
- vendor/cache/jettywrapper-1.0.
|
1171
|
+
- vendor/cache/jettywrapper-1.0.4.gem
|
1202
1172
|
- vendor/cache/json-1.6.1.gem
|
1203
1173
|
- vendor/cache/json_pure-1.6.1.gem
|
1204
1174
|
- vendor/cache/kaminari-0.12.4.gem
|
@@ -1231,11 +1201,11 @@ files:
|
|
1231
1201
|
- vendor/cache/rest-client-1.6.7.gem
|
1232
1202
|
- vendor/cache/rsolr-1.0.2.gem
|
1233
1203
|
- vendor/cache/rsolr-ext-1.0.3.gem
|
1234
|
-
- vendor/cache/rspec-2.
|
1235
|
-
- vendor/cache/rspec-core-2.
|
1236
|
-
- vendor/cache/rspec-expectations-2.
|
1237
|
-
- vendor/cache/rspec-mocks-2.
|
1238
|
-
- vendor/cache/rspec-rails-2.
|
1204
|
+
- vendor/cache/rspec-2.7.0.gem
|
1205
|
+
- vendor/cache/rspec-core-2.7.1.gem
|
1206
|
+
- vendor/cache/rspec-expectations-2.7.0.gem
|
1207
|
+
- vendor/cache/rspec-mocks-2.7.0.gem
|
1208
|
+
- vendor/cache/rspec-rails-2.7.0.gem
|
1239
1209
|
- vendor/cache/ruby-debug-0.10.4.gem
|
1240
1210
|
- vendor/cache/ruby-debug-base-0.10.4.gem
|
1241
1211
|
- vendor/cache/rubydora-0.2.3.gem
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|