#! /usr/bin/env perl use strict; use warnings; use Cwd; use Test::More; use File::Temp 'tempfile'; use Tapper::CLI::Testrun; use Tapper::CLI::Testrun::Command::list; use Tapper::Schema::TestTools; use Tapper::Model 'model'; use Test::Fixture::DBIC::Schema; use File::Slurp 'slurp'; use Tapper::Reports::API::Daemon; # ----------------------------------------------------------------------------------------------------------------- construct_fixture( schema => reportsdb_schema, fixture => 't/fixtures/reportsdb/report.yml' ); # ----------------------------------------------------------------------------------------------------------------- # ____________________ START SERVER ____________________ $ENV{MX_DAEMON_STDOUT} = getcwd."/test-tapper_reports_api_daemon_stdout.log"; $ENV{MX_DAEMON_STDERR} = getcwd."/test-tapper_reports_api_daemon_stderr.log"; my $grace_period = 5; my $port = Tapper::Config->subconfig->{report_api_port}; my $api = new Tapper::Reports::API::Daemon ( basedir => getcwd, pidfile => getcwd.'/test-tapper-reports-api-daemon-test.pid', port => $port, ); $api->run("start"); sleep $grace_period; # ____________________ UPLOAD/DOWNLOAD ____________________ my $file = 't/dummy-attachment.txt'; my $upload = `$^X -Ilib bin/tapper-api upload --reportid 23 --file "$file"`; my $download = `$^X -Ilib bin/tapper-api download --reportid 23 --file "$file"`; my $expected = slurp $file; is ($download, $expected, "downloaded file is uploaded file"); # ____________________ UPLOAD TWICE / DOWNLOAD 2ND ____________________ # one file, (used twice) my ($FH, $file1) = tempfile( UNLINK => 1 ); # first my $content1 = slurp $file; print $FH $content1; close $FH; $upload = `$^X -Ilib bin/tapper-api upload --reportid 23 --file "$file1"`; # second my $content2 = $content1."ZOMTEC"; open $FH, ">", $file1 or die "Cannot write $file1"; print $FH $content2; close $FH; $upload = `$^X -Ilib bin/tapper-api upload --reportid 23 --file "$file1"`; # download first $expected = $content1; $download = `$^X -Ilib bin/tapper-api download --reportid 23 --file "$file1"`; is ($download, $expected, "downloaded 1st file is uploaded file"); # downloaded first with explicit index $expected = $content1; $download = `$^X -Ilib bin/tapper-api download --reportid 23 --file "$file1" --index=0`; is ($download, $expected, "downloaded 1st file with explicit index is uploaded file"); $expected = $content2; $download = `$^X -Ilib bin/tapper-api download --reportid 23 --file "$file1" --nth=1`; is ($download, $expected, "downloaded 2nd file is uploaded file"); # ____________________ CLOSE SERVER ____________________ #sleep 60; $api->run("stop"); done_testing();