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 )