From a8b61d318e60dfbba071f0963dff11562c3b3650 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20L=C3=BCck?= Date: Fri, 9 Feb 2018 12:59:14 +0100 Subject: [PATCH] Test explicit HTTP/1.1 protocol version --- README.md | 2 +- composer.json | 2 +- tests/FunctionalBrowserTest.php | 47 +++++++++++++++++++++++++++++++-- 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c9dad9e..d1bd320 100644 --- a/README.md +++ b/README.md @@ -341,7 +341,7 @@ method: ```php $request = new Request('OPTIONS', $url); -$request = $request->withProtocolVersion(1.1); +$request = $request->withProtocolVersion('1.1'); $browser->send($request)->then(…); ``` diff --git a/composer.json b/composer.json index c85df1f..ed48ae9 100644 --- a/composer.json +++ b/composer.json @@ -28,6 +28,6 @@ "clue/block-react": "^1.0", "clue/socks-react": "^0.8", "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35", - "react/http": "^0.7.2" + "react/http": "^0.8" } } diff --git a/tests/FunctionalBrowserTest.php b/tests/FunctionalBrowserTest.php index d63dbdc..f41a7ec 100644 --- a/tests/FunctionalBrowserTest.php +++ b/tests/FunctionalBrowserTest.php @@ -6,9 +6,11 @@ use Psr\Http\Message\ServerRequestInterface; use React\EventLoop\Factory; use React\Http\Response; +use React\Http\StreamingServer; use React\Promise\Stream; use React\Socket\Connector; use React\Stream\ThroughStream; +use RingCentral\Psr7\Request; class FunctionalBrowserTest extends TestCase { @@ -172,13 +174,12 @@ public function testPostString() $this->assertEquals('hello world', $data['data']); } - /** @group online */ public function testPostStreamChunked() { // httpbin used to support `Transfer-Encoding: chunked` for requests, // but not rejects those, so let's start our own server instance $that = $this; - $server = new \React\Http\Server(function (ServerRequestInterface $request) use ($that) { + $server = new StreamingServer(function (ServerRequestInterface $request) use ($that) { $that->assertFalse($request->hasHeader('Content-Length')); $that->assertNull($request->getBody()->getSize()); @@ -240,4 +241,46 @@ public function testPostStreamClosed() $this->assertEquals('', $data['data']); } + + public function testSendsHttp10ByDefault() + { + $server = new StreamingServer(function (ServerRequestInterface $request) { + return new Response( + 200, + array(), + $request->getProtocolVersion() + ); + }); + $socket = new \React\Socket\Server(0, $this->loop); + $server->listen($socket); + + $this->base = str_replace('tcp:', 'http:', $socket->getAddress()) . '/'; + + $response = Block\await($this->browser->get($this->base), $this->loop); + $this->assertEquals('1.0', (string)$response->getBody()); + + $socket->close(); + } + + public function testSendsExplicitHttp11Request() + { + $server = new StreamingServer(function (ServerRequestInterface $request) { + return new Response( + 200, + array(), + $request->getProtocolVersion() + ); + }); + $socket = new \React\Socket\Server(0, $this->loop); + $server->listen($socket); + + $this->base = str_replace('tcp:', 'http:', $socket->getAddress()) . '/'; + + $request = new Request('GET', $this->base, array(), '', '1.1'); + + $response = Block\await($this->browser->send($request), $this->loop); + $this->assertEquals('1.1', (string)$response->getBody()); + + $socket->close(); + } }