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 )