1313use Minishlink \WebPush \VAPID ;
1414use PHPUnit \Framework \Attributes \CoversClass ;
1515use PHPUnit \Framework \Attributes \DataProvider ;
16+ use PHPUnit \Framework \Attributes \TestWith ;
1617
1718#[CoversClass(VAPID ::class)]
1819final class VAPIDTest extends PHPUnit \Framework \TestCase
@@ -23,24 +24,24 @@ public static function vapidProvider(): array
2324 [
2425 'http://push.com ' ,
2526 [
26- 'subject ' => 'http ://test.com ' ,
27+ 'subject ' => 'https ://test.com ' ,
2728 'publicKey ' => 'BA6jvk34k6YjElHQ6S0oZwmrsqHdCNajxcod6KJnI77Dagikfb--O_kYXcR2eflRz6l3PcI2r8fPCH3BElLQHDk ' ,
2829 'privateKey ' => '-3CdhFOqjzixgAbUSa0Zv9zi-dwDVmWO7672aBxSFPQ ' ,
2930 ],
3031 ContentEncoding::aesgcm,
3132 1475452165 ,
32- 'WebPush eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJhdWQiOiJodHRwOi8vcHVzaC5jb20iLCJleHAiOjE0NzU0NTIxNjUsInN1YiI6Imh0dHA6Ly90ZXN0LmNvbSJ9.4F3ZKjeru4P9XM20rHPNvGBcr9zxhz8_ViyNfe11_xcuy7A9y7KfEPt6yuNikyW7eT9zYYD5mQZubDGa-5H2cA ' ,
33+ 'WebPush eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJhdWQiOiJodHRwOi8vcHVzaC5jb20iLCJleHAiOjE0NzU0NTIxNjUsInN1YiI6Imh0dHBzOi8vdGVzdC5jb20ifQ.JFr6qZp7_1tXtAbkdEFjZtGYAeAyQvQPOJQu7FQcbuvA2JwHsb65YlMUOFPG2qGImaESrHdO-G7blkUP5XHOYw ' ,
3334 'p256ecdsa=BA6jvk34k6YjElHQ6S0oZwmrsqHdCNajxcod6KJnI77Dagikfb--O_kYXcR2eflRz6l3PcI2r8fPCH3BElLQHDk ' ,
3435 ], [
3536 'http://push.com ' ,
3637 [
37- 'subject ' => 'http ://test.com ' ,
38+ 'subject ' => 'https ://test.com ' ,
3839 'publicKey ' => 'BA6jvk34k6YjElHQ6S0oZwmrsqHdCNajxcod6KJnI77Dagikfb--O_kYXcR2eflRz6l3PcI2r8fPCH3BElLQHDk ' ,
3940 'privateKey ' => '-3CdhFOqjzixgAbUSa0Zv9zi-dwDVmWO7672aBxSFPQ ' ,
4041 ],
4142 ContentEncoding::aes128gcm,
4243 1475452165 ,
43- 'vapid t=eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJhdWQiOiJodHRwOi8vcHVzaC5jb20iLCJleHAiOjE0NzU0NTIxNjUsInN1YiI6Imh0dHA6Ly90ZXN0LmNvbSJ9.4F3ZKjeru4P9XM20rHPNvGBcr9zxhz8_ViyNfe11_xcuy7A9y7KfEPt6yuNikyW7eT9zYYD5mQZubDGa-5H2cA , k=BA6jvk34k6YjElHQ6S0oZwmrsqHdCNajxcod6KJnI77Dagikfb--O_kYXcR2eflRz6l3PcI2r8fPCH3BElLQHDk ' ,
44+ 'vapid t=eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJhdWQiOiJodHRwOi8vcHVzaC5jb20iLCJleHAiOjE0NzU0NTIxNjUsInN1YiI6Imh0dHBzOi8vdGVzdC5jb20ifQ.kXXd2JaK1583Le1mheFKEKSF1I4rYFKvF0HKNXO8et-w2UYSc3d0pbsbN_sP17PvcsO_zT8XJZ-gbKWlCOGksw , k=BA6jvk34k6YjElHQ6S0oZwmrsqHdCNajxcod6KJnI77Dagikfb--O_kYXcR2eflRz6l3PcI2r8fPCH3BElLQHDk ' ,
4445 null ,
4546 ],
4647 ];
@@ -89,4 +90,20 @@ public function testCreateVapidKeys(): void
8990 $ this ->assertGreaterThanOrEqual (86 , strlen ($ keys ['publicKey ' ]));
9091 $ this ->assertGreaterThanOrEqual (42 , strlen ($ keys ['privateKey ' ]));
9192 }
93+
94+ #[TestWith([[]])]
95+ #[TestWith([['subject ' => '' ]])]
96+ #[TestWith([['subject ' => 'test ' ]])]
97+ #[TestWith([['subject ' => 'mailto: ' ]])]
98+ #[TestWith([['subject ' => 'mailto:localhost ' ]])]
99+ #[TestWith([['subject ' => 'https:// ' ]])]
100+ #[TestWith([['subject ' => 'https://example.com ' , 'pemFile ' => '' ]])]
101+ #[TestWith([['subject ' => 'https://example.com ' , 'pemFile ' => 'abc.pem ' ]])]
102+ #[TestWith([['subject ' => 'https://example.com ' , 'pem ' => '' ]])]
103+ #[TestWith([['subject ' => 'https://example.com ' , 'publicKey ' => '' ]])]
104+ public function testValidateException (array $ vapid ): void
105+ {
106+ $ this ->expectException (Exception::class);
107+ VAPID ::validate ($ vapid );
108+ }
92109}
0 commit comments