Amazon-Signature4-Lite
view release on metacpan or search on metacpan
t/01-signature4-lite.t view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use_ok(qw( Amazon::Signature4::Lite));
########################################################################
# Helpers
########################################################################
# Fixed credentials from the AWS SigV4 test suite
my $TEST_ACCESS_KEY = 'AKIDEXAMPLE';
my $TEST_SECRET_KEY = 'wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY';
my $TEST_REGION = 'us-east-1';
my $TEST_SERVICE = 'service';
# 2015-08-30 12:36:00 UTC = 1440937360
my $TEST_TIME = 1440938160;
sub new_signer {
my (%args) = @_;
return Amazon::Signature4::Lite->new(
access_key => $TEST_ACCESS_KEY,
secret_key => $TEST_SECRET_KEY,
region => $TEST_REGION,
service => $TEST_SERVICE,
%args,
);
}
########################################################################
# constructor
########################################################################
subtest 'constructor' => sub {
# required args
eval { Amazon::Signature4::Lite->new( secret_key => 'x', region => 'us-east-1' ) };
like $@, qr/access_key is required/, 'croaks without access_key';
eval { Amazon::Signature4::Lite->new( access_key => 'x', region => 'us-east-1' ) };
like $@, qr/secret_key is required/, 'croaks without secret_key';
eval { Amazon::Signature4::Lite->new( access_key => 'x', secret_key => 'y' ) };
like $@, qr/region is required/, 'croaks without region';
# defaults
my $s = new_signer();
is $s->{service}, 'service', 'service set from arg';
my $s2 = Amazon::Signature4::Lite->new(
access_key => 'k',
secret_key => 's',
region => 'us-east-1',
);
is $s2->{service}, 's3', 'service defaults to s3';
# session token optional
my $s3 = new_signer( session_token => 'TOKEN' );
is $s3->{session_token}, 'TOKEN', 'session_token stored';
};
########################################################################
# AWS SigV4 test suite - get-vanilla
# https://docs.aws.amazon.com/general/latest/gr/sigv4-test-suite.html
########################################################################
subtest 'AWS test suite - get-vanilla' => sub {
my $signer = new_signer();
my $signed = $signer->sign(
method => 'GET',
( run in 6.885 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )