<?php
namespace ZeusTest\Services\Http;
use PHPUnit_Framework_TestCase;
use Zend\Http\Request;
use Zend\Http\Response;
use Zend\Log\Logger;
use Zend\Log\Writer\Mock;
use Zeus\ServerService\Http\Service;
use ZeusTest\Helpers\ZeusFactories;
class HttpServiceTest extends PHPUnit_Framework_TestCase
{
use ZeusFactories;
/**
* @return Service
*/
protected function getService()
{
$sm = $this->getServiceManager();
$scheduler = $this->getScheduler();
$logger = $scheduler->getLogger();
$service = $sm->build(Service::class,
[
'scheduler_adapter' => $scheduler,
'logger_adapter' => $logger,
'config' =>
[
'service_settings' => [
'listen_port' => 7070,
'listen_address' => '0.0.0.0',
'keep_alive_enabled' => true,
'keep_alive_timeout' => 5,
'max_keep_alive_requests_limit' => 100,
'blocked_file_types' => [
'php',
'phtml'
]
]
]
]);
return $service;
}
public function testServiceCreation()
{
$service = $this->getService();
$service->start();
$service->stop();
}
public function testLogger()
{
$request = Request::fromString("GET /test?foo=bar HTTP/1.1\r\nHost: localhost\r\nUser-Agent: PHPUNIT\r\nReferer: http://foo.bar\r\n\r\n");
$response = new Response();
$response->setVersion('1.1');
$response->setMetadata('dataSentInBytes', 1234);
$response->setStatusCode(201);
$request->setMetadata('remoteAddress', '192.168.1.2');
$service = $this->getService();
$mockWriter = new Mock();
$nullLogger = new Logger();
$nullLogger->addWriter($mockWriter);
$service->setLogger($nullLogger);
$service->logRequest($request, $response);
$this->assertEquals('192.168.1.2 - - "GET /test?foo=bar HTTP/1.1" 201 1234 "http://foo.bar" "PHPUNIT"', $mockWriter->events[0]['message']);
}
}
|