Amazon-S3
view release on metacpan or search on metacpan
S3TestUtils.pm view on Meta::CPAN
package S3TestUtils;
use strict;
use warnings;
use Data::Dumper;
use English qw(-no_match_vars);
use List::Util qw(any);
use Readonly;
use Test::More;
use parent qw(Exporter);
# chars
Readonly our $EMPTY => q{};
Readonly our $SLASH => q{/};
# booleans
Readonly our $TRUE => 1;
Readonly our $FALSE => 0;
# mocking services
Readonly our $DEFAULT_LOCAL_STACK_HOST => 'localhost:4566';
Readonly our $DEFAULT_MINIO_HOST => 'localhost:9000';
# http codes
Readonly our $HTTP_OK => '200';
Readonly our $HTTP_FORBIDDEN => '403';
Readonly our $HTTP_CONFLICT => '409';
# misc
Readonly our $TEST_BUCKET_PREFIX => 'net-amazon-s3-test';
# create a domain name for this if AMAZON_S3_DNS_BUCKET_NAMES is true
Readonly our $MOCK_SERVICES_BUCKET_NAME => $TEST_BUCKET_PREFIX . '-test';
Readonly our $PUBLIC_READ_POLICY => <<END_OF_POLICY;
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="Group">
<URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>
</Grantee>
<Permission>READ</Permission>
</Grant>
END_OF_POLICY
our %EXPORT_TAGS = (
constants => [
qw(
$EMPTY
$SLASH
$TRUE
$FALSE
$DEFAULT_LOCAL_STACK_HOST
$HTTP_OK
$HTTP_CONFLICT
$HTTP_FORBIDDEN
$TEST_BUCKET_PREFIX
$MOCK_SERVICES_BUCKET_NAME
$PUBLIC_READ_POLICY
)
],
subs => [
qw(
add_keys
check_test_bucket
create_bucket
get_s3_service
is_aws
make_bucket_name
set_s3_host
)
],
);
our @EXPORT_OK = map { @{ $EXPORT_TAGS{$_} } } ( keys %EXPORT_TAGS );
########################################################################
sub make_bucket_name {
########################################################################
return $MOCK_SERVICES_BUCKET_NAME
if !is_aws();
my $suffix = eval {
require Data::UUID;
return lc Data::UUID->new->create_str();
};
$suffix //= join $EMPTY, map { ( 'A' .. 'Z', 'a' .. 'z', 0 .. 9 )[$_] }
map { int rand 62 } ( 0 .. 15 );
my $bucket_name = sprintf '%s-%s', $TEST_BUCKET_PREFIX, $suffix;
return $bucket_name;
}
########################################################################
sub is_aws {
########################################################################
return ( $ENV{AMAZON_S3_LOCALSTACK} || $ENV{AMAZON_S3_MINIO} )
( run in 0.811 second using v1.01-cache-2.11-cpan-13bb782fe5a )