mirror of
https://github.com/bitinflow/expose.git
synced 2026-03-13 13:35:54 +00:00
wip
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
48
tests/Unit/LoggedRequestTest.php
Normal file
48
tests/Unit/LoggedRequestTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
122
tests/Unit/RequestLoggerTest.php
Normal file
122
tests/Unit/RequestLoggerTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user