<?php
/*
* This file is part of Chevere.
*
* (c) Rodolfo Berrios <rodolfo@chevere.org>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chevere\Xr\Tests;
use Chevere\Xr\Exceptions\XrStopException;
use Chevere\Xr\Tests\_resources\XrCurlError;
use Chevere\Xr\Tests\_resources\XrCurlLockTrue;
use Chevere\Xr\Tests\_resources\XrCurlStopTrue;
use Chevere\Xr\XrClient;
use Chevere\Xr\XrCurl;
use Chevere\Xr\XrMessage;
use PHPUnit\Framework\TestCase;
final class XrClientTest extends TestCase
{
public function testDefault(): void
{
$client = new XrClient();
$this->assertSame(
'http://localhost:27420/endpoint',
$client->getUrl('endpoint')
);
}
public function testCustom(): void
{
$port = 12345;
$host = 'test-host';
$client = new XrClient(port: $port, host: $host);
$this->assertSame(
"http://$host:$port/endpoint",
$client->getUrl('endpoint')
);
$message = new XrMessage();
$client->sendMessage($message);
$this->assertFalse($client->isLocked($message));
}
public function testWithCurl(): void
{
$curl = new XrCurl();
$client = (new XrClient())->withCurl($curl);
$this->assertSame($curl, $client->curl());
}
public function testPauseLocked()
{
require_once __DIR__ . '/_resources/XrCurlLockTrue.php';
$curl = new XrCurlLockTrue();
$client = (new XrClient())->withCurl($curl);
$message = new XrMessage();
$this->assertTrue($client->isLocked($message));
}
public function testPauseStop()
{
require_once __DIR__ . '/_resources/XrCurlStopTrue.php';
$curl = new XrCurlStopTrue();
$client = (new XrClient())->withCurl($curl);
$message = new XrMessage();
$this->expectException(XrStopException::class);
$client->sendPause($message);
}
public function testPauseError()
{
require_once __DIR__ . '/_resources/XrCurlError.php';
$curl = new XrCurlError();
$client = (new XrClient())->withCurl($curl);
$message = new XrMessage();
$client->sendPause($message);
$this->assertFalse($client->isLocked($message));
}
}
|