The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use Test::More;
use Net::EC2::Tiny;
use Data::Dumper;

BEGIN { 
    if (! $ENV{AWS_ACCESS_KEY} || ! $ENV{AWS_SECRET_KEY} ) {
        plan skip_all => "Set AWS_ACCESS_KEY and AWS_SECRET_KEY environment variables to run this test.";
    }
    else {
        plan tests => 8;
    }
};

my $ec2 = Net::EC2::Tiny->new(
        AWSAccessKey => $ENV{AWS_ACCESS_KEY},
        AWSSecretKey => $ENV{AWS_SECRET_KEY},
);

isa_ok($ec2, 'Net::EC2::Tiny');

is($ec2->region, 'us-east-1', 'Region default correct');
is($ec2->version, '2012-07-20', 'API version default correct');
is($ec2->base_url, 'https://ec2.us-east-1.amazonaws.com', 'Default base url correct');

my $xml = $ec2->send(
            Action => 'DescribeRegions',
    'RegionName.1' => 'us-east-1',
    'RegionName.2' => 'eu-west-1',
);

diag Dumper $xml;

is(scalar @{$xml->{regionInfo}->{item}}, 2, '2 regions retrieved');
is($xml->{regionInfo}->{item}->[0]->{regionName}, 'us-east-1', '1st regionName correct');
is($xml->{regionInfo}->{item}->[1]->{regionName}, 'eu-west-1', '2nd regionName correct');

eval { $ec2->send() };

like($@, qr/must be defined/, 'No Action is fatal');