This commit is contained in:
Marcel Pociot
2020-04-29 16:49:33 +02:00
parent c2084e6be6
commit 6cf206e0a2
35 changed files with 566 additions and 215 deletions

View File

@@ -1,18 +0,0 @@
<?php
namespace Tests\Unit;
use seregazhuk\React\PromiseTesting\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$this->assertTrue(true);
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace Tests\Unit;
use App\Logger\LoggedRequest;
use GuzzleHttp\Psr7\Request;
use Laminas\Http\Request as LaminasRequest;
use Tests\TestCase;
use function GuzzleHttp\Psr7\str;
class LoggedRequestTest extends TestCase
{
/** @test */
public function it_retrieves_the_request_id()
{
$rawRequest = str(new Request(200, '/expose', [
'X-Expose-Request-ID' => 'example-request'
]));
$parsedRequest = LaminasRequest::fromString($rawRequest);
$loggedRequest = new LoggedRequest($rawRequest, $parsedRequest);
$this->assertSame('example-request', $loggedRequest->id());
}
/** @test */
public function it_returns_the_raw_request()
{
$rawRequest = str(new Request(200, '/expose', [
'X-Expose-Request-ID' => 'example-request'
]));
$parsedRequest = LaminasRequest::fromString($rawRequest);
$loggedRequest = new LoggedRequest($rawRequest, $parsedRequest);
$this->assertSame($rawRequest, $loggedRequest->getRequestData());
}
/** @test */
public function it_returns_the_parsed_request()
{
$rawRequest = str(new Request(200, '/expose', [
'X-Expose-Request-ID' => 'example-request'
]));
$parsedRequest = LaminasRequest::fromString($rawRequest);
$loggedRequest = new LoggedRequest($rawRequest, $parsedRequest);
$this->assertSame($parsedRequest, $loggedRequest->getRequest());
}
}

View File

@@ -0,0 +1,122 @@
<?php
namespace Tests\Unit;
use App\Logger\CliRequestLogger;
use App\Logger\RequestLogger;
use Clue\React\Buzz\Browser;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Response;
use Laminas\Http\Request as LaminasRequest;
use Tests\TestCase;
use function GuzzleHttp\Psr7\str;
use Mockery as m;
class RequestLoggerTest extends TestCase
{
/** @test */
public function it_can_log_requests()
{
$browser = m::mock(Browser::class);
$browser->shouldReceive('post')
->once();
$cliLogger = m::mock(CliRequestLogger::class);
$cliLogger->shouldReceive('logRequest')->once();
$requestString = str(new Request(200, '/example'));
$parsedRequest = LaminasRequest::fromString($requestString);
$logger = new RequestLogger($browser, $cliLogger);
$logger->logRequest($requestString, $parsedRequest);
$this->assertCount(1, $logger->getData());
}
/** @test */
public function it_can_clear_the_requests()
{
$browser = m::mock(Browser::class);
$browser->shouldReceive('post')
->twice();
$cliLogger = m::mock(CliRequestLogger::class);
$cliLogger->shouldReceive('logRequest')->once();
$requestString = str(new Request(200, '/example'));
$parsedRequest = LaminasRequest::fromString($requestString);
$logger = new RequestLogger($browser, $cliLogger);
$logger->logRequest($requestString, $parsedRequest);
$logger->clear();
$this->assertCount(0, $logger->getData());
}
/** @test */
public function it_can_associate_a_response_with_a_request()
{
$browser = m::mock(Browser::class);
$browser->shouldReceive('post')
->twice();
$cliLogger = m::mock(CliRequestLogger::class);
$cliLogger->shouldReceive('logRequest')
->twice();
$requestString = str(new Request(200, '/example'));
$parsedRequest = LaminasRequest::fromString($requestString);
$logger = new RequestLogger($browser, $cliLogger);
$loggedRequest = $logger->logRequest($requestString, $parsedRequest);
$this->assertNull($logger->findLoggedRequest($loggedRequest->id())->getResponse());
$responseString = str(new Response(200, [], 'Hello World!'));
$logger->logResponse($parsedRequest, $responseString);
$this->assertNotNull($logger->findLoggedRequest($loggedRequest->id())->getResponse());
}
/** @test */
public function it_can_find_a_request_by_id()
{
$browser = m::mock(Browser::class);
$browser->shouldReceive('post')
->once();
$cliLogger = m::mock(CliRequestLogger::class);
$cliLogger->shouldReceive('logRequest')->once();
$requestString = str(new Request(200, '/example'));
$parsedRequest = LaminasRequest::fromString($requestString);
$logger = new RequestLogger($browser, $cliLogger);
$loggedRequest = $logger->logRequest($requestString, $parsedRequest);
$this->assertSame($loggedRequest, $logger->findLoggedRequest($loggedRequest->id()));
}
/** @test */
public function it_only_stores_a_limited_amount_of_requests()
{
$browser = m::mock(Browser::class);
$browser->shouldReceive('post');
$cliLogger = m::mock(CliRequestLogger::class);
$cliLogger->shouldReceive('logRequest');
$requestString = str(new Request(200, '/example'));
$parsedRequest = LaminasRequest::fromString($requestString);
$logger = new RequestLogger($browser, $cliLogger);
foreach (range(1, 20) as $i) {
$logger->logRequest($requestString, $parsedRequest);
}
$this->assertCount(RequestLogger::MAX_LOGGED_REQUESTS, $logger->getData());
}
}