Apache-SWIT/t/apache/080_upload.t
use strict;
use warnings FATAL => 'all';
use Test::More tests => 20;
use Data::Dumper;
use File::Temp qw(tempdir);
use File::Slurp;
BEGIN { use_ok('T::Test');
use_ok('T::Upload');
use_ok('T::Empty');
};
T::Test->make_aliases(upload => 'T::Upload', empty => 'T::Empty');
my $td = tempdir('/tmp/lo_test_XXXXXXXX', CLEANUP => 1);
my $t = T::Test->new;
$t->ok_ht_upload_r(base_url => '/test/upload/r', ht => { the_upload => ''
, HT_SEALED_loid => '' });
my @res = $t->ht_upload_u(ht => { the_upload => '/etc/passwd' });
my ($enc_loid) = ($res[0] =~ /loid=(\w+)/);
isnt($enc_loid, undef) or exit 1;
my $loid = HTML::Tested::Seal->instance->decrypt($enc_loid);
cmp_ok($loid, '>', 0) or exit 1;
my $dbh = Apache::SWIT::DB::Connection->instance->db_handle;
$dbh->begin_work;
$dbh->func($loid, "$td/passwd", 'lo_export')
or die "# Unable to export $loid!";
$dbh->commit;
is(read_file("$td/passwd"), read_file('/etc/passwd'));
$t->ok_follow_link(text => 'Get Plain');
$t->with_or_without_mech_do(2, sub {
is($t->mech->content, read_file('/etc/passwd'));
is($t->mech->ct, 'text/plain');
});
$t->ok_ht_upload_r(base_url => '/test/upload/r', ht => { the_upload => ''
, HT_SEALED_loid => '' });
$t->ht_upload_u(ht => { mime_upload => '/etc/passwd' });
$t->ok_follow_link(text => 'Get Mime');
is($t->mech->content, read_file('/etc/passwd'));
is($t->mech->ct, 'text/plain');
$t->ok_ht_empty_r(base_url => '/test/empty/r', ht => { first => '' });
$t->ht_empty_u(ht => {});
$t->ok_ht_empty_r(ht => { first => '' });
$t->ok_ht_upload_r(base_url => '/test/upload/r', ht => { the_upload => ''
, HT_SEALED_loid => '' });
$t->ht_upload_u(ht => { the_upload => '/etc/passwd', val => 'failv' });
$t->ok_ht_upload_r(ht => { the_upload => '', val => 'failv'
, HT_SEALED_loid => '' });
$t->ok_ht_upload_r(base_url => '/test/upload/r', ht => { the_upload => '' });
$t->ht_upload_u(ht => { the_upload => '/bin/ls' });
$t->ok_ht_upload_r(ht => { the_upload => '', val => 'too_big'
, HT_SEALED_loid => '' });