From 1d0655b82bb8634c9d824f3bd8ec89b4b2be5d29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Ostroluck=C3=BD?= Date: Sat, 3 Aug 2019 21:06:53 +0200 Subject: [PATCH] Add amphp/socket 1.x support --- composer.json | 2 +- src/Responder.php | 2 +- tests/ResponderTest.php | 16 ++++++++++------ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 1506602..5a1befd 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "ext-json": "*", "amphp/amp": "^2.0", "amphp/byte-stream": "^1.2.5", - "amphp/socket": "^0.10", + "amphp/socket": "^0.10|^1", "jean85/pretty-package-versions": "^1.1", "psr/log": "^1.1", "symfony/console": "^4.1@beta", diff --git a/src/Responder.php b/src/Responder.php index 2fb340a..15146e4 100644 --- a/src/Responder.php +++ b/src/Responder.php @@ -60,7 +60,7 @@ public function __construct( public function __invoke(Socket $socket): \Generator { - $remoteAddress = $socket->getRemoteAddress(); + $remoteAddress = (string)$socket->getRemoteAddress(); $this->logger->debug("Accepted connection from $remoteAddress:\n".trim(yield $socket->read())); $header = [ diff --git a/tests/ResponderTest.php b/tests/ResponderTest.php index 30ab73c..7c50b55 100644 --- a/tests/ResponderTest.php +++ b/tests/ResponderTest.php @@ -5,9 +5,11 @@ namespace Ostrolucky\Stdinho\Tests; use Amp\ByteStream\InputStream; +use Amp\ByteStream\ResourceOutputStream; use Amp\Coroutine; use Amp\Deferred; -use Amp\Socket\ClientSocket; +use Amp\Socket\Socket; +use Amp\Socket\SocketAddress; use Amp\Success; use Ostrolucky\Stdinho\Bufferer\ResolvedBufferer; use Ostrolucky\Stdinho\Responder; @@ -29,13 +31,15 @@ public function testResponderHandlesClientAbruptDisconnect(): void new Deferred() ); - $socket = $this->getMockBuilder(ClientSocket::class) - ->setConstructorArgs([$resource = fopen('php://memory', 'rwb')]) - ->setMethods(['read', 'getRemoteAddress']) - ->getMock() - ; + $writer = new ResourceOutputStream($resource = fopen('php://memory', 'rwb')); + $socket = $this->createMock(Socket::class); + // TODO remove class_exists when we remove amphp/socket 0.x support (when amphp/artax supports amphp/socket 1.x) + $socket->method('getRemoteAddress')->willReturn(class_exists(SocketAddress::class) ? new SocketAddress(''): ''); $socket->method('read')->willReturn(new Success('')); + $socket->method('write')->willReturnCallback(function(string $data) use ($writer) { + return $writer->write($data); + }); fclose($resource);