Spaces:
No application file
No application file
File size: 2,185 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
<?php
namespace Mautic\WebhookBundle\Tests\Http;
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Response;
use Mautic\CoreBundle\Helper\CoreParametersHelper;
use Mautic\WebhookBundle\Http\Client;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
final class ClientTest extends TestCase
{
/**
* @var MockObject&CoreParametersHelper
*/
private MockObject $parametersMock;
/**
* @var MockObject&GuzzleClient
*/
private MockObject $httpClientMock;
private Client $client;
protected function setUp(): void
{
parent::setUp();
$this->parametersMock = $this->createMock(CoreParametersHelper::class);
$this->httpClientMock = $this->createMock(GuzzleClient::class);
$this->client = new Client($this->parametersMock, $this->httpClientMock);
}
public function testPost(): void
{
$method = 'POST';
$url = 'url';
$payload = ['payload'];
$siteUrl = 'siteUrl';
$headers = [
'Content-Type' => 'application/json',
'X-Origin-Base-URL' => $siteUrl,
];
$response = new Response();
$this->parametersMock->expects($this->once())
->method('get')
->with('site_url')
->willReturn($siteUrl);
$this->httpClientMock->expects($this->once())
->method('sendRequest')
->with($this->callback(function (Request $request) use ($method, $url, $headers, $payload) {
$this->assertSame($method, $request->getMethod());
$this->assertSame($url, $request->getUri()->getPath());
foreach ($headers as $headerName => $headerValue) {
$header = $request->getHeader($headerName);
$this->assertSame($headerValue, $header[0]);
}
$this->assertSame(json_encode($payload), (string) $request->getBody());
return true;
}))
->willReturn($response);
$this->assertEquals($response, $this->client->post($url, $payload));
}
}
|