AWS-Lambda
view release on metacpan or search on metacpan
t/10_lambda_next.t view on Meta::CPAN
use strict;
use warnings;
use utf8;
use Test::More;
use Test::TCP;
use HTTP::Server::PSGI;
use FindBin;
use AWS::Lambda::Bootstrap;
use Test::Deep;
my $app_server = Test::TCP->new(
listen => 1,
code => sub {
my $sock = shift;
my $server = HTTP::Server::PSGI->new(
listen_sock => $sock,
);
$server->run(sub {
[
200,
[
'Content-Type' => 'application/json',
'Lambda-Runtime-Aws-Request-Id' => '8476a536-e9f4-11e8-9739-2dfe598c3fcd',
'Lambda-Runtime-Deadline-Ms' => '1542409706888',
'Lambda-Runtime-Invoked-Function-Arn' => 'arn:aws:lambda:us-east-2:123456789012:function:custom-runtime',
'Lambda-Runtime-Trace-Id' => 'Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1',
'Lambda-Runtime-Aws-Tenant-Id' => 'tenant-1234',
],
[ '{"key1":"a", "key2":"b", "key3":"c"}' ],
]
});
},
max_wait => 10, # seconds
);
my $bootstrap = AWS::Lambda::Bootstrap->new(
handler => "echo.handle",
runtime_api => "example.com",
task_root => "$FindBin::Bin/test_handlers",
runtime_api => "127.0.0.1:" . $app_server->port,
);
my ($payload, $context) = $bootstrap->lambda_next;
cmp_deeply $payload, {key1=>"a", key2=>"b", key3=>"c"}, "payload";
is $context->aws_request_id, '8476a536-e9f4-11e8-9739-2dfe598c3fcd', "request id";
is $context->invoked_function_arn, 'arn:aws:lambda:us-east-2:123456789012:function:custom-runtime', 'invoked function arn';
is $context->{trace_id}, 'Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1', 'trace_id';
is $context->tenant_id, 'tenant-1234', 'tenant_id';
done_testing;
( run in 1.040 second using v1.01-cache-2.11-cpan-39bf76dae61 )