AnyEvent-Net-Amazon-S3
view release on metacpan or search on metacpan
t/02client.t view on Meta::CPAN
192021222324252627282930313233343536373839my
$aws_access_key_id
=
$ENV
{
'AWS_ACCESS_KEY_ID'
};
my
$aws_secret_access_key
=
$ENV
{
'AWS_ACCESS_KEY_SECRET'
};
my
$s3
= AnyEvent::Net::Amazon::S3->new(
aws_access_key_id
=>
$aws_access_key_id
,
aws_secret_access_key
=>
$aws_secret_access_key
,
retry
=> 1,
);
my
$readme_size
=
stat
(
'README'
)->size;
my
$readme_md5hex
= file_md5_hex(
'README'
);
my
$client
= AnyEvent::Net::Amazon::S3::Client->new(
s3
=>
$s3
);
my
@buckets
=
$client
->buckets;
TODO: {
local
$TODO
=
"These tests only work if you're pedro"
;
my
$first_bucket
=
$buckets
[0];
like(
$first_bucket
->owner_id,
qr/^c7483d612ac7f0c0/
,
'have owner id'
);
t/02client.t view on Meta::CPAN
232233234235236237238239240241242243244245246247248249250251252);
is(
$objects
[0]->etag,
$readme_md5hex
,
'newly uploaded object has the right etag'
);
is(
$objects
[0]->size,
$readme_size
,
'newly created object has the right size'
);
ok(
$objects
[0]->last_modified,
'newly created object has a last modified'
);
# download an object with get_filename
my
$tmp_fh
= File::Temp->new();
$object
->get_filename(
$tmp_fh
->filename);
is(
stat
(
$tmp_fh
->filename)->size,
$readme_size
,
'download has right size'
);
is( file_md5_hex(
$tmp_fh
->filename),
$readme_md5hex
,
'download has right etag'
);
$object
->
delete
;
# upload a public object with put_filename with known md5hex and size
$object
=
$bucket
->object(
key
=>
'the new public readme'
,
etag
=>
$readme_md5hex
,
size
=>
$readme_size
,
acl_short
=>
'public-read'
t/02client.t view on Meta::CPAN
317318319320321322323324325326327328329330331332333334335336my
$complete_upload_response
;
ok(
$complete_upload_response
=
$object
->complete_multipart_upload(
upload_id
=>
$upload_id
,
part_numbers
=> [1,2],
etags
=> \
@etags
),
"successful response for complete multipart upload"
);
#get the file and check that it looks like we expect
ok(
$object
->
exists
,
"object has now been created"
);
$tmp_fh
= File::Temp->new();
$object
->get_filename(
$tmp_fh
->filename);
is(
stat
(
$tmp_fh
->filename)->size, 6 * 1024 * 1024,
"downloaded file has a size equivalent to the sum of it's parts"
);
$tmp_fh
->
seek
((5 * 1024 * 1024) - 1, SEEK_SET);
#jump to 5MB position
my
$test_bytes
;
read
(
$tmp_fh
,
$test_bytes
, 2);
is(
$test_bytes
,
"xz"
,
"The second chunk of the file begins in the correct place"
);
#test listing a multipart object
$stream
=
$bucket
->list({
prefix
=>
'new multipart file'
});
lives_ok {
my
@items
=
$stream
->items}
'Listing a multipart file does not throw an exeption'
;
( run in 1.042 second using v1.01-cache-2.11-cpan-49f99fa48dc )