Google-Auth
view release on metacpan or search on metacpan
t/key_sources_test.t view on Meta::CPAN
#
# Empty JSON
#
my $empty_json_hr =
HTTP::Response->new('200', 'OK', ['Content-Type' => 'text/plain'],
$certs_body_json);
$ua->unmap_all();
$ua->map_response(qr/\Q$certs_uri\E/, $empty_json_hr);
$source = Google::Auth::IDTokens::HttpKeySource->new({uri => $certs_uri});
lives_ok { $source->refresh_keys } 'downloads data but gets no keys';
$response = $ua->last_http_response_received;
is($response->{_rc}, 200, 'empty JSON return code matches');
is($response->{_content}, $certs_body_json, 'empty JSON content matches');
is_deeply($source->current_keys, [], 'gets no keys from JSON');
#
# Not found
#
my $not_found_hr =
HTTP::Response->new('404', 'Not Found', ['Content-Type' => 'text/plain'],
'not a found');
$ua->unmap_all();
$ua->map_response(qr/\Q$certs_uri\E/, $not_json_hr);
$source = Google::Auth::IDTokens::HttpKeySource->new({uri => $certs_uri});
throws_ok { $source->refresh_keys } qr/KeySourceError: Unable to parse JSON/,
'raises an error when failing to parse json from the site, class=' .
ref $source;
TODO:
{
local $TODO = 'return code and content do not match for some reason';
eval { $source->refresh_keys };
$response = $source->{last_response};
is($response->{_rc}, 404, 'return code matches');
is($response->{_content}, 'not a found', 'content matches');
}
#
# X509CertHttpKeySource
#
my $cert1_pem = join("\n",
'-----BEGIN CERTIFICATE-----',
'MIIDVTCCAj2gAwIBAgIUaDYZDCO5z2+9zzCJoOWuz15Xdx4wDQYJKoZIhvcNAQEL',
'BQAwOjELMAkGA1UEBhMCQkUxDTALBgNVBAoMBFRlc3QxDTALBgNVBAsMBFRlc3Qx',
'DTALBgNVBAMMBFRlc3QwHhcNMjYwNjAyMDY1NTM2WhcNMjcwNjAyMDY1NTM2WjA6',
'MQswCQYDVQQGEwJCRTENMAsGA1UECgwEVGVzdDENMAsGA1UECwwEVGVzdDENMAsG',
'A1UEAwwEVGVzdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKtAhX5l',
'fw9A9ikiTcDZeVkV5lHJdeXvlL8DerWp1UpOy7iHJaj2AMUly02nrro1EGk+wuGs',
's274o0IYter5mDaaW4ICwlvwsi69S/Acr15ilh5iHr6wjs4zKmDoK4nkFD6p9//A',
'kcAAyaXoGGOeVHeG+8jTUAuIKB1bK7KcFA/e448iLXDbFhxw/sN5JJoXvCFFzTYR',
'8wxU5fewl9Z+IStr8br4eGqM3FUngCEQpsE2GqrqTplHvt0G0VN19WzTZzxUTviw',
'3fiexTS9gB5tGoCrHszomVBRytl1WzqHBaKSYl2hBYYJg2sI4rvk38siYSEmZRis',
'QMXU0meG6rc38i8CAwEAAaNTMFEwHQYDVR0OBBYEFGgojs4jmyXHCFKbdDNv0S7a',
'Wn7KMB8GA1UdIwQYMBaAFGgojs4jmyXHCFKbdDNv0S7aWn7KMA8GA1UdEwEB/wQF',
'MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAKOa0cJP5uwc9/CLYykNaajYFZ+gvAnj',
'V9xe+j183jIt1FNGRj/t3wojEc+oUQck2Uw9hdye5wQB6v2ScsalbmEOU1bCNpBI',
'NA2w7KszoXzJn+lgpgQdBsAGVVGTR8gWTt8TBPzRUCugiAIAXBAfZdTbfl4upibI',
'IgwTGDGVCd3kdoy6BR156abCYNvYZJQp/zrHygDKGi5IoQanyw4tgToLyE+rU9V6',
'TM0BTsTinxEdwXI5WhWMquGv9o6wcgC4iJeUjSxHVsYu2pm7FykcyaVLYYKR304q',
'WiMOQo6bndLCBGC7MuB67ytkys3qVXiz1ZO9I9qixkEDKGN2/pHsA8Y=',
'-----END CERTIFICATE-----',
'');
my $cert2_pem = join("\n",
'-----BEGIN CERTIFICATE-----',
'MIIDVTCCAj2gAwIBAgIUC+c3aIZCG9xl/jTRVOXT0PnvAwMwDQYJKoZIhvcNAQEL',
'BQAwOjELMAkGA1UEBhMCQkUxDTALBgNVBAoMBFRlc3QxDTALBgNVBAsMBFRlc3Qx',
'DTALBgNVBAMMBFRlc3QwHhcNMjYwNjAyMDY1NTM2WhcNMjcwNjAyMDY1NTM2WjA6',
'MQswCQYDVQQGEwJCRTENMAsGA1UECgwEVGVzdDENMAsGA1UECwwEVGVzdDENMAsG',
'A1UEAwwEVGVzdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMRgIItR',
'w0VCMt1fUJ0xdSzzKlbBEU+ETHjMUgm0nYCVY7c/9eM/Xw8vqBe9yhkpG/NBWyC5',
'rjo9rBpzq48zWUlhKWAXuGa5SH5CVrksQK9zvYWys+v3CfPMmjw2jVpq0VmgReIw',
'WVyC4C0Ye472ybymzkS2QYfSgr7JK/odJsNzd0L1nkpfK9yl8UaTMEuCs5vx4B31',
'R+kVxNTipZ8c6bcUgr+TZE+pFHVFnQJnl2kiy55Us3/ksKHpzmq6eCTWG0ZYM0hx',
'8sAzjRkJKbBFf8YqkkIbWPzahYvQ3ojGrC63A3NHg+E4MjOjfUaaRMHGFxN5VNKU',
'82EQYtgOMDtfa58CAwEAAaNTMFEwHQYDVR0OBBYEFC0zoF0brlUVaIvaljJ9fJHt',
'F8KUMB8GA1UdIwQYMBaAFC0zoF0brlUVaIvaljJ9fJHtF8KUMA8GA1UdEwEB/wQF',
'MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHP0Xq8cyaVsVqrNrXOQRgNvqFKGauGb',
'Dl0QroPe8OY5SkIWKwP5wZSQNYeloCqZi6+C/v5LaZwY8AbVqJPBmw0C4UJttxBV',
'KSDOsZmy258wS39a++B95iflSe39umWRq8KCyeLP1b4fDVgNIMJNEFIS+TIrFOph',
'5780XII79HLdqzHhKWbyM8wZFrMxvCaTlf7fmHjv+Q86K36ST7RpfHpPOediqGMJ',
'g53yvuLq5IJwFdAFhP6P4HLPZmxspXxl5YLoKMGxr3N+SBJzBgftFMz2BycOMH2K',
'ZWGpKVhurKkObcJQpGq7x4mqJGTIiVTexttnOthlFZY286X8X3UAt1U=',
'-----END CERTIFICATE-----',
'');
my ($id1, $id2) = ('1234', '5678');
my $coder = JSON::MaybeXS->new->ascii->pretty->allow_nonref;
$certs_body = {
$id1 => $cert1_pem,
$id2 => $cert2_pem
};
$certs_body_json = $coder->encode($certs_body);
#
# Correct exception thrown when JSON not found
#
$ua->unmap_all();
$ua->map_response(qr/\Q$certs_uri\E/, $not_found_hr);
$source =
Google::Auth::IDTokens::X509CertHttpKeySource->new({uri => $certs_uri});
throws_ok { $source->refresh_keys; }
qr/KeySourceError: Unable to retrieve data from $certs_uri/,
'raises an error when failing to reach the site';
#
# Correct exception thrown when content is not JSON
#
$ua->unmap_all();
$ua->map_response(qr/\Q$certs_uri\E/, $not_json_hr);
$source =
( run in 2.157 seconds using v1.01-cache-2.11-cpan-389fe586d7c )