my
$api
= WWW::Facebook::API->new(
api_key
=> 1,
secret
=> 1,
session_uid
=>
''
,
session_key
=>
''
,
session_expires
=>
''
);
isa_ok
$api
,
'WWW::Facebook::API'
;
for
(
qw/require_frame require_login/
) {
eval
{
$api
->
$_
};
like $@,
qr/^Can't call method "param"/
,
"need query for $_"
;
}
{
local
%ENV
=
%ENV
;
@ENV
{
map
{
"WFA_$_"
}
qw/API_KEY SECRET_KEY DESKTOP/
} =
qw/3 2 1/
;
local
%WWW::Facebook::API::
;
delete
@INC
{
grep
{ m[^WWW/Facebook/API]xms }
keys
%INC
};
my
$api
= WWW::Facebook::API->new();
is
$api
->api_key, 3,
'WFA_API_KEY ok'
;
is
$api
->secret, 2,
'WFA_SECRET_KEY ok'
;
is
$api
->desktop, 1,
'WFA_DESKTOP ok'
;
}
{
local
%ENV
=
%ENV
;
@ENV
{
map
{
"WFA_${_}_TEST_ME"
}
qw/API_KEY SECRET_KEY DESKTOP/
} =
qw/3 2 1/
;
my
$api
= WWW::Facebook::API->new(
app_path
=>
'test-me'
);
is
$api
->api_key, 3,
'WFA_API_KEY_TEST_ME ok'
;
is
$api
->secret, 2,
'WFA_SECRET_KEY_TEST_ME ok'
;
is
$api
->desktop, 1,
'WFA_DESKTOP_TEST_ME ok'
;
}
is
$api
->
$_
,
''
,
"$_ init ok"
for
qw(session_uid session_key session_expires)
;
my
%final_session
= (
uid
=> 22343,
expires
=> 2343423,
key
=>
'cd324235fe34353'
,
);
$api
->session(
%final_session
);
for
(
keys
%final_session
) {
is
eval
"\$api->session_$_"
,
$final_session
{
$_
},
"session_$_ set ok"
;
}
my
@escaped
= (
'\"hell\nhath\nno\nfury\"'
=>
qq("hell\nhath\nno\nfury")
);
is
$api
->unescape_string(
$escaped
[0] ),
$escaped
[1],
'unescape_string ok'
;
'get_facebook_url arg ok'
;
is
$api
->_add_url_params,
'?api_key=1&v=1.0'
,
'_add_url_params ok'
;
is
$api
->_add_url_params(
auth_token
=>
'efdb34342ef'
),
'?api_key=1&v=1.0&auth_token=efdb34342ef'
,
'_add_url_params arg ok'
;
is
$api
->_add_url_params(
next
=>
'" woot "'
),
'?api_key=1&v=1.0&next=%22%20woot%20%22'
,
'_add_url_params next escapes ok'
;
'get_add_url ok'
;
'get_login_url ok'
;
is
$api
->app_path,
''
,
'app_path ok'
;
$api
->app_path(
'foo'
);
is
$api
->app_path,
'foo'
,
'app_path set ok'
;
$api
->app_path(
undef
);
is
$api
->app_path,
'foo'
,
'app_path not reset'
;
my
%sig_params
= (
params
=> {
method
=>
'hi'
},
secret
=>
'cool'
);
my
$sig
=
'54b12be659505fa965d7fcee080c32ee'
;
is
$api
->generate_sig(
%sig_params
),
$sig
,
'sig generate ok'
;
is
$api
->verify_sig(
sig
=>
$sig
,
%sig_params
), 1,
'sig verify 1 ok'
;
$api
->secret(
delete
$sig_params
{
'secret'
});
is
$api
->verify_sig(
sig
=>
$sig
,
%sig_params
), 1,
'sig verify 2 ok'
;
$api
->secret(
''
);
is
$api
->verify_sig(
sig
=>
$sig
,
%sig_params
),
''
,
'sig verify 3 nok'
;
{
no
warnings
'redefine'
;
local
$WWW::Facebook::API::
{_post_request} =
sub
{
return
qq{"$_[2]"}
};
my
$args
= {
params
=> {
method
=>
'hello'
,
secret
=>
'foo'
} };
my
$secret
=
$api
->call(
'hey'
,
%$args
);
isnt
$secret
,
$api
->secret,
'secret not object\'s'
;
is
$secret
,
$args
->{
'params'
}->{
'secret'
},
'secret is param\'s'
;
is
$args
->{
'params'
}->{
'method'
},
'facebook.hello'
,
'call method changed'
;
eval
q{use IO::String}
;
SKIP: {
skip
'Need IO::String to test debug output'
=> 1
if
$@;
my
$debug
;
open
my
$stderr
,
'>&STDERR'
or diag
"Cannot copy STDERR"
;
{
close
STDERR;
tie
*STDERR
,
'IO::String'
;
$api
->debug(1);
$secret
=
$api
->call(
'hey'
,
%$args
);
$api
->debug(0);
seek
(STDERR, 0, 0);
$debug
=
join
''
, <STDERR>;
untie
*STDERR
;
}
like
$debug
,
<<'END_DEBUG', 'debug string ok';
/\s*params\s=\s*
api_key:1\s*
format:JSON\s*
method:facebook.facebook.hello\s*
secret:foo\s*
session_key:cd324235fe34353\s*
sig:54c540e9324e6daf895c120736c9ac59\s*
v:1.0\s*
response\s=\s*
"foo"\s*
(?-x: at t/api.t line \d+
JSON::Any is parsing with [^\ ]+ at t/api.t line \d+)/xms
END_DEBUG
}
}