Open Journal Systems  3.3.0
RequestMediatorTest.php
1 <?php
2 
3 namespace Guzzle\Tests\Http\Curl;
4 
9 
14 {
15  public $events = array();
16 
17  public function event($event)
18  {
19  $this->events[] = $event;
20  }
21 
22  public function testEmitsEvents()
23  {
24  $request = new EntityEnclosingRequest('PUT', 'http://www.example.com');
25  $request->setBody('foo');
26  $request->setResponse(new Response(200));
27 
28  // Ensure that IO events are emitted
29  $request->getCurlOptions()->set('emit_io', true);
30 
31  // Attach listeners for each event type
32  $request->getEventDispatcher()->addListener('curl.callback.progress', array($this, 'event'));
33  $request->getEventDispatcher()->addListener('curl.callback.read', array($this, 'event'));
34  $request->getEventDispatcher()->addListener('curl.callback.write', array($this, 'event'));
35 
36  $mediator = new RequestMediator($request, true);
37 
38  $mediator->progress('a', 'b', 'c', 'd');
39  $this->assertEquals(1, count($this->events));
40  $this->assertEquals('curl.callback.progress', $this->events[0]->getName());
41 
42  $this->assertEquals(3, $mediator->writeResponseBody('foo', 'bar'));
43  $this->assertEquals(2, count($this->events));
44  $this->assertEquals('curl.callback.write', $this->events[1]->getName());
45  $this->assertEquals('bar', $this->events[1]['write']);
46  $this->assertSame($request, $this->events[1]['request']);
47 
48  $this->assertEquals('foo', $mediator->readRequestBody('a', 'b', 3));
49  $this->assertEquals(3, count($this->events));
50  $this->assertEquals('curl.callback.read', $this->events[2]->getName());
51  $this->assertEquals('foo', $this->events[2]['read']);
52  $this->assertSame($request, $this->events[2]['request']);
53  }
54 
56  {
57  $this->getServer()->flush();
58  $this->getServer()->enqueue(array(
59  "HTTP/1.1 307 Foo\r\nLocation: /foo\r\nContent-Length: 2\r\n\r\nHI",
60  "HTTP/1.1 301 Foo\r\nLocation: /foo\r\nContent-Length: 2\r\n\r\nFI",
61  "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ntest",
62  ));
63  $client = new Client($this->getServer()->getUrl());
64  $response = $client->get()->send();
65  $this->assertEquals('test', $response->getBody(true));
66  }
67 }
Guzzle\Tests\GuzzleTestCase
Definition: GuzzleTestCase.php:22
Guzzle\Http\Message\Response
Definition: lib/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Response.php:17
Guzzle\Tests\Http\Curl
Definition: CurlHandleTest.php:3
Guzzle\Tests\Http\Curl\RequestMediatorTest\$events
$events
Definition: RequestMediatorTest.php:15
Guzzle\Tests\Http\Curl\RequestMediatorTest
Definition: RequestMediatorTest.php:13
Guzzle\Http\Message\EntityEnclosingRequest
Definition: EntityEnclosingRequest.php:14
Guzzle\Tests\Http\Curl\RequestMediatorTest\testDoesNotUseRequestResponseBodyWhenNotCustom
testDoesNotUseRequestResponseBodyWhenNotCustom()
Definition: RequestMediatorTest.php:55
Guzzle\Http\Curl\RequestMediator
Definition: RequestMediator.php:12
Guzzle\Http\Client
Definition: lib/vendor/guzzle/guzzle/src/Guzzle/Http/Client.php:24
Guzzle\Tests\Http\Curl\RequestMediatorTest\testEmitsEvents
testEmitsEvents()
Definition: RequestMediatorTest.php:22
Guzzle\Tests\GuzzleTestCase\getServer
static getServer()
Definition: GuzzleTestCase.php:36
Guzzle\Tests\Http\Curl\RequestMediatorTest\event
event($event)
Definition: RequestMediatorTest.php:17