public function testSendsWithStreamingAdapter()
 {
     $response = new puzzle_message_Response(200);
     $mock = $this->getMockBuilder('puzzle_adapter_AdapterInterface')->setMethods(array('send'))->getMockForAbstractClass();
     $mock->expects($this->never())->method('send');
     $streaming = $this->getMockBuilder('puzzle_adapter_AdapterInterface')->setMethods(array('send'))->getMockForAbstractClass();
     $streaming->expects($this->once())->method('send')->will($this->returnValue($response));
     $request = new puzzle_message_Request('GET', '/');
     $request->getConfig()->set('stream', true);
     $s = new puzzle_adapter_StreamingProxyAdapter($mock, $streaming);
     $this->assertSame($response, $s->send(new puzzle_adapter_Transaction(new puzzle_Client(), $request)));
 }
Ejemplo n.º 2
0
 public function testCanInterceptBeforeSending()
 {
     $client = new puzzle_Client();
     $request = new puzzle_message_Request('GET', 'http://httpbin.org/get');
     $this->_closure_testCanInterceptBeforeSending_response = new puzzle_message_Response(200);
     $request->getEmitter()->on('before', array($this, '__callback_testCanInterceptBeforeSending'));
     $transaction = new puzzle_adapter_Transaction($client, $request);
     $f = 'does_not_work';
     $a = new puzzle_adapter_curl_CurlAdapter(new puzzle_message_MessageFactory(), array('handle_factory' => $f));
     $a->send($transaction);
     $this->assertSame($this->_closure_testCanInterceptBeforeSending_response, $transaction->getResponse());
 }
Ejemplo n.º 3
0
 public function testDispatchesErrorEventAndRecovers()
 {
     puzzle_test_Server::flush();
     puzzle_test_Server::enqueue("HTTP/1.1 201 OK\r\nContent-Length: 0\r\n\r\n");
     $r = new puzzle_message_Request('GET', puzzle_test_Server::$url);
     $t = new puzzle_adapter_Transaction(new puzzle_Client(), $r);
     $a = $this->getAdapter();
     $r->getEmitter()->once('complete', array($this, '__callback_testDispatchesErrorEventAndRecovers_1'));
     $r->getEmitter()->on('error', array($this, '__callback_testDispatchesErrorEventAndRecovers_2'));
     $response = $a->send($t);
     $this->assertEquals(200, $response->getStatusCode());
     $this->assertEquals('bar', $response->getHeader('Foo'));
 }
