AWS-SNS-Verify
view release on metacpan or search on metacpan
author.t/01_verify.t view on Meta::CPAN
"Message" : "TAMPERED MESSAGE",
"Timestamp" : "2019-11-20T19:09:51.151Z",
"SignatureVersion" : "1",
"Signature" : "mztEsPesQ3OGqhYh2nv1iYPZdsYPUY8bFt5AzbxnbLYwUI5r+tOeQem1slr8LydSATRN0aZfqHW5rl4FXuLLQhtkuhZ2qOony8H6kKTGGf5QXWCIPN/ge3V1hfB+GNpAd2UNg9XqLt3PKZHrlW4aLLHixCUf0Baf/6lfQhHLHyp/HcVjm0VCp1s3MSMBZaFHoQTNoBf/Ur7xUvwYH2OvQNMn854yRnlpa85VI/RABZ7...
"SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-6aad65c2f9911b05cd53efda11f913f9.pem",
"UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:041977924901:test:5b4ab24c-a248-4b55-84ef-7143a86f483f"
}
END
my $tampered_body_sns = AWS::SNS::Verify->new(body => $tampered_body, certificate_string => $cert_string);
throws_ok(
sub { $tampered_body_sns->verify },
#qr/Could not verify the SES message/,
'Ouch',
"Tampered with body doesn't valiate",
);
note "Invalid cert doesn't validate";
my $invalid_cert_sns = AWS::SNS::Verify->new(body => $body, certificate_string => "Nopes");
throws_ok(
sub { $invalid_cert_sns->verify },
qr/FATAL: invalid or unsupported RSA key format/,
"Invalid cert doesn't valiate",
);
done_testing();
t/01_verify.t view on Meta::CPAN
"UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:041977924901:foo:20b2d060-2a32-4506-9cb0-24b8b9e605e1",
"MessageAttributes" : {
"AWS.SNS.MOBILE.MPNS.Type" : {"Type":"String","Value":"token"},
"AWS.SNS.MOBILE.WNS.Type" : {"Type":"String","Value":"wns/badge"},
"AWS.SNS.MOBILE.MPNS.NotificationClass" : {"Type":"String","Value":"realtime"}
}
}
END
my $tampered_body_sns = AWS::SNS::Verify->new(body => $tampered_body, certificate_string => $cert_string);
throws_ok(
sub { $tampered_body_sns->verify },
qr/Could not verify the SNS message/,
"Tampered with body doesn't validate",
);
note "Invalid cert doesn't validate";
my $invalid_cert_sns = AWS::SNS::Verify->new(body => $body, certificate_string => "Nopes");
throws_ok(
sub { $invalid_cert_sns->verify },
qr/FATAL: invalid or unsupported RSA key format/,
"Invalid cert doesn't valiate",
);
done_testing();
t/02_valid_cert_url.t view on Meta::CPAN
use Test::More;
use Test::Exception;
use lib '../lib';
use AWS::SNS::Verify;
my $sns = AWS::SNS::Verify->new(body => '');
throws_ok(
sub { $sns->valid_cert_url(undef) },
qr/\QThe SigningCertURL () isn't a valid URL/,
);
throws_ok(
sub { $sns->valid_cert_url("abc") },
qr/\QThe SigningCertURL (abc) isn't a valid URL/,
);
throws_ok(
sub { $sns->valid_cert_url("http://my.bad.com/cert.pem") },
qr|\QThe SigningCertURL (http://my.bad.com/cert.pem) isn't an Amazon endpoint|,
);
my $valid_euwest_url = "https://sns.eu-west-1.amazonaws.com/SimpleNotificationService-b95095beb82e8f6a046b3aafc7f4149a.pem";
is(
$sns->valid_cert_url($valid_euwest_url),
$valid_euwest_url,
( run in 0.532 second using v1.01-cache-2.11-cpan-496ff517765 )