mirror of
https://github.com/guzzle/guzzle.git
synced 2025-02-25 10:33:18 +01:00
122 lines
4.0 KiB
PHP
122 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace Guzzle\Tests\Log;
|
|
|
|
use Guzzle\Http\Curl\CurlHandle;
|
|
use Guzzle\Http\Message\EntityEnclosingRequest;
|
|
use Guzzle\Http\EntityBody;
|
|
use Guzzle\Http\Message\Response;
|
|
use Guzzle\Log\MessageFormatter;
|
|
|
|
/**
|
|
* @covers Guzzle\Log\MessageFormatter
|
|
*/
|
|
class MessageFormatterTest extends \Guzzle\Tests\GuzzleTestCase
|
|
{
|
|
protected $request;
|
|
protected $response;
|
|
protected $handle;
|
|
|
|
public function setUp()
|
|
{
|
|
$this->request = new EntityEnclosingRequest('POST', 'http://foo.com?q=test', array(
|
|
'X-Foo' => 'bar',
|
|
'Authorization' => 'Baz'
|
|
));
|
|
$this->request->setBody(EntityBody::factory('Hello'));
|
|
|
|
$this->response = new Response(200, array(
|
|
'X-Test' => 'Abc'
|
|
), 'Foo');
|
|
|
|
$this->handle = $this->getMockBuilder('Guzzle\Http\Curl\CurlHandle')
|
|
->disableOriginalConstructor()
|
|
->setMethods(array('getError', 'getErrorNo', 'getStderr', 'getInfo'))
|
|
->getMock();
|
|
|
|
$this->handle->expects($this->any())
|
|
->method('getError')
|
|
->will($this->returnValue('e'));
|
|
|
|
$this->handle->expects($this->any())
|
|
->method('getErrorNo')
|
|
->will($this->returnValue('123'));
|
|
|
|
$this->handle->expects($this->any())
|
|
->method('getStderr')
|
|
->will($this->returnValue('testing'));
|
|
|
|
$this->handle->expects($this->any())
|
|
->method('getInfo')
|
|
->will($this->returnValueMap(array(
|
|
array(CURLINFO_CONNECT_TIME, '123'),
|
|
array(CURLINFO_TOTAL_TIME, '456')
|
|
)));
|
|
}
|
|
|
|
public function logProvider()
|
|
{
|
|
return array(
|
|
// Uses the cache for the second time
|
|
array('{method} - {method}', 'POST - POST'),
|
|
array('{url}', 'http://foo.com?q=test'),
|
|
array('{port}', '80'),
|
|
array('{resource}', '/?q=test'),
|
|
array('{host}', 'foo.com'),
|
|
array('{hostname}', gethostname()),
|
|
array('{protocol}/{version}', 'HTTP/1.1'),
|
|
array('{code} {phrase}', '200 OK'),
|
|
array('{req_header_Foo}', ''),
|
|
array('{req_header_X-Foo}', 'bar'),
|
|
array('{req_header_Authorization}', 'Baz'),
|
|
array('{res_header_foo}', ''),
|
|
array('{res_header_X-Test}', 'Abc'),
|
|
array('{req_body}', 'Hello'),
|
|
array('{res_body}', 'Foo'),
|
|
array('{curl_stderr}', 'testing'),
|
|
array('{curl_error}', 'e'),
|
|
array('{curl_code}', '123'),
|
|
array('{connect_time}', '123'),
|
|
array('{total_time}', '456')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider logProvider
|
|
*/
|
|
public function testFormatsMessages($template, $output)
|
|
{
|
|
$formatter = new MessageFormatter($template);
|
|
$this->assertEquals($output, $formatter->format($this->request, $this->response, $this->handle));
|
|
}
|
|
|
|
public function testFormatsRequestsAndResponses()
|
|
{
|
|
$formatter = new MessageFormatter();
|
|
$formatter->setTemplate('{request}{response}');
|
|
$this->assertEquals($this->request . $this->response, $formatter->format($this->request, $this->response));
|
|
}
|
|
|
|
public function testAddsTimestamp()
|
|
{
|
|
$formatter = new MessageFormatter('{ts}');
|
|
$this->assertNotEmpty($formatter->format($this->request, $this->response));
|
|
}
|
|
|
|
public function testUsesResponseWhenNoHandleAndGettingCurlInformation()
|
|
{
|
|
$formatter = new MessageFormatter('{connect_time}/{total_time}');
|
|
$response = $this->getMockBuilder('Guzzle\Http\Message\Response')
|
|
->disableOriginalConstructor()
|
|
->setMethods(array('getInfo'))
|
|
->getMock();
|
|
$response->expects($this->exactly(2))
|
|
->method('getInfo')
|
|
->will($this->returnValueMap(array(
|
|
array('connect_time', '1'),
|
|
array('total_time', '2'),
|
|
)));
|
|
$this->assertEquals('1/2', $formatter->format($this->request, $response));
|
|
}
|
|
}
|