mirror of
https://github.com/werkraum-media/thuecat.git
synced 2024-11-04 20:36:13 +01:00
77 lines
1.9 KiB
PHP
77 lines
1.9 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace WerkraumMedia\ThueCat\Tests\Functional;
|
||
|
|
||
|
use GuzzleHttp\Handler\MockHandler;
|
||
|
use GuzzleHttp\Psr7\Response;
|
||
|
use Symfony\Component\HttpFoundation\Response as SymfonyResponse;
|
||
|
|
||
|
class GuzzleClientFaker
|
||
|
{
|
||
|
/**
|
||
|
* @var MockHandler
|
||
|
*/
|
||
|
private static $mockHandler;
|
||
|
|
||
|
public static function registerClient(): void
|
||
|
{
|
||
|
self::getMockHandler()->reset();
|
||
|
$GLOBALS['TYPO3_CONF_VARS']['HTTP']['handler']['faker'] = function (callable $handler) {
|
||
|
return self::getMockHandler();
|
||
|
};
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Cleans things up, call it in tests tearDown() method.
|
||
|
*/
|
||
|
public static function tearDown(): void
|
||
|
{
|
||
|
self::getMockHandler()->reset();
|
||
|
unset($GLOBALS['TYPO3_CONF_VARS']['HTTP']['handler']['faker']);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Adds a new response to the stack with defaults, returning the file contents of given file.
|
||
|
*/
|
||
|
public static function appendResponseFromFile(string $fileName): void
|
||
|
{
|
||
|
$fileContent = file_get_contents($fileName);
|
||
|
if ($fileContent === false) {
|
||
|
throw new \Exception('Could not load file: ' . $fileName, 1656485162);
|
||
|
}
|
||
|
|
||
|
self::appendResponseFromContent($fileContent);
|
||
|
}
|
||
|
|
||
|
public static function appendNotFoundResponse(): void
|
||
|
{
|
||
|
self::appendResponse(new Response(SymfonyResponse::HTTP_NOT_FOUND));
|
||
|
}
|
||
|
|
||
|
private static function appendResponseFromContent(string $content): void
|
||
|
{
|
||
|
self::appendResponse(new Response(
|
||
|
SymfonyResponse::HTTP_OK,
|
||
|
[],
|
||
|
$content
|
||
|
));
|
||
|
}
|
||
|
|
||
|
private static function getMockHandler(): MockHandler
|
||
|
{
|
||
|
if (!self::$mockHandler instanceof MockHandler) {
|
||
|
self::$mockHandler = new MockHandler();
|
||
|
}
|
||
|
|
||
|
return self::$mockHandler;
|
||
|
}
|
||
|
|
||
|
private static function appendResponse(Response $response): void
|
||
|
{
|
||
|
self::getMockHandler()->append($response);
|
||
|
}
|
||
|
}
|