installed plugin W3 Total Cache
version 2.3.2
This commit is contained in:
@ -0,0 +1,229 @@
|
||||
<?php
|
||||
|
||||
namespace Aws\Sns;
|
||||
|
||||
/**
|
||||
* @covers Aws\Sns\MessageValidator
|
||||
* @covers Aws\Sns\Message
|
||||
*/
|
||||
class FunctionalValidationsTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
private static $certificate =
|
||||
'-----BEGIN CERTIFICATE-----
|
||||
MIIF1zCCBL+gAwIBAgIQB9pYWG3Mi7xej22g9pobJTANBgkqhkiG9w0BAQsFADBG
|
||||
MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRUwEwYDVQQLEwxTZXJ2ZXIg
|
||||
Q0EgMUIxDzANBgNVBAMTBkFtYXpvbjAeFw0yMTA5MDcwMDAwMDBaFw0yMjA4MTcy
|
||||
MzU5NTlaMBwxGjAYBgNVBAMTEXNucy5hbWF6b25hd3MuY29tMIIBIjANBgkqhkiG
|
||||
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAutFqueT3XgP13udzxE6UpbdjOtVO5DwoMpSM
|
||||
iDNMnGzF1TYH5/R2LPUOBeTB0SkKnR4kpNcUZhicpGD4aKciz/GEZ6wu65xncfT9
|
||||
H/KBOQwoXYTuClHwp6fYpGzcGFaFoEYMnijL/o4qmTSd+ukglQUgKpsDw4ofw6rU
|
||||
m2CttJo+GQSNQ9NfGR1h/0J+zsApkeSYrXRx5wNlu87z8os1C/6PBrUHwt3xXeaf
|
||||
Xzfwut8aRRYsS8BySOA9DAgLfNHlfdQCjKPXKrG/ussgReyWD6n/HH+j7Uha3xos
|
||||
TzQqJifcxlTq6MxWdPR6fDaJNvqw6DOE7UjUNxHguXHlVfxhlQIDAQABo4IC6TCC
|
||||
AuUwHwYDVR0jBBgwFoAUWaRmBlKge5WSPKOUByeWdFv5PdAwHQYDVR0OBBYEFAqz
|
||||
C+vyouneE7mWWLbi9i0UsWUbMBwGA1UdEQQVMBOCEXNucy5hbWF6b25hd3MuY29t
|
||||
MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
|
||||
OwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5zY2ExYi5hbWF6b250cnVzdC5j
|
||||
b20vc2NhMWIuY3JsMBMGA1UdIAQMMAowCAYGZ4EMAQIBMHUGCCsGAQUFBwEBBGkw
|
||||
ZzAtBggrBgEFBQcwAYYhaHR0cDovL29jc3Auc2NhMWIuYW1hem9udHJ1c3QuY29t
|
||||
MDYGCCsGAQUFBzAChipodHRwOi8vY3J0LnNjYTFiLmFtYXpvbnRydXN0LmNvbS9z
|
||||
Y2ExYi5jcnQwDAYDVR0TAQH/BAIwADCCAX0GCisGAQQB1nkCBAIEggFtBIIBaQFn
|
||||
AHYAKXm+8J45OSHwVnOfY6V35b5XfZxgCvj5TV0mXCVdx4QAAAF7vfDVkQAABAMA
|
||||
RzBFAiEA2XfHuy36aqRFiaL8c3md2mH451go8707+fRE0pEdSRACIE/g5FXTUXUZ
|
||||
PFcmOhm9TZ+uMY1i4CIQ/CKVWln6C3t+AHYAUaOw9f0BeZxWbbg3eI8MpHrMGyfL
|
||||
956IQpoN/tSLBeUAAAF7vfDVjAAABAMARzBFAiBF1MhhFP0+FQt3daDFfMYoWwnr
|
||||
muTInrjNpwfzlvQBugIhAPYadFzr+LaxSJoiZEbEHBvTts7bT0M3eCQONA2O7w6n
|
||||
AHUAQcjKsd8iRkoQxqE6CUKHXk4xixsD6+tLx2jwkGKWBvYAAAF7vfDVdAAABAMA
|
||||
RjBEAiAtPapmFAuA71ih4NoSd5hJelzAltNQpxDMcDfDyHyU8gIgWxmaa6+2KbBu
|
||||
9xdv379zvnJACFR7jc+4asl08Dn4aagwDQYJKoZIhvcNAQELBQADggEBAA54QX0u
|
||||
oFWXfMmv02CGZv4NWo5TapyeeixQ2kKpZHRdVZjxZrw+hoF6HD7P3kGjH8ztyJll
|
||||
tDxB0qgMltbPhQdScwhA6iTgoaBYqEUC/VHKd4PmmPT6yIsM36NBZVmkGlzl5uNo
|
||||
/dBgBaG0SsVJnhr5zro3c2quC7n6fVGEZhf/UgQwRnnvThnvbNKguglDMq4uEqv8
|
||||
njKyleht+glkcmXO0m9qLKt6BOS0amy6U2GlAwRn0Wx02ndJtnRCSC6kPuRWK/SQ
|
||||
FEjB7gCK4hdKaAOuWdZpI55vF6ifOeM8toC3g7ofO8qLTnJupAG+ZitY5J3cvHWr
|
||||
HqOUdKigPDHYLRo=
|
||||
-----END CERTIFICATE-----';
|
||||
|
||||
public function getHttpFixtures()
|
||||
{
|
||||
return [
|
||||
[
|
||||
[
|
||||
'Type' => "Notification",
|
||||
'MessageId' => "792cda85-518f-5dd3-9163-81d851212f3a",
|
||||
'TopicArn' => "arn:aws:sns:us-east-2:295079676684:publish-and-verify-892f85fe-4836-424d-8188-ab85bef0f362",
|
||||
'Message' => "Hello world",
|
||||
'Timestamp' => "2022-07-28T21:23:58.317Z",
|
||||
'SignatureVersion' => "1",
|
||||
'Signature' => "ghtf+deOBAzHJJZ6s6CdRLfTQAlcGzq9naoFM1wi0CJiq//uVRuZnamrkWNF0fhouMFvuLVRwcz8PZLUMSfnmd5VpdTKpTyiKmy1qJAZXma0w+yi7G+I33hD1Jyk1Nbym2n0kqp3fVu2aoooiN2ZeLAT2bH0/BtjLSfN1yAOKNoprco4qV9gGUZinXJdj9a1YdNhDR2jKi33ldlsVtEXAtiaDklGEk7DgRKX38GerBPiLg3FdtgY6KC7cdeGpU/dGK+4hjc83Ive1HoFkAwqhpgInM2sMytBosoiXfCmOKmU4xeGD0gHDNZTlJUJQDlzw8Eag0H9f/5zXF9d3uy0YQ==",
|
||||
'SigningCertURL' => "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem",
|
||||
'UnsubscribeURL' => "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:295079676684:publish-and-verify-892f85fe-4836-424d-8188-ab85bef0f362:2296bc94-7992-4be1-b15f-b97229b5c1d8",
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
'Type' => "Notification",
|
||||
'MessageId' => "17dea24b-55c2-540b-8362-f916557af765",
|
||||
'TopicArn' => "arn:aws:sns:us-east-2:295079676684:publish-and-verify-62674b1d-4295-426b-88e7-5fb75652a04e",
|
||||
'Message' => "Hello world",
|
||||
'Timestamp' => "2022-07-28T21:24:08.324Z",
|
||||
'SignatureVersion' => "2",
|
||||
'Signature' => "CXVqp9PfZAL+4JHS3Zxo1PFbQsvnOjvmYhtIf17TWpwc+iIVas8kZ8GopuzVzVMdatE7rCl/O4P91Zp05Dwz8lk8dLhfp8gSu3Njlzxlyrmzo9x3va3Jb7zFnedgS2GKnZWHGBdwTXho+TosNUE+3e10OMSlwN5XGDwX7+R3WL+rn+AXmFAqp3alg27sYa55h1dLE9cGszGPjScPdtF3BmZsUDMx9wSdNKsCk+vSvE8yBjnCmUl7laSFj3LzPVrlSwgNYCF3kYnNAkah7NplK4SFhJYLwS0HCVCQJKa8rVbQLf9cBTu60U402mrgy0bN8xWoyimzbYbrOMJjalqkUg==",
|
||||
'SigningCertURL' => "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem",
|
||||
'UnsubscribeURL' => "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:295079676684:publish-and-verify-62674b1d-4295-426b-88e7-5fb75652a04e:ad7d16e3-0a7c-46aa-b23e-ffaf02250cbe",
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
'Type' => "Notification",
|
||||
'MessageId' => "11405cc3-9ac7-56d5-b45d-079e8f7a8edf",
|
||||
'TopicArn' => "arn:aws:sns:us-east-2:295079676684:publish-and-verify-6e11fed2-fcdf-4c52-9dc4-36ef43f37f84",
|
||||
'Subject' => "Hello world",
|
||||
'Message' => "Hello world",
|
||||
'Timestamp' => "2022-07-28T22:53:49.654Z",
|
||||
'SignatureVersion' => "1",
|
||||
'Signature' => "AItkS26d8yvnIKJevdirIPW7eM/yKbZy3/CF2EreCHmXWB3etWaV5Fb7SYpGABMpugpDZzNyGY1wCVWaopDoQ+7Q/kI2TpDu8bw1eExbi8U3kduvc/2m2fIrI4gDEY8/v3nzoLcr8pPodqMzrX6SzQou4klfaqbNK+rFmH0LVf2Q1VyOROODoSXmo4jg2Yu12jfxccBl96Drr/ihq4MJ4OcrWh6UzXXlVYjJHx2Ui4anNwNEb+Z4C2CAF1DjQUbhDtaoajDBPY+4d9C1OwbqwQpXsd6tyVcI9nFyEsVK8lfnAV+/3GZQcdXHbIUYBRGcBa4X5TlWJku5nDH2ERtHHw==",
|
||||
'SigningCertURL' => "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem",
|
||||
'UnsubscribeURL' => "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:295079676684:publish-and-verify-6e11fed2-fcdf-4c52-9dc4-36ef43f37f84:adb318c3-2234-4c56-905d-c324cf0df874",
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
'Type' => "Notification",
|
||||
'MessageId' => "4504e649-d933-5aa9-8199-bd14ccf05f0b",
|
||||
'TopicArn' => "arn:aws:sns:us-east-2:295079676684:publish-and-verify-530b26da-0687-4fe4-9f71-780bad3181e2",
|
||||
'Subject' => "Hello world",
|
||||
'Message' => "Hello world",
|
||||
'Timestamp' => "2022-07-28T22:53:55.086Z",
|
||||
'SignatureVersion' => "2",
|
||||
'Signature' => "cETcSvmmkt+My05qCLKexyl0+RyG83mSryKPqTfS+tYcxDJWVcjPJAr+qdpElzVaBl1aTGYVWMY64i9JqZ/JES8pylNj8LGvdhuNQKO59/WCoIimZAsNhn0xEgOeeDU+W/0BU4sdpCGMNjo0S/FuIiWaRe4E0YWRVrxeQevaQ70euDdfWgd5v1eCKQz8b367b9XBmMztL/CWUFI6YaKK/MV21eyvJe3Y7CtVYiOKEYiAZnAEkynK7gUGO5TsgDjGNYhj6U3xYsWgI03bmioSl7kdFSUj+AZ7ugas5fghqxgoDsdfqsjMYKRm5KKHQWsgzI619yIzpNKUiSMHxdZXpQ==",
|
||||
'SigningCertURL' => "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem",
|
||||
'UnsubscribeURL' => "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:295079676684:publish-and-verify-530b26da-0687-4fe4-9f71-780bad3181e2:db0ad2ad-03d1-48ca-a5da-51f317800a57"
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
public function getLambdaFixtures()
|
||||
{
|
||||
return [
|
||||
[
|
||||
[
|
||||
'Type' => "Notification",
|
||||
'MessageId' => "792cda85-518f-5dd3-9163-81d851212f3a",
|
||||
'TopicArn' => "arn:aws:sns:us-east-2:295079676684:publish-and-verify-892f85fe-4836-424d-8188-ab85bef0f362",
|
||||
'Message' => "Hello world",
|
||||
'Timestamp' => "2022-07-28T21:23:58.317Z",
|
||||
'SignatureVersion' => "1",
|
||||
'Signature' => "ghtf+deOBAzHJJZ6s6CdRLfTQAlcGzq9naoFM1wi0CJiq//uVRuZnamrkWNF0fhouMFvuLVRwcz8PZLUMSfnmd5VpdTKpTyiKmy1qJAZXma0w+yi7G+I33hD1Jyk1Nbym2n0kqp3fVu2aoooiN2ZeLAT2bH0/BtjLSfN1yAOKNoprco4qV9gGUZinXJdj9a1YdNhDR2jKi33ldlsVtEXAtiaDklGEk7DgRKX38GerBPiLg3FdtgY6KC7cdeGpU/dGK+4hjc83Ive1HoFkAwqhpgInM2sMytBosoiXfCmOKmU4xeGD0gHDNZTlJUJQDlzw8Eag0H9f/5zXF9d3uy0YQ==",
|
||||
'SigningCertUrl' => "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem",
|
||||
'UnsubscribeUrl' => "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:295079676684:publish-and-verify-892f85fe-4836-424d-8188-ab85bef0f362:2296bc94-7992-4be1-b15f-b97229b5c1d8",
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
'Type' => "Notification",
|
||||
'MessageId' => "17dea24b-55c2-540b-8362-f916557af765",
|
||||
'TopicArn' => "arn:aws:sns:us-east-2:295079676684:publish-and-verify-62674b1d-4295-426b-88e7-5fb75652a04e",
|
||||
'Message' => "Hello world",
|
||||
'Timestamp' => "2022-07-28T21:24:08.324Z",
|
||||
'SignatureVersion' => "2",
|
||||
'Signature' => "CXVqp9PfZAL+4JHS3Zxo1PFbQsvnOjvmYhtIf17TWpwc+iIVas8kZ8GopuzVzVMdatE7rCl/O4P91Zp05Dwz8lk8dLhfp8gSu3Njlzxlyrmzo9x3va3Jb7zFnedgS2GKnZWHGBdwTXho+TosNUE+3e10OMSlwN5XGDwX7+R3WL+rn+AXmFAqp3alg27sYa55h1dLE9cGszGPjScPdtF3BmZsUDMx9wSdNKsCk+vSvE8yBjnCmUl7laSFj3LzPVrlSwgNYCF3kYnNAkah7NplK4SFhJYLwS0HCVCQJKa8rVbQLf9cBTu60U402mrgy0bN8xWoyimzbYbrOMJjalqkUg==",
|
||||
'SigningCertUrl' => "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem",
|
||||
'UnsubscribeUrl' => "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:295079676684:publish-and-verify-62674b1d-4295-426b-88e7-5fb75652a04e:ad7d16e3-0a7c-46aa-b23e-ffaf02250cbe",
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
'Type' => "Notification",
|
||||
'MessageId' => "792cda85-518f-5dd3-9163-81d851212f3a",
|
||||
'TopicArn' => "arn:aws:sns:us-east-2:295079676684:publish-and-verify-892f85fe-4836-424d-8188-ab85bef0f362",
|
||||
'Subject' => null,
|
||||
'Message' => "Hello world",
|
||||
'Timestamp' => "2022-07-28T21:23:58.317Z",
|
||||
'SignatureVersion' => "1",
|
||||
'Signature' => "ghtf+deOBAzHJJZ6s6CdRLfTQAlcGzq9naoFM1wi0CJiq//uVRuZnamrkWNF0fhouMFvuLVRwcz8PZLUMSfnmd5VpdTKpTyiKmy1qJAZXma0w+yi7G+I33hD1Jyk1Nbym2n0kqp3fVu2aoooiN2ZeLAT2bH0/BtjLSfN1yAOKNoprco4qV9gGUZinXJdj9a1YdNhDR2jKi33ldlsVtEXAtiaDklGEk7DgRKX38GerBPiLg3FdtgY6KC7cdeGpU/dGK+4hjc83Ive1HoFkAwqhpgInM2sMytBosoiXfCmOKmU4xeGD0gHDNZTlJUJQDlzw8Eag0H9f/5zXF9d3uy0YQ==",
|
||||
'SigningCertUrl' => "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem",
|
||||
'UnsubscribeUrl' => "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:295079676684:publish-and-verify-892f85fe-4836-424d-8188-ab85bef0f362:2296bc94-7992-4be1-b15f-b97229b5c1d8",
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
'Type' => "Notification",
|
||||
'MessageId' => "17dea24b-55c2-540b-8362-f916557af765",
|
||||
'TopicArn' => "arn:aws:sns:us-east-2:295079676684:publish-and-verify-62674b1d-4295-426b-88e7-5fb75652a04e",
|
||||
'Subject' => null,
|
||||
'Message' => "Hello world",
|
||||
'Timestamp' => "2022-07-28T21:24:08.324Z",
|
||||
'SignatureVersion' => "2",
|
||||
'Signature' => "CXVqp9PfZAL+4JHS3Zxo1PFbQsvnOjvmYhtIf17TWpwc+iIVas8kZ8GopuzVzVMdatE7rCl/O4P91Zp05Dwz8lk8dLhfp8gSu3Njlzxlyrmzo9x3va3Jb7zFnedgS2GKnZWHGBdwTXho+TosNUE+3e10OMSlwN5XGDwX7+R3WL+rn+AXmFAqp3alg27sYa55h1dLE9cGszGPjScPdtF3BmZsUDMx9wSdNKsCk+vSvE8yBjnCmUl7laSFj3LzPVrlSwgNYCF3kYnNAkah7NplK4SFhJYLwS0HCVCQJKa8rVbQLf9cBTu60U402mrgy0bN8xWoyimzbYbrOMJjalqkUg==",
|
||||
'SigningCertUrl' => "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem",
|
||||
'UnsubscribeUrl' => "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:295079676684:publish-and-verify-62674b1d-4295-426b-88e7-5fb75652a04e:ad7d16e3-0a7c-46aa-b23e-ffaf02250cbe",
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
'Type' => "Notification",
|
||||
'MessageId' => "11405cc3-9ac7-56d5-b45d-079e8f7a8edf",
|
||||
'TopicArn' => "arn:aws:sns:us-east-2:295079676684:publish-and-verify-6e11fed2-fcdf-4c52-9dc4-36ef43f37f84",
|
||||
'Subject' => "Hello world",
|
||||
'Message' => "Hello world",
|
||||
'Timestamp' => "2022-07-28T22:53:49.654Z",
|
||||
'SignatureVersion' => "1",
|
||||
'Signature' => "AItkS26d8yvnIKJevdirIPW7eM/yKbZy3/CF2EreCHmXWB3etWaV5Fb7SYpGABMpugpDZzNyGY1wCVWaopDoQ+7Q/kI2TpDu8bw1eExbi8U3kduvc/2m2fIrI4gDEY8/v3nzoLcr8pPodqMzrX6SzQou4klfaqbNK+rFmH0LVf2Q1VyOROODoSXmo4jg2Yu12jfxccBl96Drr/ihq4MJ4OcrWh6UzXXlVYjJHx2Ui4anNwNEb+Z4C2CAF1DjQUbhDtaoajDBPY+4d9C1OwbqwQpXsd6tyVcI9nFyEsVK8lfnAV+/3GZQcdXHbIUYBRGcBa4X5TlWJku5nDH2ERtHHw==",
|
||||
'SigningCertUrl' => "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem",
|
||||
'UnsubscribeUrl' => "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:295079676684:publish-and-verify-6e11fed2-fcdf-4c52-9dc4-36ef43f37f84:adb318c3-2234-4c56-905d-c324cf0df874",
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
'Type' => "Notification",
|
||||
'MessageId' => "4504e649-d933-5aa9-8199-bd14ccf05f0b",
|
||||
'TopicArn' => "arn:aws:sns:us-east-2:295079676684:publish-and-verify-530b26da-0687-4fe4-9f71-780bad3181e2",
|
||||
'Subject' => "Hello world",
|
||||
'Message' => "Hello world",
|
||||
'Timestamp' => "2022-07-28T22:53:55.086Z",
|
||||
'SignatureVersion' => "2",
|
||||
'Signature' => "cETcSvmmkt+My05qCLKexyl0+RyG83mSryKPqTfS+tYcxDJWVcjPJAr+qdpElzVaBl1aTGYVWMY64i9JqZ/JES8pylNj8LGvdhuNQKO59/WCoIimZAsNhn0xEgOeeDU+W/0BU4sdpCGMNjo0S/FuIiWaRe4E0YWRVrxeQevaQ70euDdfWgd5v1eCKQz8b367b9XBmMztL/CWUFI6YaKK/MV21eyvJe3Y7CtVYiOKEYiAZnAEkynK7gUGO5TsgDjGNYhj6U3xYsWgI03bmioSl7kdFSUj+AZ7ugas5fghqxgoDsdfqsjMYKRm5KKHQWsgzI619yIzpNKUiSMHxdZXpQ==",
|
||||
'SigningCertUrl' => "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem",
|
||||
'UnsubscribeUrl' => "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:295079676684:publish-and-verify-530b26da-0687-4fe4-9f71-780bad3181e2:db0ad2ad-03d1-48ca-a5da-51f317800a57"
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
private function getMockCertServerClient()
|
||||
{
|
||||
return function () {
|
||||
return self::$certificate;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getHttpFixtures
|
||||
*
|
||||
* @param array $messageData
|
||||
*/
|
||||
public function testValidatesHttpFixtures($messageData)
|
||||
{
|
||||
$validator = new MessageValidator($this->getMockCertServerClient());
|
||||
$message = new Message($messageData);
|
||||
|
||||
$this->assertTrue($validator->isValid($message));
|
||||
$this->assertNotEmpty($message['SigningCertURL']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getLambdaFixtures
|
||||
*
|
||||
* @param array $messageData
|
||||
*/
|
||||
public function testValidatesLambdaFixtures($messageData)
|
||||
{
|
||||
$validator = new MessageValidator($this->getMockCertServerClient());
|
||||
$message = new Message($messageData);
|
||||
|
||||
$this->assertTrue($validator->isValid($message));
|
||||
$this->assertNotEmpty($message['SigningCertUrl']);
|
||||
}
|
||||
}
|
183
wp-content/plugins/w3-total-cache/vendor/aws/aws-php-sns-message-validator/tests/MessageTest.php
vendored
Normal file
183
wp-content/plugins/w3-total-cache/vendor/aws/aws-php-sns-message-validator/tests/MessageTest.php
vendored
Normal file
@ -0,0 +1,183 @@
|
||||
<?php
|
||||
namespace Aws\Sns;
|
||||
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
|
||||
/**
|
||||
* @covers \Aws\Sns\Message
|
||||
*/
|
||||
class MessageTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public $messageData = array(
|
||||
'Message' => 'a',
|
||||
'MessageId' => 'b',
|
||||
'Timestamp' => 'c',
|
||||
'TopicArn' => 'd',
|
||||
'Type' => 'e',
|
||||
'Subject' => 'f',
|
||||
'Signature' => 'g',
|
||||
'SignatureVersion' => '1',
|
||||
'SigningCertURL' => 'h',
|
||||
'SubscribeURL' => 'i',
|
||||
'Token' => 'j',
|
||||
);
|
||||
|
||||
public function testGetters()
|
||||
{
|
||||
$message = new Message($this->messageData);
|
||||
$this->assertInternalType('array', $message->toArray());
|
||||
|
||||
foreach ($this->messageData as $key => $expectedValue) {
|
||||
$this->assertTrue(isset($message[$key]));
|
||||
$this->assertEquals($expectedValue, $message[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
public function testIterable()
|
||||
{
|
||||
$message = new Message($this->messageData);
|
||||
|
||||
$this->assertInstanceOf('Traversable', $message);
|
||||
foreach ($message as $key => $value) {
|
||||
$this->assertTrue(isset($this->messageData[$key]));
|
||||
$this->assertEquals($value, $this->messageData[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider messageTypeProvider
|
||||
*
|
||||
* @param string $messageType
|
||||
*/
|
||||
public function testConstructorSucceedsWithGoodData($messageType)
|
||||
{
|
||||
$this->assertInstanceOf('Aws\Sns\Message', new Message(
|
||||
['Type' => $messageType] + $this->messageData
|
||||
));
|
||||
}
|
||||
|
||||
public function messageTypeProvider()
|
||||
{
|
||||
return [
|
||||
['Notification'],
|
||||
['SubscriptionConfirmation'],
|
||||
['UnsubscribeConfirmation'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testConstructorFailsWithNoType()
|
||||
{
|
||||
$data = $this->messageData;
|
||||
unset($data['Type']);
|
||||
new Message($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testConstructorFailsWithMissingData()
|
||||
{
|
||||
new Message(['Type' => 'Notification']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testRequiresTokenAndSubscribeUrlForSubscribeMessage()
|
||||
{
|
||||
new Message(
|
||||
['Type' => 'SubscriptionConfirmation'] + array_diff_key(
|
||||
$this->messageData,
|
||||
array_flip(['Token', 'SubscribeURL'])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testRequiresTokenAndSubscribeUrlForUnsubscribeMessage()
|
||||
{
|
||||
new Message(
|
||||
['Type' => 'UnsubscribeConfirmation'] + array_diff_key(
|
||||
$this->messageData,
|
||||
array_flip(['Token', 'SubscribeURL'])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function testCanCreateFromRawPost()
|
||||
{
|
||||
$_SERVER['HTTP_X_AMZ_SNS_MESSAGE_TYPE'] = 'Notification';
|
||||
|
||||
// Prep php://input with mocked data
|
||||
MockPhpStream::setStartingData(json_encode($this->messageData));
|
||||
stream_wrapper_unregister('php');
|
||||
stream_wrapper_register('php', __NAMESPACE__ . '\MockPhpStream');
|
||||
|
||||
$message = Message::fromRawPostData();
|
||||
$this->assertInstanceOf('Aws\Sns\Message', $message);
|
||||
|
||||
stream_wrapper_restore("php");
|
||||
unset($_SERVER['HTTP_X_AMZ_SNS_MESSAGE_TYPE']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \RuntimeException
|
||||
*/
|
||||
public function testCreateFromRawPostFailsWithMissingHeader()
|
||||
{
|
||||
Message::fromRawPostData();
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \RuntimeException
|
||||
*/
|
||||
public function testCreateFromRawPostFailsWithMissingData()
|
||||
{
|
||||
$_SERVER['HTTP_X_AMZ_SNS_MESSAGE_TYPE'] = 'Notification';
|
||||
Message::fromRawPostData();
|
||||
unset($_SERVER['HTTP_X_AMZ_SNS_MESSAGE_TYPE']);
|
||||
}
|
||||
|
||||
public function testCanCreateFromPsr7Request()
|
||||
{
|
||||
$request = new Request(
|
||||
'POST',
|
||||
'/',
|
||||
[],
|
||||
json_encode($this->messageData)
|
||||
);
|
||||
$message = Message::fromPsrRequest($request);
|
||||
$this->assertInstanceOf('Aws\Sns\Message', $message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \RuntimeException
|
||||
*/
|
||||
public function testCreateFromPsr7RequestFailsWithMissingData()
|
||||
{
|
||||
$request = new Request(
|
||||
'POST',
|
||||
'/',
|
||||
[],
|
||||
'Not valid JSON'
|
||||
);
|
||||
Message::fromPsrRequest($request);
|
||||
}
|
||||
|
||||
public function testArrayAccess()
|
||||
{
|
||||
$message = new Message($this->messageData);
|
||||
|
||||
$this->assertInstanceOf('ArrayAccess', $message);
|
||||
$message['foo'] = 'bar';
|
||||
$this->assertTrue(isset($message['foo']));
|
||||
$this->assertTrue($message['foo'] === 'bar');
|
||||
unset($message['foo']);
|
||||
$this->assertFalse(isset($message['foo']));
|
||||
}
|
||||
}
|
@ -0,0 +1,242 @@
|
||||
<?php
|
||||
namespace Aws\Sns;
|
||||
|
||||
/**
|
||||
* @covers Aws\Sns\MessageValidator
|
||||
*/
|
||||
class MessageValidatorTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
const VALID_CERT_URL = 'https://sns.foo.amazonaws.com/bar.pem';
|
||||
|
||||
private static $pKey;
|
||||
private static $certificate;
|
||||
|
||||
public static function setUpBeforeClass()
|
||||
{
|
||||
self::$pKey = openssl_pkey_new();
|
||||
$csr = openssl_csr_new([], self::$pKey);
|
||||
$x509 = openssl_csr_sign($csr, null, self::$pKey, 1);
|
||||
openssl_x509_export($x509, self::$certificate);
|
||||
openssl_x509_free($x509);
|
||||
}
|
||||
|
||||
public static function tearDownAfterClass()
|
||||
{
|
||||
openssl_pkey_free(self::$pKey);
|
||||
}
|
||||
|
||||
public function testIsValidReturnsFalseOnFailedValidation()
|
||||
{
|
||||
$validator = new MessageValidator($this->getMockHttpClient());
|
||||
$message = $this->getTestMessage([
|
||||
'SignatureVersion' => '2',
|
||||
]);
|
||||
$this->assertFalse($validator->isValid($message));
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Aws\Sns\Exception\InvalidSnsMessageException
|
||||
* @expectedExceptionMessage The SignatureVersion "3" is not supported.
|
||||
*/
|
||||
public function testValidateFailsWhenSignatureVersionIsInvalid()
|
||||
{
|
||||
$validator = new MessageValidator($this->getMockCertServerClient());
|
||||
$message = $this->getTestMessage([
|
||||
'SignatureVersion' => '3',
|
||||
]);
|
||||
$validator->validate($message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Aws\Sns\Exception\InvalidSnsMessageException
|
||||
* @expectedExceptionMessage The certificate is located on an invalid domain.
|
||||
*/
|
||||
public function testValidateFailsWhenCertUrlInvalid()
|
||||
{
|
||||
$validator = new MessageValidator();
|
||||
$message = $this->getTestMessage([
|
||||
'SigningCertURL' => 'https://foo.amazonaws.com/bar.pem',
|
||||
]);
|
||||
$validator->validate($message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Aws\Sns\Exception\InvalidSnsMessageException
|
||||
* @expectedExceptionMessage The certificate is located on an invalid domain.
|
||||
*/
|
||||
public function testValidateFailsWhenCertUrlNotAPemFile()
|
||||
{
|
||||
$validator = new MessageValidator();
|
||||
$message = $this->getTestMessage([
|
||||
'SigningCertURL' => 'https://foo.amazonaws.com/bar',
|
||||
]);
|
||||
$validator->validate($message);
|
||||
}
|
||||
|
||||
public function testValidatesAgainstCustomDomains()
|
||||
{
|
||||
$validator = new MessageValidator(
|
||||
function () {
|
||||
return self::$certificate;
|
||||
},
|
||||
'/^(foo|bar).example.com$/'
|
||||
);
|
||||
$message = $this->getTestMessage([
|
||||
'SigningCertURL' => 'https://foo.example.com/baz.pem',
|
||||
]);
|
||||
$message['Signature'] = $this->getSignature($validator->getStringToSign($message));
|
||||
$this->assertTrue($validator->isValid($message));
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Aws\Sns\Exception\InvalidSnsMessageException
|
||||
* @expectedExceptionMessageRegExp /Cannot get the certificate from ".+"./
|
||||
*/
|
||||
public function testValidateFailsWhenCannotGetCertificate()
|
||||
{
|
||||
$validator = new MessageValidator($this->getMockHttpClient(false));
|
||||
$message = $this->getTestMessage();
|
||||
$validator->validate($message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Aws\Sns\Exception\InvalidSnsMessageException
|
||||
* @expectedExceptionMessage Cannot get the public key from the certificate.
|
||||
*/
|
||||
public function testValidateFailsWhenCannotDeterminePublicKey()
|
||||
{
|
||||
$validator = new MessageValidator($this->getMockHttpClient());
|
||||
$message = $this->getTestMessage();
|
||||
$validator->validate($message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Aws\Sns\Exception\InvalidSnsMessageException
|
||||
* @expectedExceptionMessage The message signature is invalid.
|
||||
*/
|
||||
public function testValidateFailsWhenMessageIsInvalid()
|
||||
{
|
||||
$validator = new MessageValidator($this->getMockCertServerClient());
|
||||
$message = $this->getTestMessage([
|
||||
'Signature' => $this->getSignature('foo'),
|
||||
]);
|
||||
$validator->validate($message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Aws\Sns\Exception\InvalidSnsMessageException
|
||||
* @expectedExceptionMessage The message signature is invalid.
|
||||
*/
|
||||
public function testValidateFailsWhenSha256MessageIsInvalid()
|
||||
{
|
||||
$validator = new MessageValidator($this->getMockCertServerClient());
|
||||
$message = $this->getTestMessage([
|
||||
'Signature' => $this->getSignature('foo'),
|
||||
'SignatureVersion' => '2'
|
||||
|
||||
]);
|
||||
$validator->validate($message);
|
||||
}
|
||||
|
||||
public function testValidateSucceedsWhenMessageIsValid()
|
||||
{
|
||||
$validator = new MessageValidator($this->getMockCertServerClient());
|
||||
$message = $this->getTestMessage();
|
||||
|
||||
// Get the signature for a real message
|
||||
$message['Signature'] = $this->getSignature($validator->getStringToSign($message));
|
||||
|
||||
// The message should validate
|
||||
$this->assertTrue($validator->isValid($message));
|
||||
}
|
||||
|
||||
public function testValidateSucceedsWhenSha256MessageIsValid()
|
||||
{
|
||||
$validator = new MessageValidator($this->getMockCertServerClient());
|
||||
$message = $this->getTestMessage([
|
||||
'SignatureVersion' => '2'
|
||||
]);
|
||||
|
||||
// Get the signature for a real message
|
||||
$message['Signature'] = $this->getSignature($validator->getStringToSign($message), '2');
|
||||
|
||||
// The message should validate
|
||||
$this->assertTrue($validator->isValid($message));
|
||||
}
|
||||
|
||||
public function testBuildsStringToSignCorrectly()
|
||||
{
|
||||
$validator = new MessageValidator();
|
||||
$stringToSign = <<< STRINGTOSIGN
|
||||
Message
|
||||
foo
|
||||
MessageId
|
||||
bar
|
||||
Timestamp
|
||||
1435697129
|
||||
TopicArn
|
||||
baz
|
||||
Type
|
||||
Notification
|
||||
|
||||
STRINGTOSIGN;
|
||||
|
||||
$this->assertEquals(
|
||||
$stringToSign,
|
||||
$validator->getStringToSign($this->getTestMessage())
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $customData
|
||||
*
|
||||
* @return Message
|
||||
*/
|
||||
private function getTestMessage(array $customData = [])
|
||||
{
|
||||
return new Message($customData + [
|
||||
'Message' => 'foo',
|
||||
'MessageId' => 'bar',
|
||||
'Timestamp' => time(),
|
||||
'TopicArn' => 'baz',
|
||||
'Type' => 'Notification',
|
||||
'SigningCertURL' => self::VALID_CERT_URL,
|
||||
'Signature' => true,
|
||||
'SignatureVersion' => '1',
|
||||
]);
|
||||
}
|
||||
|
||||
private function getMockHttpClient($responseBody = '')
|
||||
{
|
||||
return function () use ($responseBody) {
|
||||
return $responseBody;
|
||||
};
|
||||
}
|
||||
|
||||
private function getMockCertServerClient()
|
||||
{
|
||||
return function ($url) {
|
||||
if ($url !== self::VALID_CERT_URL) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return self::$certificate;
|
||||
};
|
||||
}
|
||||
|
||||
private function getSignature($stringToSign, $algo = '1')
|
||||
{
|
||||
if ($algo === '2') {
|
||||
openssl_sign($stringToSign, $signature, self::$pKey, 'SHA256');
|
||||
} else {
|
||||
openssl_sign($stringToSign, $signature, self::$pKey);
|
||||
}
|
||||
|
||||
return base64_encode($signature);
|
||||
}
|
||||
}
|
||||
|
||||
function time()
|
||||
{
|
||||
return 1435697129;
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
namespace Aws\Sns;
|
||||
|
||||
class MockPhpStream
|
||||
{
|
||||
private static $startingData = '';
|
||||
private $index;
|
||||
private $length;
|
||||
private $data;
|
||||
|
||||
public static function setStartingData($data)
|
||||
{
|
||||
self::$startingData = $data;
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->data = self::$startingData;
|
||||
$this->index = 0;
|
||||
$this->length = strlen(self::$startingData);
|
||||
}
|
||||
|
||||
public function stream_open($path, $mode, $options, &$opened_path)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function stream_close()
|
||||
{
|
||||
}
|
||||
|
||||
public function stream_stat()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
public function stream_flush()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function stream_read($count)
|
||||
{
|
||||
$length = min($count, $this->length - $this->index);
|
||||
$data = substr($this->data, $this->index);
|
||||
$this->index = $this->index + $length;
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function stream_eof()
|
||||
{
|
||||
return ($this->index >= $this->length);
|
||||
}
|
||||
|
||||
public function stream_write($data)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user