Ejemplo n.º 4
0
 public function testSetsResponseBodyForDownload()
 {
     $body = puzzle_stream_Stream::factory();
     $request = new puzzle_message_Request('GET', 'http://httbin.org');
     $this->_closure_testSetsResponseBodyForDownload_ee = null;
     $request->getEmitter()->on('headers', array($this, '__callback_testSetsResponseBodyForDownload'));
     $t = new puzzle_adapter_Transaction(new puzzle_Client(), $request);
     $m = new puzzle_adapter_curl_RequestMediator($t, new puzzle_message_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($this->_closure_testSetsResponseBodyForDownload_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'));
 }
Ejemplo n.º 5
0
 public function testEmitsHeadersEvent()
 {
     $m = new puzzle_adapter_MockAdapter(new puzzle_message_Response(404));
     $request = new puzzle_message_Request('GET', 'http://httbin.org');
     $this->_closure_testEmitsHeadersEvent_called = false;
     $request->getEmitter()->once('headers', array($this, '__callback_testEmitsHeadersEvent'));
     $m->send(new puzzle_adapter_Transaction(new puzzle_Client(), $request));
     $this->assertTrue($this->_closure_testEmitsHeadersEvent_called);
 }
Ejemplo n.º 6
0
 public function testThrowsAndReleasesWhenErrorDuringCompleteEvent()
 {
     puzzle_test_Server::flush();
     puzzle_test_Server::enqueue("HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n");
     $request = new puzzle_message_Request('GET', puzzle_test_Server::$url);
     $request->getEmitter()->on('complete', array($this, '__callback_testThrowsAndReleasesWhenErrorDuringCompleteEvent'));
     $t = new puzzle_adapter_Transaction(new puzzle_Client(), $request);
     $a = new puzzle_adapter_curl_MultiAdapter(new puzzle_message_MessageFactory());
     try {
         $a->send($t);
         $this->fail('Did not throw');
     } catch (puzzle_exception_RequestException $e) {
         $this->assertSame($request, $e->getRequest());
     }
 }
Ejemplo n.º 7
0
 public function testCanChangePort()
 {
     $r = new puzzle_message_Request('GET', 'http://www.foo.com:222');
     $this->assertSame(222, $r->getPort());
     $this->assertEquals('www.foo.com', $r->getHost());
     $this->assertEquals('www.foo.com:222', $r->getHeader('host'));
     $r->setPort(80);
     $this->assertSame(80, $r->getPort());
     $this->assertEquals('www.foo.com', $r->getHost());
     $this->assertEquals('www.foo.com', $r->getHeader('host'));
 }
Ejemplo n.º 8
0
 public function testSetsTransferEncodingChunkedIfNeeded()
 {
     $r = new puzzle_message_Request('PUT', '/');
     $s = $this->getMockBuilder('puzzle_stream_StreamInterface')->setMethods(array('getSize'))->getMockForAbstractClass();
     $s->expects($this->exactly(2))->method('getSize')->will($this->returnValue(null));
     $r->setBody($s);
     $t = $this->getTrans($r);
     $s = new puzzle_subscriber_Prepare();
     $s->onBefore(new puzzle_event_BeforeEvent($t));
     $this->assertEquals('chunked', $r->getHeader('Transfer-Encoding'));
 }
Ejemplo n.º 9
0
 public function __construct()
 {
     parent::__construct('GET', '');
 }
Ejemplo n.º 10
0
 /**
  * @expectedException puzzle_exception_AdapterException
  */
 public function testThrowsForStreamOption()
 {
     $request = new puzzle_message_Request('GET', puzzle_test_Server::$url . 'haha');
     $request->getConfig()->set('stream', true);
     $t = new puzzle_adapter_Transaction(new puzzle_Client(), $request);
     $f = new puzzle_adapter_curl_CurlFactory();
     $f->__invoke($t, new puzzle_message_MessageFactory());
 }
Ejemplo n.º 11
0
 public function testSetsIntegersAndFloatsAsHeaders()
 {
     $h = new puzzle_message_Request('GET', 'http://foo.com');
     $h->setHeader('foo', 10);
     $h->setHeader('bar', 10.5);
     $h->addHeader('foo', 10);
     $h->addHeader('bar', 10.5);
     $this->assertSame('10, 10', $h->getHeader('foo'));
     $this->assertSame('10.5, 10.5', $h->getHeader('bar'));
 }
Ejemplo n.º 12
0
 public function testThrowsUnInterceptedErrors()
 {
     $this->_closure_testThrowsUnInterceptedErrors_ex = new Exception('Foo');
     $client = new puzzle_Client();
     $request = new puzzle_message_Request('GET', '/');
     $t = new puzzle_adapter_Transaction($client, $request);
     $this->_closure_testThrowsUnInterceptedErrors_errCalled = 0;
     $request->getEmitter()->on('before', array($this, '__callback_testThrowsUnInterceptedErrors'));
     $request->getEmitter()->on('error', array($this, '__callback_testThrowsUnInterceptedErrors_2'));
     try {
         puzzle_event_RequestEvents::emitBefore($t);
         $this->fail('Did not throw');
     } catch (puzzle_exception_RequestException $e) {
         $this->assertEquals(1, $this->_closure_testThrowsUnInterceptedErrors_errCalled);
     }
 }