Alien-Base-ModuleBuild
view release on metacpan or search on metacpan
t/alien_base_modulebuild_repository_http.t view on Meta::CPAN
use Test2::V0 -no_srand => 1;
use Alien::Base::ModuleBuild::Repository::HTTP;
use Path::Tiny qw( path );
use File::chdir;
use File::Temp;
use URI::file;
subtest 'network fetch' => sub {
is(
Alien::Base::ModuleBuild::Repository::HTTP->is_network_fetch,
1
);
};
subtest 'secure fetch' => sub {
is(
Alien::Base::ModuleBuild::Repository::HTTP->new( protocol => 'http' )->is_secure_fetch,
F(),
);
is(
Alien::Base::ModuleBuild::Repository::HTTP->new( protocol => 'https' )->is_secure_fetch,
T(),
);
is(
Alien::Base::ModuleBuild::Repository::HTTP->new( protocol => 'http', exact_filename => 'https://foo' )->is_secure_fetch,
T(),
);
is(
Alien::Base::ModuleBuild::Repository::HTTP->new( protocol => 'http', exact_filename => 'http://foo' )->is_secure_fetch,
F(),
);
};
subtest 'verify tls' => sub {
local $ENV{ALIEN_DOWNLOAD_RULE};
delete $ENV{ALIEN_DOWNLOAD_RULE};
subtest 'HTTP::Tiny' => sub {
my $new_args;
my $mock = mock 'HTTP::Tiny' => (
around => [
new => sub {
my($orig, $self, @args) = @_;
$new_args = { @args };
$self->$orig(@args);
},
],
);
$ENV{ALIEN_DOWNLOAD_RULE} = 'warn';
Alien::Base::ModuleBuild::Repository::HTTP->new->connection;
is(
$new_args,
hash {
field agent => match qr/^Alien-Base-ModuleBuild\/HTTP::Tiny\//;
end;
},
'warn',
);
$ENV{ALIEN_DOWNLOAD_RULE} = 'digest_or_encrypt';
$new_args = {};
Alien::Base::ModuleBuild::Repository::HTTP->new->connection;
is(
$new_args,
hash {
field agent => match qr/Alien-Base-ModuleBuild\/HTTP::Tiny\//;
field verify_SSL => 1;
end;
},
'digest_or_encrypt',
);
};
subtest 'LWP' => sub {
skip_all 'subtest requires LWP::UserAgent' unless eval { require LWP::UserAgent; 1 };
my $new_args;
( run in 1.731 second using v1.01-cache-2.11-cpan-39bf76dae61 )