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

namespace GuzzleTestsPluginAsync;

use 
GuzzlePluginAsyncAsyncPlugin;
use 
GuzzleHttpMessageRequestInterface;
use 
GuzzleHttpMessageRequestFactory;
use 
GuzzleHttpCurlCurlHandle;
use 
GuzzleHttpExceptionCurlException;
use 
GuzzleCommonEvent;
use 
GuzzleHttpClient;

/**
 * @covers GuzzlePluginAsyncAsyncPlugin
 */
class AsyncPluginTest extends GuzzleTestsGuzzleTestCase
{
    public function 
testSubscribesToEvents()
    {
        
$events AsyncPlugin::getSubscribedEvents();
        
$this->assertArrayHasKey('request.before_send'$events);
        
$this->assertArrayHasKey('request.exception'$events);
        
$this->assertArrayHasKey('curl.callback.progress'$events);
    }

    public function 
testEnablesProgressCallbacks()
    {
        
$p = new AsyncPlugin();
        
$request RequestFactory::getInstance()->create('PUT''http://www.example.com');
        
$event = new Event(array(
            
'request' => $request
        
));
        
$p->onBeforeSend($event);
        
$this->assertEquals(true$request->getCurlOptions()->get('progress'));
    }

    public function 
testAddsTimesOutAfterSending()
    {
        
$p = new AsyncPlugin();
        
$request RequestFactory::getInstance()->create('PUT''http://www.example.com');
        
$handle CurlHandle::factory($request);
        
$event = new Event(array(
            
'request'     => $request,
            
'handle'      => $handle->getHandle(),
            
'uploaded'    => 10,
            
'upload_size' => 10,
            
'downloaded'  => 0
        
));
        
$p->onCurlProgress($event);
    }

    public function 
testEnsuresRequestIsSet()
    {
        
$p = new AsyncPlugin();
        
$event = new Event(array(
            
'uploaded'    => 10,
            
'upload_size' => 10,
            
'downloaded'  => 0
        
));
        
$p->onCurlProgress($event);
    }

    public function 
testMasksCurlExceptions()
    {
        
$p = new AsyncPlugin();
        
$request RequestFactory::getInstance()->create('PUT''http://www.example.com');
        
$e = new CurlException('Error');
        
$event = new Event(array(
            
'request'   => $request,
            
'exception' => $e
        
));
        
$p->onRequestTimeout($event);
        
$this->assertEquals(RequestInterface::STATE_COMPLETE$request->getState());
        
$this->assertEquals(200$request->getResponse()->getStatusCode());
        
$this->assertTrue($request->getResponse()->hasHeader('X-Guzzle-Async'));
    }

    public function 
testEnsuresIntegration()
    {
        
$this->getServer()->flush();
        
$this->getServer()->enqueue("HTTP/1.1 204 FOOrnContent-Length: 4rnrntest");
        
$client = new Client($this->getServer()->getUrl());
        
$request $client->post('/'null, array(
            
'foo' => 'bar'
        
));
        
$request->getEventDispatcher()->addSubscriber(new AsyncPlugin());
        
$request->send();
        
$this->assertEquals(''$request->getResponse()->getBody(true));
        
$this->assertTrue($request->getResponse()->hasHeader('X-Guzzle-Async'));
        
$received $this->getServer()->getReceivedRequests(true);
        
$this->assertEquals('POST'$received[0]->getMethod());
    }
}
Онлайн: 0
Реклама