scratch

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 86  →  ?path2? @ 87
/vendor/guzzlehttp/guzzle/tests/Adapter/Curl/RequestMediatorTest.php
@@ -0,0 +1,113 @@
<?php
 
namespace GuzzleHttp\Tests\Adapter\Curl;
 
use GuzzleHttp\Adapter\Curl\MultiAdapter;
use GuzzleHttp\Adapter\Curl\RequestMediator;
use GuzzleHttp\Adapter\Transaction;
use GuzzleHttp\Client;
use GuzzleHttp\Event\HeadersEvent;
use GuzzleHttp\Message\MessageFactory;
use GuzzleHttp\Message\Request;
use GuzzleHttp\Message\Response;
use GuzzleHttp\Stream\Stream;
use GuzzleHttp\Tests\Server;
 
/**
* @covers GuzzleHttp\Adapter\Curl\RequestMediator
*/
class RequestMediatorTest extends \PHPUnit_Framework_TestCase
{
public function testSetsResponseBodyForDownload()
{
$body = Stream::factory();
$request = new Request('GET', 'http://httbin.org');
$ee = null;
$request->getEmitter()->on(
'headers',
function (HeadersEvent $e) use (&$ee) {
$ee = $e;
}
);
$t = new Transaction(new Client(), $request);
$m = new RequestMediator($t, new MessageFactory());
$m->setResponseBody($body);
$this->assertEquals(18, $m->receiveResponseHeader(null, "HTTP/1.1 202 FOO\r\n"));
$this->assertEquals(10, $m->receiveResponseHeader(null, "Foo: Bar\r\n"));
$this->assertEquals(11, $m->receiveResponseHeader(null, "Baz : Bam\r\n"));
$this->assertEquals(19, $m->receiveResponseHeader(null, "Content-Length: 3\r\n"));
$this->assertEquals(2, $m->receiveResponseHeader(null, "\r\n"));
$this->assertNotNull($ee);
$this->assertEquals(202, $t->getResponse()->getStatusCode());
$this->assertEquals('FOO', $t->getResponse()->getReasonPhrase());
$this->assertEquals('Bar', $t->getResponse()->getHeader('Foo'));
$this->assertEquals('Bam', $t->getResponse()->getHeader('Baz'));
$m->writeResponseBody(null, 'foo');
$this->assertEquals('foo', (string) $body);
$this->assertEquals('3', $t->getResponse()->getHeader('Content-Length'));
}
 
public function testSendsToNewBodyWhenNot2xxResponse()
{
$body = Stream::factory();
$request = new Request('GET', 'http://httbin.org');
$t = new Transaction(new Client(), $request);
$m = new RequestMediator($t, new MessageFactory());
$m->setResponseBody($body);
$this->assertEquals(27, $m->receiveResponseHeader(null, "HTTP/1.1 304 Not Modified\r\n"));
$this->assertEquals(2, $m->receiveResponseHeader(null, "\r\n"));
$this->assertEquals(304, $t->getResponse()->getStatusCode());
$m->writeResponseBody(null, 'foo');
$this->assertEquals('', (string) $body);
$this->assertEquals('foo', (string) $t->getResponse()->getBody());
}
 
public function testUsesDefaultBodyIfNoneSet()
{
$t = new Transaction(new Client(), new Request('GET', 'http://httbin.org'));
$t->setResponse(new Response(200));
$m = new RequestMediator($t, new MessageFactory());
$this->assertEquals(3, $m->writeResponseBody(null, 'foo'));
$this->assertEquals('foo', (string) $t->getResponse()->getBody());
}
 
public function testCanUseResponseBody()
{
$body = Stream::factory();
$t = new Transaction(new Client(), new Request('GET', 'http://httbin.org'));
$t->setResponse(new Response(200, [], $body));
$m = new RequestMediator($t, new MessageFactory());
$this->assertEquals(3, $m->writeResponseBody(null, 'foo'));
$this->assertEquals('foo', (string) $body);
}
 
public function testHandlesTransactionWithNoResponseWhenWritingBody()
{
$t = new Transaction(new Client(), new Request('GET', 'http://httbin.org'));
$m = new RequestMediator($t, new MessageFactory());
$this->assertEquals(0, $m->writeResponseBody(null, 'test'));
}
 
public function testReadsFromRequestBody()
{
$body = Stream::factory('foo');
$t = new Transaction(new Client(), new Request('PUT', 'http://httbin.org', [], $body));
$m = new RequestMediator($t, new MessageFactory());
$this->assertEquals('foo', $m->readRequestBody(null, null, 3));
}
 
public function testEmitsHeadersEventForHeadRequest()
{
Server::enqueue(["HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nOK"]);
$ee = null;
$client = new Client(['adapter' => new MultiAdapter(new MessageFactory())]);
$client->head(Server::$url, [
'events' => [
'headers' => function (HeadersEvent $e) use (&$ee) {
$ee = $e;
}
]
]);
$this->assertInstanceOf('GuzzleHttp\\Event\\HeadersEvent', $ee);
}
}