hydra-file-access 5.0.0.pre11 → 5.0.0.pre12
Sign up to get free protection for your applications and to get access to all the features.
data/hydra-file-access.gemspec
CHANGED
@@ -15,11 +15,11 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.name = "hydra-file-access"
|
16
16
|
gem.require_paths = ["lib"]
|
17
17
|
gem.version = version
|
18
|
-
|
18
|
+
gem.required_ruby_version = '>= 1.9.3'
|
19
19
|
|
20
20
|
|
21
21
|
gem.add_dependency "rails", '~>3.2.3'
|
22
|
-
gem.add_dependency "blacklight"
|
22
|
+
gem.add_dependency "blacklight"
|
23
23
|
gem.add_dependency "devise"
|
24
24
|
gem.add_dependency "active-fedora"
|
25
25
|
gem.add_dependency 'RedCloth', '=4.2.9'
|
@@ -34,6 +34,6 @@ Gem::Specification.new do |gem|
|
|
34
34
|
gem.add_development_dependency 'jettywrapper', ">=1.3.0"
|
35
35
|
gem.add_development_dependency 'rspec-rails'
|
36
36
|
gem.add_development_dependency 'cucumber-rails', '>=1.2.0'
|
37
|
-
gem.add_development_dependency 'factory_girl_rails'
|
37
|
+
gem.add_development_dependency 'factory_girl_rails'
|
38
38
|
gem.add_development_dependency 'solrizer-fedora', '>=2.1.0'
|
39
39
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
# Copy Blacklight assets to public folder in current app.
|
3
|
+
# If you want to do this on application startup, you can
|
4
|
+
# add this next line to your one of your environment files --
|
5
|
+
# generally you'd only want to do this in 'development', and can
|
6
|
+
# add it to environments/development.rb:
|
7
|
+
# require File.join(Hydra.root, "lib", "generators", "hydra", "assets_generator.rb")
|
8
|
+
# Hydra::Assets.start(["--force", "--quiet"])
|
9
|
+
|
10
|
+
|
11
|
+
# Need the requires here so we can call the generator from environment.rb
|
12
|
+
# as suggested above.
|
13
|
+
require 'rails/generators'
|
14
|
+
require 'rails/generators/base'
|
15
|
+
module Hydra
|
16
|
+
class AssetsGenerator < Rails::Generators::Base
|
17
|
+
source_root File.expand_path('../templates', __FILE__)
|
18
|
+
|
19
|
+
def assets
|
20
|
+
insert_into_file "app/assets/stylesheets/application.css", :after => " *= require_self" do
|
21
|
+
%q{
|
22
|
+
*
|
23
|
+
* Required by Hydra
|
24
|
+
*= require 'hydra/styles'
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
insert_into_file "app/assets/javascripts/application.js", :after => "//= require jquery_ujs" do
|
29
|
+
%q{
|
30
|
+
// Required by Hydra
|
31
|
+
//= require 'jquery.ui.datepicker.js'
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -33,8 +33,8 @@ module Hydra::Controller::FileAssetsBehavior
|
|
33
33
|
@solr_result = FileAsset.find_with_conditions({})
|
34
34
|
else
|
35
35
|
container_uri = "info:fedora/#{params[:asset_id]}"
|
36
|
-
escaped_uri =
|
37
|
-
extra_controller_params = {:q=>"is_part_of_s:#{escaped_uri}",
|
36
|
+
escaped_uri = ActiveFedora::SolrService.escape_uri_for_query(container_uri)
|
37
|
+
extra_controller_params = {:q=>"is_part_of_s:#{escaped_uri}", 'qf'=>'is_part_of_s', 'qt'=>'standard', :rows=>10}.with_indifferent_access
|
38
38
|
@response, @document_list = get_search_results( extra_controller_params )
|
39
39
|
|
40
40
|
# Including this line so permissions tests can be run against the container
|
@@ -66,6 +66,8 @@ module Hydra::Controller::FileAssetsBehavior
|
|
66
66
|
return redirect_to next_step(params[:id])
|
67
67
|
end
|
68
68
|
|
69
|
+
authorize! :edit, (params[:container_id] || params[:id])
|
70
|
+
|
69
71
|
if params.has_key?(:Filedata)
|
70
72
|
notice = process_files
|
71
73
|
flash[:notice] = notice.join("<br/>".html_safe) unless notice.blank?
|
@@ -106,6 +108,7 @@ module Hydra::Controller::FileAssetsBehavior
|
|
106
108
|
|
107
109
|
# Common destroy method for all AssetsControllers
|
108
110
|
def destroy
|
111
|
+
authorize! :destroy, params[:id]
|
109
112
|
ActiveFedora::Base.find(params[:id], :cast=>true).delete
|
110
113
|
|
111
114
|
flash[:notice] = "Deleted #{params[:id]} from #{params[:container_id]}."
|
@@ -27,8 +27,7 @@ describe Hydra::FileAssetsController do
|
|
27
27
|
assigns[:solr_result].should == "solr result"
|
28
28
|
end
|
29
29
|
it "should find all file assets belonging to a given container object if asset_id is provided" do
|
30
|
-
|
31
|
-
xhr :get, :index, :asset_id=>pid
|
30
|
+
xhr :get, :index, :asset_id=>'hydrangea:fixture_mods_article3'
|
32
31
|
assigns[:response][:response][:docs].first["id"].should == "hydrangea:fixture_file_asset1"
|
33
32
|
assigns[:document_list].first.id.should == "hydrangea:fixture_file_asset1"
|
34
33
|
|
@@ -77,13 +76,17 @@ describe Hydra::FileAssetsController do
|
|
77
76
|
|
78
77
|
describe "create" do
|
79
78
|
it "should create and save a file asset from the given params" do
|
79
|
+
# stub out authorize! call
|
80
|
+
controller.should_receive(:authorize!).with(:edit, "example:invalid_object").and_return(true)
|
80
81
|
mock_fa = double("FileAsset")
|
81
82
|
mock_file = double("File")
|
82
83
|
mock_fa.stub(:pid).and_return("foo:pid")
|
83
84
|
controller.should_receive(:create_and_save_file_assets_from_params).and_return([mock_fa])
|
84
|
-
xhr :post, :create, :Filedata=>[mock_file], :Filename=>"Foo File"
|
85
|
+
xhr :post, :create, :Filedata=>[mock_file], :Filename=>"Foo File", :id => "example:invalid_object"
|
85
86
|
end
|
86
87
|
it "if container_id is provided, should associate the created file asset wtih the container" do
|
88
|
+
# stub out authorize! call
|
89
|
+
controller.should_receive(:authorize!).with(:edit, "_PID_").and_return(true)
|
87
90
|
stub_fa = double("FileAsset")
|
88
91
|
stub_fa.stub(:pid).and_return("foo:pid")
|
89
92
|
stub_fa.stub(:label).and_return("Foo File")
|
@@ -93,20 +96,29 @@ describe Hydra::FileAssetsController do
|
|
93
96
|
xhr :post, :create, :Filedata=>[mock_file], :Filename=>"Foo File", :container_id=>"_PID_"
|
94
97
|
end
|
95
98
|
it "should redirect back to edit view if no Filedata is provided but container_id is provided" do
|
99
|
+
# stub out authorize! call
|
100
|
+
controller.should_receive(:authorize!).with(:edit, "_PID_").and_return(true)
|
96
101
|
controller.should_receive(:model_config).at_least(:once).and_return(controller.workflow_config[:mods_assets])
|
97
102
|
xhr :post, :create, :container_id=>"_PID_", :wf_step=>"files"
|
98
103
|
response.should redirect_to catalog_path("_PID_", :wf_step=>"permissions")
|
99
104
|
request.flash[:notice].should == "You must specify a file to upload."
|
100
105
|
end
|
101
106
|
it "should display a message that you need to select a file to upload if no Filedata is provided" do
|
107
|
+
# stub out authorize! call
|
108
|
+
controller.should_receive(:authorize!).and_return(true)
|
102
109
|
xhr :post, :create
|
103
110
|
request.flash[:notice].include?("You must specify a file to upload.").should be_true
|
104
111
|
end
|
112
|
+
it "should throw an error if you don't have the ability to edit the parent object" do
|
113
|
+
lambda{xhr :post, :create, :id => "hydrangea:fixture_mods_article3"}.should raise_error(CanCan::AccessDenied)
|
114
|
+
end
|
105
115
|
|
106
116
|
end
|
107
117
|
|
108
118
|
describe "destroy" do
|
109
119
|
it "should delete the asset identified by pid" do
|
120
|
+
# stub out authorize! call
|
121
|
+
controller.should_receive(:authorize!).and_return(true)
|
110
122
|
mock_obj = double("asset")
|
111
123
|
mock_obj.should_receive(:delete)
|
112
124
|
ActiveFedora::Base.should_receive(:find).with("__PID__", :cast=>true).and_return(mock_obj)
|
@@ -114,6 +126,8 @@ describe Hydra::FileAssetsController do
|
|
114
126
|
end
|
115
127
|
it "should remove container relationship and perform proper garbage collection" do
|
116
128
|
pending "relies on ActiveFedora implementing Base.file_objects_remove"
|
129
|
+
# stub out authorize! call
|
130
|
+
controller.should_receive(:authorize!).and_return(true)
|
117
131
|
mock_container = mock("asset")
|
118
132
|
mock_container.should_receive(:file_objects_remove).with("_file_asset_pid_")
|
119
133
|
FileAsset.should_receive(:garbage_collect).with("_file_asset_pid_")
|
@@ -167,6 +181,8 @@ describe Hydra::FileAssetsController do
|
|
167
181
|
end
|
168
182
|
|
169
183
|
it "should set is_part_of relationship on the new File Asset pointing back at the container" do
|
184
|
+
# stub out authorize! call
|
185
|
+
controller.should_receive(:authorize!).and_return(true)
|
170
186
|
test_file = fixture_file_upload('spec/fixtures/small_file.txt', 'text/plain')
|
171
187
|
filename = "My File Name"
|
172
188
|
post :create, {:Filedata=>[test_file], :Filename=>filename, :container_id=>@test_container.pid}
|
data/tasks/rspec.rake
CHANGED
@@ -20,7 +20,7 @@ task :fixtures do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
|
23
|
-
|
23
|
+
desc "Create the test rails app"
|
24
24
|
task :generate do
|
25
25
|
unless File.exists?('spec/internal/Rakefile')
|
26
26
|
puts "Generating rails app"
|
@@ -42,7 +42,7 @@ task :generate do
|
|
42
42
|
puts "Running specs"
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
desc "Clean out the test rails app"
|
46
46
|
task :clean do
|
47
47
|
puts "Removing sample rails app"
|
48
48
|
`rm -rf spec/internal`
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-file-access
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.0.
|
4
|
+
version: 5.0.0.pre12
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-11-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -33,17 +33,17 @@ dependencies:
|
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
34
34
|
none: false
|
35
35
|
requirements:
|
36
|
-
- -
|
36
|
+
- - ! '>='
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version: '
|
38
|
+
version: '0'
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - ! '>='
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: devise
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,7 +163,7 @@ dependencies:
|
|
163
163
|
requirements:
|
164
164
|
- - '='
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 5.0.0.
|
166
|
+
version: 5.0.0.pre12
|
167
167
|
type: :runtime
|
168
168
|
prerelease: false
|
169
169
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -171,7 +171,7 @@ dependencies:
|
|
171
171
|
requirements:
|
172
172
|
- - '='
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version: 5.0.0.
|
174
|
+
version: 5.0.0.pre12
|
175
175
|
- !ruby/object:Gem::Dependency
|
176
176
|
name: sqlite3
|
177
177
|
requirement: !ruby/object:Gem::Requirement
|
@@ -257,17 +257,17 @@ dependencies:
|
|
257
257
|
requirement: !ruby/object:Gem::Requirement
|
258
258
|
none: false
|
259
259
|
requirements:
|
260
|
-
- -
|
260
|
+
- - ! '>='
|
261
261
|
- !ruby/object:Gem::Version
|
262
|
-
version:
|
262
|
+
version: '0'
|
263
263
|
type: :development
|
264
264
|
prerelease: false
|
265
265
|
version_requirements: !ruby/object:Gem::Requirement
|
266
266
|
none: false
|
267
267
|
requirements:
|
268
|
-
- -
|
268
|
+
- - ! '>='
|
269
269
|
- !ruby/object:Gem::Version
|
270
|
-
version:
|
270
|
+
version: '0'
|
271
271
|
- !ruby/object:Gem::Dependency
|
272
272
|
name: solrizer-fedora
|
273
273
|
requirement: !ruby/object:Gem::Requirement
|
@@ -424,6 +424,7 @@ files:
|
|
424
424
|
- app/views/shared/_delete_asset_confirmation.html.erb
|
425
425
|
- config/jetty.yml
|
426
426
|
- hydra-file-access.gemspec
|
427
|
+
- lib/generators/hydra/assets_generator.rb
|
427
428
|
- lib/hydra-file-access.rb
|
428
429
|
- lib/hydra/assets.rb
|
429
430
|
- lib/hydra/assets_controller_helper.rb
|
@@ -472,7 +473,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
472
473
|
requirements:
|
473
474
|
- - ! '>='
|
474
475
|
- !ruby/object:Gem::Version
|
475
|
-
version:
|
476
|
+
version: 1.9.3
|
476
477
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
477
478
|
none: false
|
478
479
|
requirements:
|