Jifty-Plugin-OAuth
view release on metacpan or search on metacpan
t/lib/TestApp/Plugin/OAuth/Test.pm view on Meta::CPAN
if ($url =~ /oauth/) {
undef $token_obj;
get_latest_token();
if ($no_token || $code != 200) {
main::ok(!$token_obj, "Did not get a token");
}
elsif ($code == 200) {
main::ok($token_obj, "Successfully loaded a token object with token ".$token_obj->token.".");
}
}
return $cmech->content;
}
# creates an Authorization header
sub authz {
my %params = @_;
return "OAuth "
. join ', ',
map { $_ . q{="} . Jifty->web->escape_uri($params{$_}) . q{"} }
keys %params;
}
sub sign {
my ($method, $token_secret, $consumer_secret, %params) = @_;
local $url = delete $params{sign_url} || $url;
my $key = delete $params{signature_key};
my $sig_method = $params{oauth_signature_method} || delete $params{_signature_method};
delete $params{oauth_signature};
if ($sig_method eq 'PLAINTEXT') {
my $signature = join '&',
map { Jifty->web->escape_uri($_||'') }
$consumer_secret,
$token_secret;
return $signature;
}
my $normalized_request_parameters
= join '&',
map { "$_=" . Jifty->web->escape_uri($params{$_}||'') }
sort keys %params;
my $signature_base_string
= join '&',
map { Jifty->web->escape_uri($_||'') }
uc($method),
$url,
$normalized_request_parameters;
my $signature;
if ($sig_method eq 'RSA-SHA1') {
require Crypt::OpenSSL::RSA;
my $pubkey = Crypt::OpenSSL::RSA->new_private_key($key);
$signature = encode_base64($pubkey->sign($signature_base_string), "");
}
elsif ($sig_method eq 'HMAC-SHA1') {
my $key = join '&',
map { Jifty->web->escape_uri($_||'') }
$consumer_secret,
$token_secret;
my $hmac = Digest::HMAC_SHA1->new($key);
$hmac->add($signature_base_string);
$signature = encode_base64($hmac->digest, '');
}
return ($signature, $signature_base_string, $normalized_request_parameters)
if wantarray;
return $signature;
}
sub has_rsa {
eval { require Crypt::OpenSSL::RSA; 1 }
}
sub rsa_skip {
my $count = shift || Carp::carp "You must specify a number of tests to skip.";
::skip 'Crypt::OpenSSL::RSA is required for these tests', $count unless has_rsa;
}
sub slurp {
no warnings 'once';
my $file = shift;
local $/;
local @ARGV = $file;
my $contents = scalar <>
or die "Unable to slurp $file";
return $contents;
}
sub get_latest_token {
my $content = $cmech->content;
$content =~ s/\boauth_token=(\w+)//
or return;
my $token = $1;
$content =~ s/\boauth_token_secret=(\w+)//
or return;
my $secret = $1;
local $Test::Builder::Level = $Test::Builder::Level + 1;
main::is($content, '&', "the output was exactly oauth_token=...&oauth_secret=...");
my $package = 'Jifty::Plugin::OAuth::Model::';
if ($cmech->uri =~ /request_token/) {
$package .= 'RequestToken';
}
elsif ($cmech->uri =~ /access_token/) {
$package .= 'AccessToken';
}
else {
( run in 0.679 second using v1.01-cache-2.11-cpan-13bb782fe5a )