Bug 6874: [QA Follow-up] Adjustments for opac-retrieve
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Wed, 27 May 2015 11:52:25 +0000 (13:52 +0200)
committerTomas Cohen Arazi <tomascohen@unc.edu.ar>
Fri, 7 Aug 2015 18:23:36 +0000 (15:23 -0300)
Adds httpheaders sub to UploadedFiles; this will be extended on a new
report. (Idea is to add configurable headers for file extensions.)
Trivial unit test added.
Small cosmetic changes to opac-retrieve-file.

Test plan:
Run test UploadedFiles.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@unc.edu.ar>
C4/UploadedFiles.pm
opac/opac-retrieve-file.pl
t/db_dependent/UploadedFiles.t

index 341b5b6..c03acbf 100644 (file)
@@ -290,4 +290,18 @@ sub DelUploadedFile {
     return $retval;
 }
 
+=head2 httpheaders
+
+    httpheaders returns http headers for a retrievable upload
+    Will be extended by report 14282
+
+=cut
+
+sub httpheaders {
+    my $file= shift;
+    return
+        ( '-type' => 'application/octet-stream',
+          '-attachment' => $file, );
+}
+
 1;
index 4c122d2..419f2bd 100755 (executable)
@@ -27,21 +27,11 @@ my $input = new CGI;
 
 my $id = $input->param('id');
 my $file = C4::UploadedFiles::GetUploadedFile($id);
-exit 1 if not $file;
+exit 1 if !$file || !-f $file->{filepath};
 
-my $file_path = $file->{filepath};
-
-if( -f $file_path ) {
-    open my $fh, '<', $file_path or die "Can't open file: $!";
-    print $input->header(
-        -type => "application/octet-stream",
-        -attachment => $file->{filename}
-    );
-    while(<$fh>) {
-        print $_;
-    }
-} else {
-    exit 1;
+open my $fh, '<', $file->{filepath} or die "Can't open file: $!";
+print $input->header( C4::UploadedFiles::httpheaders( $file->{filename} ));
+while(<$fh>) {
+    print $_;
 }
-
-exit 0;
+close $fh;
index dfa1c47..908f9f9 100644 (file)
@@ -3,7 +3,7 @@
 use Modern::Perl;
 use File::Temp qw/ tempdir /;
 use Test::CGI::Multipart;
-use Test::More tests => 17;
+use Test::More tests => 18;
 use Test::Warn;
 
 use t::lib::Mocks;
@@ -55,3 +55,7 @@ my $UploadResult;
 warning_like { $UploadResult=C4::UploadedFiles::UploadFile($testfilename,'../',$testfile_fh->handle); } qr/^Filename or dirname contains '..'. Aborting upload/, "Expected warning for bad file upload.";
 is($UploadResult, undef, "UploadFile with dir containing \"..\" return undef");
 is(C4::UploadedFiles::GetUploadedFile(), undef, 'GetUploadedFile without parameters returns undef');
+
+#trivial test for httpheaders
+my @hdrs = C4::UploadedFiles::httpheaders('does_not_matter_yet');
+is( @hdrs == 4 && $hdrs[1] =~ /application\/octet-stream/, 1, 'Simple test for httpheaders'); #TODO Will be extended on report 14282