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 )