Skip to content

Commit 84ab3b6

Browse files
authored
Fix Messages AuthHandler (#366)
* Correct Messages handling for auth. We should use a keypair first, then try Basic * Check we're sending a keypair header
1 parent 5081434 commit 84ab3b6

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

src/Messages/ClientFactory.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Psr\Container\ContainerInterface;
66
use Vonage\Client\APIResource;
77
use Vonage\Client\Credentials\Handler\BasicHandler;
8+
use Vonage\Client\Credentials\Handler\KeypairHandler;
89

910
class ClientFactory
1011
{
@@ -16,7 +17,7 @@ public function __invoke(ContainerInterface $container): Client
1617
->setBaseUrl($api->getClient()->getApiUrl() . '/v1/messages')
1718
->setIsHAL(false)
1819
->setErrorsOn200(false)
19-
->setAuthHandler(new BasicHandler())
20+
->setAuthHandler([new KeypairHandler(), new BasicHandler()])
2021
->setExceptionErrorHandler(new ExceptionErrorHandler());
2122

2223
return new Client($api);

test/Messages/ClientTest.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,10 @@ public function setUp(): void
6363
$this->vonageClient = $this->prophesize(Client::class);
6464
$this->vonageClient->getRestUrl()->willReturn('https://rest.nexmo.com');
6565
$this->vonageClient->getCredentials()->willReturn(
66-
new Client\Credentials\Container(new Client\Credentials\Basic('abc', 'def'))
66+
new Client\Credentials\Container(new Client\Credentials\Keypair(
67+
file_get_contents(__DIR__ . '/../Client/Credentials/test.key'),
68+
'def'
69+
))
6770
);
6871

6972
/** @noinspection PhpParamsInspection */
@@ -72,7 +75,7 @@ public function setUp(): void
7275
->setIsHAL(false)
7376
->setErrorsOn200(false)
7477
->setClient($this->vonageClient->reveal())
75-
->setAuthHandler(new Client\Credentials\Handler\BasicHandler())
78+
->setAuthHandler([new Client\Credentials\Handler\KeypairHandler(), new Client\Credentials\Handler\BasicHandler()])
7679
->setExceptionErrorHandler(new ExceptionErrorHandler())
7780
->setBaseUrl('https://rest.nexmo.com');
7881

@@ -95,6 +98,10 @@ public function testCanSendSMS(): void
9598
$message = new SMSText($payload['to'], $payload['from'], $payload['text']);
9699

97100
$this->vonageClient->send(Argument::that(function (Request $request) use ($payload) {
101+
$this->assertEquals(
102+
'Bearer ',
103+
mb_substr($request->getHeaders()['Authorization'][0], 0, 7)
104+
);
98105
$this->assertRequestJsonBodyContains('to', $payload['to'], $request);
99106
$this->assertRequestJsonBodyContains('from', $payload['from'], $request);
100107
$this->assertRequestJsonBodyContains('text', $payload['text'], $request);

0 commit comments

Comments
 (0)