Compare commits

..

2 commits

Author SHA1 Message Date
Marc Alexander
35436f078c
[ticket/17330] Add try/catch block though it's not really needed
PHPBB-17330
2024-06-06 20:21:39 +02:00
Marc Alexander
e813bd02c6
[ticket/17330] Add test for set_endpoint_padding
PHPBB-17330
2024-06-06 20:07:40 +02:00
2 changed files with 49 additions and 2 deletions

View file

@ -442,13 +442,19 @@ class webpush extends messenger_base implements extended_method_interface
* @param string $endpoint
*
* @return void
* @throws \Exception
*/
protected function set_endpoint_padding(\Minishlink\WebPush\WebPush $web_push, string $endpoint): void
{
if (str_contains($endpoint, 'mozilla.com') || str_contains($endpoint, 'mozaws.net'))
{
$web_push->setAutomaticPadding(self::MOZILLA_FALLBACK_PADDING);
try
{
$web_push->setAutomaticPadding(self::MOZILLA_FALLBACK_PADDING);
}
catch (\Exception)
{
// This shouldn't happen since we won't pass padding length outside limits
}
}
}
}

View file

@ -653,6 +653,47 @@ class notification_method_webpush_test extends phpbb_tests_notification_base
$this->assertCount(0, $cur_notifications, 'Assert that no notifications have been pruned');
}
public function data_set_endpoint_padding(): array
{
return [
[
'foo.mozilla.com',
webpush::MOZILLA_FALLBACK_PADDING
],
[
'foo.mozaws.net',
webpush::MOZILLA_FALLBACK_PADDING
],
[
'foo.android.googleapis.com',
\Minishlink\WebPush\Encryption::MAX_COMPATIBILITY_PAYLOAD_LENGTH,
],
];
}
/**
* @dataProvider data_set_endpoint_padding
*/
public function test_set_endpoint_padding($endpoint, $expected_padding): void
{
$web_push_reflection = new \ReflectionMethod($this->notification_method_webpush, 'set_endpoint_padding');
$web_push_reflection->setAccessible(true);
$auth = [
'VAPID' => [
'subject' => generate_board_url(),
'publicKey' => $this->config['webpush_vapid_public'],
'privateKey' => $this->config['webpush_vapid_private'],
],
];
$web_push = new \Minishlink\WebPush\WebPush($auth);
$this->assertEquals(\Minishlink\WebPush\Encryption::MAX_COMPATIBILITY_PAYLOAD_LENGTH, $web_push->getAutomaticPadding());
$web_push_reflection->invoke($this->notification_method_webpush, $web_push, $endpoint);
$this->assertEquals($expected_padding, $web_push->getAutomaticPadding());
}
protected function create_subscription_for_user($user_id, bool $invalidate_endpoint = false): array
{
$client = new \GuzzleHttp\Client();