sufia 3.4.0 → 3.5.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.
- checksums.yaml +4 -4
- data/.travis.yml +6 -1
- data/Gemfile +7 -8
- data/README.md +13 -0
- data/SUFIA_VERSION +1 -1
- data/app/controllers/mailbox_controller.rb +8 -8
- data/app/jobs/ingest_local_file_job.rb +17 -13
- data/app/views/catalog/_home_text.html.erb +0 -3
- data/app/views/dashboard/_index_partials/_thumbnail_display.html.erb +5 -29
- data/app/views/mailbox/index.html.erb +9 -21
- data/app/views/users/_notify_link.html.erb +2 -17
- data/config/routes.rb +5 -3
- data/lib/sufia/files_controller_behavior.rb +45 -50
- data/lib/sufia/version.rb +1 -1
- data/lib/sufia/virus_found_error.rb +4 -0
- data/spec/controllers/generic_files_controller_spec.rb +14 -79
- data/spec/controllers/mailbox_controller_spec.rb +9 -13
- data/spec/features/users_spec.rb +0 -3
- data/spec/fixtures/sample_mpeg4.mp4 +0 -0
- data/spec/jobs/import_url_job_spec.rb +8 -8
- data/spec/jobs/ingest_local_file_job_spec.rb +13 -10
- data/spec/models/fits_datastream_spec.rb +72 -21
- data/spec/models/generic_file/actions_spec.rb +2 -17
- data/spec/models/generic_file/web_form_spec.rb +4 -3
- data/spec/models/generic_file_spec.rb +27 -0
- data/spec/routing/route_spec.rb +15 -20
- data/spec/spec_helper.rb +15 -2
- data/sufia-models/app/models/datastreams/fits_datastream.rb +10 -1
- data/sufia-models/lib/generators/sufia/models/install_generator.rb +1 -1
- data/sufia-models/lib/sufia/models/generic_file.rb +3 -0
- data/sufia-models/lib/sufia/models/generic_file/actions.rb +8 -11
- data/sufia-models/lib/sufia/models/generic_file/characterization.rb +19 -4
- data/sufia-models/lib/sufia/models/generic_file/virus_check.rb +33 -0
- data/sufia-models/lib/sufia/models/generic_file/web_form.rb +2 -3
- data/sufia-models/lib/sufia/models/jobs/import_url_job.rb +29 -31
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/sufia.gemspec +1 -1
- data/tasks/sufia-dev.rake +2 -1
- metadata +10 -10
- data/app/assets/images/rails.png +0 -0
- data/app/assets/images/site_images/temp/guitar.jpg +0 -0
- data/app/assets/images/splashscreen.png +0 -0
- data/app/assets/images/video-still.png +0 -0
@@ -3,7 +3,6 @@ require 'spec_helper'
|
|
3
3
|
describe GenericFilesController do
|
4
4
|
before do
|
5
5
|
controller.stub(:has_access?).and_return(true)
|
6
|
-
|
7
6
|
@user = FactoryGirl.find_or_create(:user)
|
8
7
|
sign_in @user
|
9
8
|
User.any_instance.stub(:groups).and_return([])
|
@@ -17,10 +16,7 @@ describe GenericFilesController do
|
|
17
16
|
end
|
18
17
|
after do
|
19
18
|
GenericFile.unstub(:new)
|
20
|
-
|
21
|
-
Batch.find("sample:batch_id").delete
|
22
|
-
rescue
|
23
|
-
end
|
19
|
+
Batch.find("sample:batch_id").delete rescue
|
24
20
|
@mock.delete unless @mock.inner_object.class == ActiveFedora::UnsavedDigitalObject
|
25
21
|
end
|
26
22
|
|
@@ -43,6 +39,15 @@ describe GenericFilesController do
|
|
43
39
|
CharacterizeJob.should_receive(:new).with('test:123').and_return(s2)
|
44
40
|
Sufia.queue.should_receive(:push).with(s2).once
|
45
41
|
xhr :post, :create, :files=>[file], :Filename=>"The world", :batch_id => "sample:batch_id", :permission=>{"group"=>{"public"=>"read"} }, :terms_of_service => '1'
|
42
|
+
flash[:error].should be_nil
|
43
|
+
end
|
44
|
+
|
45
|
+
it "displays a flash error when file has a virus" do
|
46
|
+
file = fixture_file_upload('/world.png', 'image/png')
|
47
|
+
Sufia::GenericFile::Actions.should_receive(:virus_check).with(file.path).and_raise(Sufia::VirusFoundError.new('A virus was found'))
|
48
|
+
xhr :post, :create, :files=>[file], :Filename=>"The world", :batch_id => "sample:batch_id", :permission=>{"group"=>{"public"=>"read"} }, :terms_of_service => '1'
|
49
|
+
flash[:error].should_not be_blank
|
50
|
+
flash[:error].should include('A virus was found')
|
46
51
|
end
|
47
52
|
|
48
53
|
it "should expand zip files" do
|
@@ -62,43 +67,6 @@ describe GenericFilesController do
|
|
62
67
|
xhr :post, :create, :files=>[file], :Filename=>"The world", :batch_id => "sample:batch_id", :permission=>{"group"=>{"public"=>"read"} }, :terms_of_service => '1'
|
63
68
|
end
|
64
69
|
|
65
|
-
it "should download and import a file from a given url" do
|
66
|
-
pending "This is just downloading a 401 error page"
|
67
|
-
date_today = Date.today
|
68
|
-
Date.stub(:today).and_return(date_today)
|
69
|
-
generic_file = GenericFile.new #find(self.pid)
|
70
|
-
Sufia::GenericFile::Actions.create_metadata(generic_file, @user, '1234')
|
71
|
-
#generic_file.import_url = "https://dl.dropboxusercontent.com/1/view/kcb4j1dtkw0td3z/ArticleCritique.doc"
|
72
|
-
generic_file.import_url = "https://dl.dropboxusercontent.com/1/view/m4og1xrgbk3ihw6/Getting%20Started.pdf"
|
73
|
-
generic_file.save
|
74
|
-
f = Tempfile.new(generic_file.pid) #self.pid)
|
75
|
-
f.binmode
|
76
|
-
# download file from url
|
77
|
-
uri = URI(generic_file.import_url)
|
78
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
79
|
-
http.use_ssl = uri.scheme == "https" # enable SSL/TLS
|
80
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
81
|
-
|
82
|
-
http.start do
|
83
|
-
http.request_get(uri.to_s) do |resp|
|
84
|
-
resp.read_body do |segment|
|
85
|
-
f.write(segment)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
job_user = User.batchuser()
|
90
|
-
user = User.find_by_user_key(generic_file.depositor)
|
91
|
-
# check for virus
|
92
|
-
if Sufia::GenericFile::Actions.virus_check(f) != 0
|
93
|
-
message = "The file (#{File.basename(uri.path)}) was unable to be imported because it contained a virus."
|
94
|
-
job_user.send_message(user, message, 'File Import Error')
|
95
|
-
return
|
96
|
-
end
|
97
|
-
f.rewind
|
98
|
-
# attach downloaded file to generic file stubbed out
|
99
|
-
Sufia::GenericFile::Actions.create_content(generic_file, f, File.basename(uri.path), 'content', user)
|
100
|
-
end
|
101
|
-
|
102
70
|
it "should create and save a file asset from the given params" do
|
103
71
|
date_today = Date.today
|
104
72
|
Date.stub(:today).and_return(date_today)
|
@@ -159,19 +127,6 @@ describe GenericFilesController do
|
|
159
127
|
saved_file.to_solr.keys.should include('depositor_tesim')
|
160
128
|
saved_file.to_solr['depositor_tesim'].should == ['jilluser@example.com']
|
161
129
|
end
|
162
|
-
it "Should call virus check" do
|
163
|
-
controller.should_receive(:virus_check).and_return(0)
|
164
|
-
file = fixture_file_upload('/world.png','image/png')
|
165
|
-
|
166
|
-
s1 = double('one')
|
167
|
-
ContentDepositEventJob.should_receive(:new).with('test:123', 'jilluser@example.com').and_return(s1)
|
168
|
-
Sufia.queue.should_receive(:push).with(s1).once
|
169
|
-
|
170
|
-
s2 = double('one')
|
171
|
-
CharacterizeJob.should_receive(:new).with('test:123').and_return(s2)
|
172
|
-
Sufia.queue.should_receive(:push).with(s2).once
|
173
|
-
xhr :post, :create, :files=>[file], :Filename=>"The world", :batch_id => "sample:batch_id", :permission=>{"group"=>{"public"=>"read"} }, :terms_of_service=>"1"
|
174
|
-
end
|
175
130
|
|
176
131
|
it "should error out of create and save after on continuos rsolr error" do
|
177
132
|
GenericFile.any_instance.stub(:save).and_raise(RSolr::Error::Http.new({},{}))
|
@@ -181,7 +136,7 @@ describe GenericFilesController do
|
|
181
136
|
response.body.should include("Error occurred while creating generic file.")
|
182
137
|
end
|
183
138
|
end
|
184
|
-
|
139
|
+
|
185
140
|
describe "#create with local_file" do
|
186
141
|
let (:mock_url) {"http://example.com"}
|
187
142
|
before do
|
@@ -255,27 +210,9 @@ describe GenericFilesController do
|
|
255
210
|
end
|
256
211
|
end
|
257
212
|
end
|
258
|
-
|
259
|
-
describe "#virus_check" do
|
260
|
-
it "passing virus check should not create flash error" do
|
261
|
-
GenericFile.any_instance.stub(:to_solr).and_return({})
|
262
|
-
file = fixture_file_upload('/world.png','image/png')
|
263
|
-
Sufia::GenericFile::Actions.should_receive(:virus_check).with(file).and_return(0)
|
264
|
-
controller.send :virus_check, file
|
265
|
-
flash[:error].should be_nil
|
266
|
-
end
|
267
|
-
it "failing virus check should create flash" do
|
268
|
-
GenericFile.any_instance.stub(:to_solr).and_return({})
|
269
|
-
file = fixture_file_upload('/world.png','image/png')
|
270
|
-
Sufia::GenericFile::Actions.should_receive(:virus_check).with(file).and_return(1)
|
271
|
-
controller.send :virus_check, file
|
272
|
-
flash[:error].should_not be_empty
|
273
|
-
end
|
274
|
-
end
|
275
213
|
|
276
214
|
describe "audit" do
|
277
215
|
before do
|
278
|
-
#GenericFile.any_instance.stub(:to_solr).and_return({})
|
279
216
|
@generic_file = GenericFile.new
|
280
217
|
@generic_file.add_file(File.open(fixture_path + '/world.png'), 'content', 'world.png')
|
281
218
|
@generic_file.apply_depositor_metadata('mjg36')
|
@@ -303,7 +240,7 @@ describe GenericFilesController do
|
|
303
240
|
end
|
304
241
|
after do
|
305
242
|
@user.delete
|
306
|
-
end
|
243
|
+
end
|
307
244
|
it "should delete the file" do
|
308
245
|
GenericFile.find(@generic_file.pid).should_not be_nil
|
309
246
|
delete :destroy, :id=>@generic_file.pid
|
@@ -319,7 +256,6 @@ describe GenericFilesController do
|
|
319
256
|
|
320
257
|
describe "update" do
|
321
258
|
before do
|
322
|
-
#controller.should_receive(:virus_check).and_return(0)
|
323
259
|
@generic_file = GenericFile.new
|
324
260
|
@generic_file.apply_depositor_metadata(@user)
|
325
261
|
@generic_file.save
|
@@ -374,7 +310,6 @@ describe GenericFilesController do
|
|
374
310
|
posted_file.content.mimeType.should == "image/jpeg"
|
375
311
|
post :update, :id=>@generic_file.pid, :revision=>'content.0'
|
376
312
|
|
377
|
-
|
378
313
|
restored_file = GenericFile.find(@generic_file.pid)
|
379
314
|
version3 = restored_file.content.latest_version
|
380
315
|
version3.versionID.should_not == version2.versionID
|
@@ -396,7 +331,7 @@ describe GenericFilesController do
|
|
396
331
|
version1 = posted_file.content.latest_version
|
397
332
|
posted_file.content.version_committer(version1).should == @user.user_key
|
398
333
|
|
399
|
-
# other user uploads new version
|
334
|
+
# other user uploads new version
|
400
335
|
# TODO this should be a separate test
|
401
336
|
archivist = FactoryGirl.find_or_create(:archivist)
|
402
337
|
controller.stub(:current_user).and_return(archivist)
|
@@ -454,7 +389,7 @@ describe GenericFilesController do
|
|
454
389
|
end
|
455
390
|
it "should spawn a virus check" do
|
456
391
|
# The expectation is in the begin block
|
457
|
-
|
392
|
+
Sufia::GenericFile::Actions.should_receive(:virus_check).and_return(0)
|
458
393
|
s1 = double('one')
|
459
394
|
ContentNewVersionEventJob.should_receive(:new).with(@generic_file.pid, 'jilluser@example.com').and_return(s1)
|
460
395
|
Sufia.queue.should_receive(:push).with(s1).once
|
@@ -17,32 +17,28 @@ describe MailboxController do
|
|
17
17
|
end
|
18
18
|
describe "#index" do
|
19
19
|
it "should show message" do
|
20
|
-
User.any_instance.should_receive(:mark_as_read)
|
21
20
|
get :index
|
22
21
|
response.should be_success
|
23
22
|
assigns[:messages].first.last_message.body.should == 'Test Message'
|
24
23
|
assigns[:messages].first.last_message.subject.should == 'Test Subject'
|
24
|
+
@user.mailbox.inbox(:unread => true).count.should == 0
|
25
25
|
end
|
26
26
|
end
|
27
27
|
describe "#delete" do
|
28
28
|
it "should delete message" do
|
29
29
|
rec = @another_user.send_message(@user, 'message 2', 'subject 2')
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
response.should redirect_to(@routes.url_helpers.mailbox_path)
|
35
|
-
@user.mailbox.inbox.count.should ==1
|
30
|
+
expect {
|
31
|
+
delete :destroy, :id=> rec.conversation.id
|
32
|
+
response.should redirect_to(@routes.url_helpers.notifications_path)
|
33
|
+
}.to change {@user.mailbox.inbox.count}.by(-1)
|
36
34
|
end
|
37
35
|
it "should not delete message" do
|
38
36
|
@curator = FactoryGirl.find_or_create(:curator)
|
39
37
|
rec = @another_user.send_message(@curator, 'message 3', 'subject 3')
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
@curator.mailbox.inbox.count
|
44
|
-
rec.delete
|
45
|
-
@curator.delete
|
38
|
+
expect {
|
39
|
+
delete :destroy, :id=> rec.conversation.id
|
40
|
+
response.should redirect_to(@routes.url_helpers.notifications_path)
|
41
|
+
}.to_not change { @curator.mailbox.inbox.count}
|
46
42
|
end
|
47
43
|
end
|
48
44
|
describe "#delete_all" do
|
data/spec/features/users_spec.rb
CHANGED
Binary file
|
@@ -15,7 +15,7 @@ describe ImportUrlJob do
|
|
15
15
|
generic_file.destroy
|
16
16
|
end
|
17
17
|
|
18
|
-
subject { ImportUrlJob.new(generic_file.id) }
|
18
|
+
subject(:job) { ImportUrlJob.new(generic_file.id) }
|
19
19
|
|
20
20
|
it "should have no content at the outset" do
|
21
21
|
generic_file.content.size.should be_nil
|
@@ -23,23 +23,23 @@ describe ImportUrlJob do
|
|
23
23
|
|
24
24
|
it "should create a content datastream" do
|
25
25
|
http_res = double('response')
|
26
|
+
http_res.stub(:start).and_yield
|
26
27
|
http_res.stub(:read_body).and_yield(File.open(File.expand_path('../../fixtures/world.png', __FILE__)).read)
|
27
28
|
Net::HTTP.any_instance.stub(:request_get).and_yield(http_res)
|
28
29
|
Net::HTTP.any_instance.should_receive(:request_get).with(URI(generic_file.import_url).request_uri)
|
29
|
-
|
30
|
+
job.run
|
30
31
|
generic_file.reload.content.size.should == 4218
|
31
32
|
end
|
32
33
|
|
33
34
|
describe "virus checking" do
|
34
35
|
it "should run virus check" do
|
35
|
-
Sufia::GenericFile::Actions.
|
36
|
-
|
37
|
-
subject.run
|
36
|
+
expect(Sufia::GenericFile::Actions).to receive(:virus_check).twice.and_return(0)
|
37
|
+
job.run
|
38
38
|
end
|
39
39
|
it "should abort if virus check fails" do
|
40
|
-
Sufia::GenericFile::Actions.
|
41
|
-
|
42
|
-
subject.
|
40
|
+
Sufia::GenericFile::Actions.stub(:virus_check).and_raise(Sufia::VirusFoundError.new('A virus was found'))
|
41
|
+
job.run
|
42
|
+
expect(user.mailbox.inbox.first.subject).to eq("File Import Error")
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -3,33 +3,36 @@ require 'spec_helper'
|
|
3
3
|
describe IngestLocalFileJob do
|
4
4
|
let(:user) { FactoryGirl.find_or_create(:user) }
|
5
5
|
|
6
|
-
let (:generic_file) do
|
7
|
-
GenericFile.new.tap { |f| f.apply_depositor_metadata(user); f.save }
|
8
|
-
end
|
6
|
+
let (:generic_file) do
|
7
|
+
GenericFile.new.tap { |f| f.apply_depositor_metadata(user); f.save }
|
8
|
+
end
|
9
|
+
|
10
|
+
subject(:job) { IngestLocalFileJob.new(generic_file.id, @mock_upload_directory, "world.png", user.user_key) }
|
9
11
|
|
10
12
|
before do
|
11
13
|
@mock_upload_directory = 'spec/mock_upload_directory'
|
12
14
|
Dir.mkdir @mock_upload_directory unless File.exists? @mock_upload_directory
|
13
15
|
FileUtils.copy(File.expand_path('../../fixtures/world.png', __FILE__), @mock_upload_directory)
|
14
16
|
end
|
17
|
+
|
15
18
|
after do
|
16
19
|
generic_file.destroy
|
17
20
|
end
|
18
|
-
subject { IngestLocalFileJob.new(generic_file.id, @mock_upload_directory, "world.png", user.user_key) }
|
19
21
|
|
20
22
|
it "should have attached a file" do
|
21
|
-
|
23
|
+
job.run
|
22
24
|
generic_file.reload.content.size.should == 4218
|
23
25
|
end
|
24
|
-
|
26
|
+
|
25
27
|
describe "virus checking" do
|
26
28
|
it "should run virus check" do
|
27
|
-
Sufia::GenericFile::Actions.
|
28
|
-
|
29
|
+
expect(Sufia::GenericFile::Actions).to receive(:virus_check).twice.and_return(0)
|
30
|
+
job.run
|
29
31
|
end
|
30
32
|
it "should abort if virus check fails" do
|
31
|
-
Sufia::GenericFile::Actions.
|
32
|
-
|
33
|
+
Sufia::GenericFile::Actions.stub(:virus_check).and_raise(Sufia::VirusFoundError.new('A virus was found'))
|
34
|
+
job.run
|
35
|
+
expect(user.mailbox.inbox.first.subject).to eq("Local file ingest error")
|
33
36
|
end
|
34
37
|
end
|
35
38
|
end
|
@@ -1,28 +1,79 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe FitsDatastream, :unless => $in_travis do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
describe "image" do
|
5
|
+
before(:all) do
|
6
|
+
@file = GenericFile.new
|
7
|
+
@file.add_file(File.open(fixture_path + '/world.png'), 'content', 'world.png')
|
8
|
+
@file.characterize
|
9
|
+
end
|
10
|
+
it "should have a format label" do
|
11
|
+
@file.format_label.should == ["Portable Network Graphics"]
|
12
|
+
end
|
13
|
+
it "should have a mime type" do
|
14
|
+
@file.mime_type.should == "image/png"
|
15
|
+
end
|
16
|
+
it "should have a file size" do
|
17
|
+
@file.file_size.should == ["4218"]
|
18
|
+
end
|
19
|
+
it "should have a file size" do
|
20
|
+
@file.file_size.should == ["4218"]
|
21
|
+
end
|
22
|
+
it "should have a last modified timestamp" do
|
23
|
+
@file.last_modified.should_not be_empty
|
24
|
+
end
|
25
|
+
it "should have a filename" do
|
26
|
+
@file.filename.should_not be_empty
|
27
|
+
end
|
28
|
+
it "should have a checksum" do
|
29
|
+
@file.original_checksum.should == ["28da6259ae5707c68708192a40b3e85c"]
|
30
|
+
end
|
31
|
+
it "should have a height" do
|
32
|
+
@file.height.should == ["50"]
|
33
|
+
end
|
34
|
+
it "should have a width" do
|
35
|
+
@file.width.should == ["50"]
|
36
|
+
end
|
8
37
|
end
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
38
|
+
describe "video" do
|
39
|
+
before(:all) do
|
40
|
+
@file = GenericFile.new
|
41
|
+
@file.add_file(File.open(fixture_path + '/sample_mpeg4.mp4'), 'content', 'sample_mpeg4.mp4')
|
42
|
+
@file.characterize
|
43
|
+
end
|
44
|
+
it "should have a format label" do
|
45
|
+
@file.format_label.should == ["ISO Media, MPEG v4 system, version 2"]
|
46
|
+
end
|
47
|
+
it "should have a mime type" do
|
48
|
+
@file.mime_type.should == "video/mp4"
|
49
|
+
end
|
50
|
+
it "should have a file size" do
|
51
|
+
@file.file_size.should == ["245779"]
|
52
|
+
end
|
53
|
+
it "should have a last modified timestamp" do
|
54
|
+
@file.last_modified.should_not be_empty
|
55
|
+
end
|
56
|
+
it "should have a filename" do
|
57
|
+
@file.filename.should_not be_empty
|
58
|
+
end
|
59
|
+
it "should have a checksum" do
|
60
|
+
@file.original_checksum.should == ["dc77a8de8c091c19d86df74280f6feb7"]
|
61
|
+
end
|
62
|
+
it "should have a width" do
|
63
|
+
@file.width.should == ["190"]
|
64
|
+
end
|
65
|
+
it "should have a height" do
|
66
|
+
@file.height.should == ["240"]
|
67
|
+
end
|
68
|
+
it "should have a sample_rate" do
|
69
|
+
@file.sample_rate.should == ["32000"]
|
70
|
+
end
|
71
|
+
it "should have a duration" do
|
72
|
+
@file.duration.should == ["4.97 s"]
|
73
|
+
end
|
74
|
+
it "should have a frame_rate" do
|
75
|
+
@file.frame_rate.should == ["30"]
|
76
|
+
end
|
26
77
|
end
|
27
78
|
end
|
28
79
|
|
@@ -1,25 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe GenericFile do
|
4
|
-
|
5
4
|
describe "#virus_check" do
|
6
|
-
before do
|
7
|
-
unless defined? ClamAV
|
8
|
-
class ClamAV
|
9
|
-
def self.instance
|
10
|
-
new
|
11
|
-
end
|
12
|
-
end
|
13
|
-
@stubbed_clamav = true
|
14
|
-
end
|
15
|
-
end
|
16
|
-
after do
|
17
|
-
Object.send(:remove_const, :ClamAV) if @stubbed_clamav
|
18
|
-
end
|
19
5
|
it "should return the results of running ClamAV scanfile method" do
|
20
|
-
|
21
|
-
|
22
|
-
Sufia::GenericFile::Actions.virus_check(File.new(fixture_path + '/world.png')).should == 1
|
6
|
+
ClamAV.instance.should_receive(:scanfile).and_return(1)
|
7
|
+
expect { Sufia::GenericFile::Actions.virus_check(File.new(fixture_path + '/world.png')) }.to raise_error(Sufia::VirusFoundError)
|
23
8
|
end
|
24
9
|
end
|
25
10
|
end
|