Akamai-Edgegrid
view release on metacpan or search on metacpan
t/01-testrequests.t view on Meta::CPAN
#!perl -T
#
# Original author: Jonathan Landis <jlandis@akamai.com>
#
# for more info visit https://developer.akamai.com
#
use 5.006;
use strict;
use warnings FATAL => 'all';
use Test::More;
use JSON;
use Cwd 'abs_path';
use Akamai::Edgegrid;
use HTTP::Request;
use HTTP::Headers;
use URI;
use Data::Dumper;
sub load_testdata {
my $json_input;
{
local ($/, *FH);
open FH, abs_path($0 .'/../testdata.json') or die "can't open testdata.json";
$json_input = <FH>;
}
return from_json($json_input);
}
sub run_test {
my ($testdata, $testcase) = @_;
note("running test: ". $testcase->{testName});
my $ua = new Akamai::Edgegrid(
client_token => $testdata->{client_token},
client_secret => $testdata->{client_secret},
access_token => $testdata->{access_token},
headers_to_sign => $testdata->{headers_to_sign},
max_body => $testdata->{max_body}
);
my $uri = new URI($testdata->{base_url});
$uri->path_query($testcase->{request}->{path});
my $headers = new HTTP::Headers;
if (exists $testcase->{request}->{headers}) {
for my $h (@{$testcase->{request}->{headers}}) {
while (my ($k,$v) = each %$h) {
$headers->header($k => $v);
}
}
}
my $request = new HTTP::Request(
$testcase->{request}->{method},
$uri,
$headers,
$testcase->{request}->{data}
);
my $auth_header = eval {
return $ua->_make_auth_header(
$request, $testdata->{timestamp}, $testdata->{nonce}
);
};
if ($@) {
my $msg = $@;
chomp($msg);
note("_make_auth_header died: $msg");
is($msg, $testcase->{'failsWithMessage'}, $testcase->{testName});
return;
}
is($auth_header, $testcase->{expectedAuthorization}, $testcase->{testName})
}
my $testdata = load_testdata;
my $numtests = scalar @{$testdata->{tests}};
plan tests => $numtests;
for my $test (@{$testdata->{tests}}) {
run_test($testdata, $test);
}
=head1 LICENSE AND COPYRIGHT
Copyright 2014 Akamai Technologies, Inc. All rights reserved
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
L<http://www.apache.org/licenses/LICENSE-2.0>
Unless required by applicable law or agreed to in writing, software
( run in 1.708 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )