diff --git a/src/Symfony/Component/Notifier/Bridge/Ntfy/NtfyTransport.php b/src/Symfony/Component/Notifier/Bridge/Ntfy/NtfyTransport.php index d6120c1447fe4..aafdcd5b8a27e 100644 --- a/src/Symfony/Component/Notifier/Bridge/Ntfy/NtfyTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Ntfy/NtfyTransport.php @@ -84,6 +84,8 @@ protected function doSend(MessageInterface $message): SentMessage if (null !== $this->user && null !== $this->password) { $headers['Authorization'] = 'Basic '.rtrim(base64_encode($this->user.':'.$this->password), '='); + } elseif (null !== $this->password) { + $headers['Authorization'] = 'Bearer '.$this->password; } $response = $this->client->request('POST', ($this->secureHttp ? 'https' : 'http').'://'.$this->getEndpoint(), [ @@ -115,8 +117,8 @@ protected function doSend(MessageInterface $message): SentMessage public function supports(MessageInterface $message): bool { - return $message instanceof PushMessage && - (null === $message->getOptions() || $message->getOptions() instanceof NtfyOptions); + return $message instanceof PushMessage + && (null === $message->getOptions() || $message->getOptions() instanceof NtfyOptions); } public function __toString(): string diff --git a/src/Symfony/Component/Notifier/Bridge/Ntfy/NtfyTransportFactory.php b/src/Symfony/Component/Notifier/Bridge/Ntfy/NtfyTransportFactory.php index b469090f8f0e0..2cb2282e4f768 100644 --- a/src/Symfony/Component/Notifier/Bridge/Ntfy/NtfyTransportFactory.php +++ b/src/Symfony/Component/Notifier/Bridge/Ntfy/NtfyTransportFactory.php @@ -41,8 +41,11 @@ public function create(Dsn $dsn): TransportInterface $transport->setPort($port); } - if (!empty($user = $dsn->getUser()) && !empty($password = $dsn->getPassword())) { + if (!empty($user = $dsn->getUser())) { $transport->setUser($user); + } + + if (!empty($password = $dsn->getPassword())) { $transport->setPassword($password); } diff --git a/src/Symfony/Component/Notifier/Bridge/Ntfy/Tests/NtfyTransportFactoryTest.php b/src/Symfony/Component/Notifier/Bridge/Ntfy/Tests/NtfyTransportFactoryTest.php index d54fdd122f880..35a77a54b379a 100644 --- a/src/Symfony/Component/Notifier/Bridge/Ntfy/Tests/NtfyTransportFactoryTest.php +++ b/src/Symfony/Component/Notifier/Bridge/Ntfy/Tests/NtfyTransportFactoryTest.php @@ -31,6 +31,10 @@ public static function createProvider(): iterable 'ntfy://ntfy.sh/test', 'ntfy://user:password@default/test', ]; + yield [ + 'ntfy://ntfy.sh/test', + 'ntfy://:password@default/test', + ]; yield [ 'ntfy://ntfy.sh:8888/test', 'ntfy://user:password@default:8888/test?secureHttp=off', diff --git a/src/Symfony/Component/Notifier/Bridge/Ntfy/Tests/NtfyTransportTest.php b/src/Symfony/Component/Notifier/Bridge/Ntfy/Tests/NtfyTransportTest.php index cb8485750c463..cc5fa2b67adf2 100644 --- a/src/Symfony/Component/Notifier/Bridge/Ntfy/Tests/NtfyTransportTest.php +++ b/src/Symfony/Component/Notifier/Bridge/Ntfy/Tests/NtfyTransportTest.php @@ -85,6 +85,32 @@ public function testSend() $this->assertSame('2BYIwRmvBKcv', $sentMessage->getMessageId()); } + public function testSendWithPassword() + { + $response = $this->createMock(ResponseInterface::class); + $response->expects($this->exactly(2)) + ->method('getStatusCode') + ->willReturn(200); + $response->expects($this->once()) + ->method('getContent') + ->willReturn(json_encode(['id' => '2BYIwRmvBKcv', 'event' => 'message'])); + + $client = new MockHttpClient(function (string $method, string $url, array $options = []) use ($response): ResponseInterface { + $expectedBody = json_encode(['topic' => 'test', 'title' => 'Hello', 'message' => 'World']); + $expectedAuthorization = 'Authorization: Bearer testtokentesttoken'; + $this->assertJsonStringEqualsJsonString($expectedBody, $options['body']); + $this->assertTrue(\in_array($expectedAuthorization, $options['headers'], true)); + + return $response; + }); + + $transport = $this->createTransport($client)->setPassword('testtokentesttoken'); + + $sentMessage = $transport->send(new PushMessage('Hello', 'World')); + + $this->assertSame('2BYIwRmvBKcv', $sentMessage->getMessageId()); + } + public function testSendWithUserAndPassword() { $response = $this->createMock(ResponseInterface::class); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy