Facebook-OpenGraph
view release on metacpan or search on metacpan
t/004_response/01_basic.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Facebook::OpenGraph::Response;
use JSON 2 qw(encode_json);
subtest 'initialize' => sub {
my $res = Facebook::OpenGraph::Response->new;
isa_ok($res, 'Facebook::OpenGraph::Response');
isa_ok($res->json, 'JSON');
};
subtest 'accessor' => sub {
my $headers = [
'etag',
'"a376a57cb3a4bd3a3c6a53fca06b0fd5badee50b"',
'content-type',
'text/javascript; charset=UTF-8',
'pragma',
'no-cache',
'access-control-allow-origin',
'*',
'x-fb-rev',
'1220390',
'cache-control',
'private, no-cache, no-store, must-revalidate',
'expires',
'Sat, 01 Jan 2000 00:00:00 GMT',
'x-fb-debug',
'oyi19Zu1f4q0fcjowQrrmu8Lby+AgrNcmfLfpMBWcuQ=',
'date',
'Thu, 24 Apr 2014 13:15:31 GMT',
'connection',
'keep-alive',
'content-length',
'185',
'facebook-api-version',
'v2.3',
];
my $req_headers = qq{GET /go.hagiwara HTTP/1.1\n}
. qq{Connection: keep-alive\n}
. qq{User-Agent: Facebook::OpenGraph/1.13\n}
. qq{Content-Length: 0\n}
. qq{Host: graph.facebook.com\n}
. qq{\n};
my $content = '{"id":"12345"}';
my $res = Facebook::OpenGraph::Response->new(+{
code => 200,
message => 'OK',
headers => $headers,
req_headers => $req_headers,
req_content => '',
content => $content,
});
is($res->code, 200);
is($res->message, 'OK');
is($res->req_headers, $req_headers);
is($res->req_content, '');
is($res->content, $content);
is($res->etag, '"a376a57cb3a4bd3a3c6a53fca06b0fd5badee50b"');
is($res->api_version, 'v2.3');
isa_ok($res->json, 'JSON');
is_deeply($res->headers, $headers);
};
subtest 'is_api_version_eq_or_older_than' => sub {
my $headers = [
'facebook-api-version',
'v2.3',
];
my $req_headers = qq{GET /go.hagiwara HTTP/1.1\n}
. qq{Connection: keep-alive\n}
. qq{User-Agent: Facebook::OpenGraph/1.13\n}
. qq{Content-Length: 0\n}
. qq{Host: graph.facebook.com\n}
. qq{\n};
my $content = '{"id":"12345"}';
my $res = Facebook::OpenGraph::Response->new(+{
code => 200,
message => 'OK',
headers => $headers,
req_headers => $req_headers,
req_content => '',
content => $content,
});
ok(!$res->is_api_version_eq_or_older_than('v1.3'));
ok(!$res->is_api_version_eq_or_older_than('v1.4'));
ok($res->is_api_version_eq_or_older_than('v2.3'));
ok($res->is_api_version_eq_or_older_than('v2.4'));
ok($res->is_api_version_eq_or_older_than('v2.10'));
ok($res->is_api_version_eq_or_older_than('v3.1'));
ok($res->is_api_version_eq_or_older_than('v3.3'));
ok($res->is_api_version_eq_or_older_than('v3.4'));
};
subtest 'is_api_version_eq_or_later_than' => sub {
my $headers = [
'facebook-api-version',
'v2.3',
];
my $req_headers = qq{GET /go.hagiwara HTTP/1.1\n}
. qq{Connection: keep-alive\n}
. qq{User-Agent: Facebook::OpenGraph/1.13\n}
. qq{Content-Length: 0\n}
. qq{Host: graph.facebook.com\n}
. qq{\n};
my $content = '{"id":"12345"}';
my $res = Facebook::OpenGraph::Response->new(+{
code => 200,
message => 'OK',
headers => $headers,
req_headers => $req_headers,
req_content => '',
content => $content,
});
ok($res->is_api_version_eq_or_later_than('v1.2'));
ok($res->is_api_version_eq_or_later_than('v1.3'));
ok($res->is_api_version_eq_or_later_than('v1.4'));
ok($res->is_api_version_eq_or_later_than('v2.2'));
ok($res->is_api_version_eq_or_later_than('v2.3'));
ok(!$res->is_api_version_eq_or_later_than('v2.10'));
ok(!$res->is_api_version_eq_or_later_than('v3.2'));
ok(!$res->is_api_version_eq_or_later_than('v3.3'));
};
subtest 'error_string' => sub {
# Sample value is taken from https://developers.facebook.com/docs/graph-api/using-graph-api/error-handling
my $message = 'Message describing the error';
my $type = 'OAuthException';
my $code = 190;
my $subcode = 460;
my $user_title = 'A title';
my $user_msg = 'A message';
my $trace_id = 'EJplcsCHuLu';
my $error = +{
message => $message,
type => $type,
code => $code,
error_subcode => $subcode,
error_user_title => $user_title,
error_user_msg => $user_msg,
fbtrace_id => $trace_id,
};
my $res = Facebook::OpenGraph::Response->new(+{
code => 500,
message => 'Internal Server Error',
headers => [],
req_headers => [],
req_content => '',
content => encode_json(+{ error => $error }),
});
my $expected_str = sprintf(
qq{%s:%s\t%s:%s\t%s\t%s:%s},
$code,
$subcode,
$type,
$message,
$trace_id,
( run in 0.500 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )