App-Smolder-Report
view release on metacpan or search on metacpan
t/01-basic.t view on Meta::CPAN
#!perl
use strict;
use warnings;
use Test::More qw( no_plan );
use Test::Exception;
use Test::Deep;
use App::Smolder::Report;
use File::Temp;
my $sr = App::Smolder::Report->new;
ok($sr);
ok(!defined($sr->dry_run));
ok(!defined($sr->username));
ok(!defined($sr->password));
ok(!defined($sr->project_id));
ok(!defined($sr->server));
ok(!defined($sr->run_as_api));
my @incr_tests = (
{
add_to_cfg => {},
re => qr/Required 'server' setting is empty or missing/,
},
{
add_to_cfg => { server => 'server.example.com' },
re => qr/Required 'project_id' setting is empty or missing/,
},
{
add_to_cfg => { project_id => 1 },
re => qr/Required 'username' setting is empty or missing/,
},
{
add_to_cfg => { username => 'user1' },
re => qr/Required 'password' setting is empty or missing/,
},
{
add_to_cfg => { password => 'pass1' },
re => qr/You must provide at least one report to upload/,
},
);
foreach my $t (@incr_tests) {
$sr->_merge_cfg_hash($t->{add_to_cfg});
throws_ok sub { $sr->report }, $t->{re};
}
my $url;
lives_ok sub { $url = $sr->report('Makefile.PL') };
is($url, 'http://server.example.com/redirected/to/me');
cmp_deeply($LWP::UserAgent::last_post, [
'http://server.example.com/app/developer_projects/process_add_report/1',
'Content-Type' => 'form-data',
'Content' => [
username => 'user1',
password => 'pass1',
tags => '',
report_file => ['Makefile.PL'],
],
]);
$sr->_merge_cfg_hash({ server => 'https://secure' });
lives_ok sub { $url = $sr->report('Makefile.PL') };
is($url, 'https://secure/redirected/to/me');
cmp_deeply($LWP::UserAgent::last_post, [
'https://secure/app/developer_projects/process_add_report/1',
'Content-Type' => 'form-data',
'Content' => [
username => 'user1',
password => 'pass1',
tags => '',
report_file => ['Makefile.PL'],
],
]);
lives_ok sub { $url = $sr->report('Makefile.PL', 'MANIFEST') };
is($url, 'https://secure/redirected/to/me');
cmp_deeply($LWP::UserAgent::last_post, [
'https://secure/app/developer_projects/process_add_report/1',
'Content-Type' => 'form-data',
'Content' => [
username => 'user1',
password => 'pass1',
tags => '',
report_file => ['MANIFEST'],
],
]);
throws_ok sub {
$url = $sr->report('Makefile.PL', 'MANIFEST', 'NoSuchFile')
}, qr/FATAL: Could not read report file 'NoSuchFile'/;
my $tmp = File::Temp->new( CLEANUP => 1);
$sr->_merge_cfg_hash({ delete => 1 });
lives_ok sub { $url = $sr->report($tmp->filename) };
ok(! -e $tmp->filename);
$tmp = File::Temp->new( CLEANUP => 1);
$sr->_merge_cfg_hash({ delete => 1 });
( run in 1.347 second using v1.01-cache-2.11-cpan-b16cb0d3907 )