Skip to content

Commit 5a2ac50

Browse files
authored
added missing query string auth, add to account api (#372)
1 parent c4e6688 commit 5a2ac50

File tree

4 files changed

+47
-1
lines changed

4 files changed

+47
-1
lines changed

src/Account/ClientFactory.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Psr\Container\ContainerInterface;
1515
use Vonage\Client\APIResource;
1616
use Vonage\Client\Credentials\Handler\BasicHandler;
17+
use Vonage\Client\Credentials\Handler\BasicQueryHandler;
1718

1819
class ClientFactory
1920
{
@@ -25,7 +26,7 @@ public function __invoke(ContainerInterface $container): Client
2526
->setBaseUrl($accountApi->getClient()->getRestUrl())
2627
->setIsHAL(false)
2728
->setBaseUri('/account')
28-
->setAuthHandler(new BasicHandler())
29+
->setAuthHandler(new BasicQueryHandler())
2930
;
3031

3132
return new Client($accountApi);
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace Vonage\Client\Credentials\Handler;
4+
5+
use Psr\Http\Message\RequestInterface;
6+
use Vonage\Client\Credentials\Basic;
7+
use Vonage\Client\Credentials\CredentialsInterface;
8+
9+
class BasicQueryHandler extends AbstractHandler
10+
{
11+
public function __invoke(RequestInterface $request, CredentialsInterface $credentials): RequestInterface
12+
{
13+
$credentials = $this->extract(Basic::class, $credentials);
14+
15+
return $request->withUri($request->getUri()->withQuery(http_build_query($credentials->asArray())));
16+
}
17+
}

test/Account/ClientTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public function setUp(): void
5656
$this->api = new APIResource();
5757
$this->api->setBaseUrl('https://rest.nexmo.com')
5858
->setIsHAL(false)
59+
->setAuthHandler(new Client\Credentials\Handler\BasicQueryHandler())
5960
->setBaseUri('/account');
6061

6162
$this->api->setClient($this->vonageClient->reveal());
@@ -163,6 +164,10 @@ public function testGetBalance(): void
163164
$this->assertEquals('rest.nexmo.com', $request->getUri()->getHost());
164165
$this->assertEquals('GET', $request->getMethod());
165166

167+
$uri = $request->getUri();
168+
$uriString = $uri->__toString();
169+
$this->assertEquals('https://rest.nexmo.com/account/get-balance?api_key=abc&api_secret=def', $uriString);
170+
166171
return true;
167172
}))->shouldBeCalledTimes(1)->willReturn($this->getResponse('get-balance'));
168173

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace VonageTest\Client\Credentials\Handler;
4+
5+
use Laminas\Diactoros\Request;
6+
use Vonage\Client\Credentials\Basic;
7+
use Vonage\Client\Credentials\Handler\BasicQueryHandler;
8+
use PHPUnit\Framework\TestCase;
9+
10+
class BasicQueryHandlerTest extends TestCase
11+
{
12+
public function testWillAddCredentialsToRequest(): void
13+
{
14+
$request = new Request('https://example.com');
15+
$credentials = new Basic('abc', 'xyz');
16+
$handler = new BasicQueryHandler();
17+
$request = $handler($request, $credentials);
18+
19+
$uri = $request->getUri();
20+
$uriString = $uri->__toString();
21+
$this->assertEquals('https://example.com?api_key=abc&api_secret=xyz', $uriString);
22+
}
23+
}

0 commit comments

Comments
 (0)