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 )