AWS-S3
view release on metacpan or search on metacpan
t/aws/s3/file_iterator.t view on Meta::CPAN
#!perl
use strict;
use warnings;
package Mocked::HTTP::Response;
use Moose;
extends 'HTTP::Response';
sub content { shift->{_msg}; }
sub code { 200 }
sub is_success { 1 }
sub header { $_[1] =~ /content-length/i ? 1 : 'header' }
1;
package main;
use Test::More;
use Test::Deep;
use Test::Exception;
use FindBin qw/ $Script /;
use Data::Section::Simple 'get_data_section';
use Carp 'confess';
$SIG{__DIE__} = \&confess;
use_ok('AWS::S3');
use_ok('AWS::S3::FileIterator');
use_ok('AWS::S3::Bucket');
my $s3 = AWS::S3->new(
access_key_id => $ENV{AWS_ACCESS_KEY_ID} // 'foo',
secret_access_key => $ENV{AWS_SECRET_ACCESS_KEY} // 'bar',
endpoint => $ENV{AWS_ENDPOINT} // 's3.baz.com',
);
isa_ok(
my $bucket = AWS::S3::Bucket->new(
s3 => $s3,
name => $ENV{AWS_TEST_BUCKET} // 'maibucket',
),
'AWS::S3::Bucket'
);
foreach my $args (
[qw( page_size page_number )],
[qw( bucket page_number )],
[qw( bucket page_size )],
)
{
throws_ok {
AWS::S3::FileIterator->new( map { $_ => 1 } @$args );
}
qr/Required argument/, 'dies when arg is missing';
}
{
isa_ok(
my $iterator = AWS::S3::FileIterator->new(
page_number => 2,
page_size => 1,
bucket => $bucket,
prefix => 'img',
),
'AWS::S3::FileIterator'
);
is( $iterator->marker,'','marker' );
is( $iterator->pattern,qr/.*/,'pattern' );
isa_ok( $iterator->bucket,'AWS::S3::Bucket' );
is( $iterator->page_size,1,'page_size' );
is( $iterator->has_prev,'','has_prev' );
is( $iterator->has_next,undef,'has_next' );
is( $iterator->page_number,1,'get page_number' );
is( $iterator->page_number(1),0,'set page_number' );
is( $iterator->prefix,'img','prefix' );
{
my $iterator2 = AWS::S3::FileIterator->new(
page_number => 1,
page_size => 1,
bucket => $bucket,
marker => 'foo',
pattern => qr/\d/,
);
is( $iterator2->marker,'foo','marker passed');
is( $iterator2->pattern,qr/\d/,'pattern passed');
is( $iterator2->prefix,undef,'!prefix' );
}
my $mocked_response = Mocked::HTTP::Response->new( 200,get_data_section('ListBucketResult.xml') );
local *LWP::UserAgent::Determined::request = sub { $mocked_response };
my @pages = $iterator->next_page; # to check wantarray
( run in 2.689 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )