Вход Регистрация
Файл: vkolhoze.com/vendor/guzzle/guzzle/tests/Guzzle/Tests/Log/MessageFormatterTest.php
Строк: 128
<?php

namespace GuzzleTestsLog;

use 
GuzzleHttpClient;
use 
GuzzleHttpCurlCurlHandle;
use 
GuzzleHttpMessageEntityEnclosingRequest;
use 
GuzzleHttpEntityBody;
use 
GuzzleHttpMessageResponse;
use 
GuzzleLogMessageFormatter;
use 
GuzzlePluginLogLogPlugin;
use 
GuzzleLogClosureLogAdapter;

/**
 * @covers GuzzleLogMessageFormatter
 */
class MessageFormatterTest extends GuzzleTestsGuzzleTestCase
{
    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('GuzzleHttpCurlCurlHandle')
            ->
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('GuzzleHttpMessageResponse')
            ->
setConstructorArgs(array(200))
            ->
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));
    }

    public function 
testUsesEmptyStringWhenNoHandleAndNoResponse()
    {
        
$formatter = new MessageFormatter('{connect_time}/{total_time}');
        
$this->assertEquals('/'$formatter->format($this->request));
    }

    public function 
testInjectsTotalTime()
    {
        
$out '';
        
$formatter = new MessageFormatter('{connect_time}/{total_time}');
        
$adapter = new ClosureLogAdapter(function ($m) use (&$out) { $out .= $m; });
        
$log = new LogPlugin($adapter$formatter);
        
$this->getServer()->enqueue("HTTP/1.1 200 OKrnContent-Length: 2rnrnHI");
        
$client = new Client($this->getServer()->getUrl());
        
$client->addSubscriber($log);
        
$client->get('/')->send();
        
$this->assertNotEquals('/'$out);
    }
}
Онлайн: 0
Реклама