From 32da2c8c58d591bd2f62040aec03cecc905193da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20L=C3=BCck?= Date: Tue, 27 Jul 2021 17:13:37 +0200 Subject: [PATCH] Simplify usage by supporting new Socket API without nullable loop --- README.md | 34 ++--- composer.json | 4 +- examples/01-https-request.php | 4 +- examples/02-optional-proxy-https-request.php | 4 +- examples/11-proxy-raw-http-protocol.php | 2 +- .../12-optional-proxy-raw-http-protocol.php | 2 +- examples/13-proxy-raw-https-protocol.php | 2 +- .../14-optional-proxy-raw-https-protocol.php | 2 +- examples/15-proxy-chaining.php | 2 +- examples/16-local-dns.php | 2 +- examples/21-server.php | 2 +- examples/22-server-with-password.php | 2 +- examples/23-server-blacklist.php | 2 +- examples/31-server-proxy-chaining.php | 2 +- ...server-proxy-chaining-from-random-pool.php | 2 +- examples/41-server-secure.php | 10 +- examples/42-http-secure.php | 16 +- src/Server.php | 2 +- tests/ClientTest.php | 5 +- tests/FunctionalTest.php | 141 +++++++++--------- tests/TestCase.php | 1 - 21 files changed, 125 insertions(+), 118 deletions(-) diff --git a/README.md b/README.md index b17b252..190a2d6 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ proxy server listening for connections on `localhost:1080`: $server = new Clue\React\Socks\Server(); // listen on localhost:1080 -$socket = new React\Socket\Server('127.0.0.1:1080'); +$socket = new React\Socket\SocketServer('127.0.0.1:1080'); $server->listen($socket); ``` @@ -134,7 +134,7 @@ proxy servers etc.), you can explicitly pass a custom instance of the [`ConnectorInterface`](https://github.com/reactphp/socket#connectorinterface): ```php -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'dns' => '127.0.0.1', 'tcp' => array( 'bindto' => '192.168.10.1:0' @@ -192,7 +192,7 @@ in ReactPHP's [`Connector`](https://github.com/reactphp/socket#connector): ```php $proxy = new Clue\React\Socks\Client('127.0.0.1:1080'); -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'dns' => false )); @@ -234,7 +234,7 @@ ReactPHP's [`Connector`](https://github.com/reactphp/socket#connector): ```php $proxy = new Clue\React\Socks\Client('127.0.0.1:1080'); -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'dns' => false )); @@ -264,7 +264,7 @@ You can optionally pass additional to the constructor like this: ```php -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'tls' => array( 'verify_peer' => false, @@ -286,12 +286,12 @@ This allows you to send both plain HTTP and TLS-encrypted HTTPS requests like th ```php $proxy = new Clue\React\Socks\Client('127.0.0.1:1080'); -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'dns' => false )); -$browser = new React\Http\Browser(null, $connector); +$browser = new React\Http\Browser($connector); $browser->get('https://example.com/')->then(function (Psr\Http\Message\ResponseInterface $response) { var_dump($response->getHeaders(), (string) $response->getBody()); @@ -422,7 +422,7 @@ other examples explicitly disable DNS resolution like this: ```php $proxy = new Clue\React\Socks\Client('127.0.0.1:1080'); -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'dns' => false )); @@ -435,7 +435,7 @@ using SOCKS4), you can use the following code: $proxy = new Clue\React\Socks\Client('127.0.0.1:1080'); // set up Connector which uses Google's public DNS (8.8.8.8) -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'dns' => '8.8.8.8' )); @@ -527,7 +527,7 @@ SOCKS connector from another SOCKS client like this: $middle = new Clue\React\Socks\Client('127.0.0.1:1080'); $target = new Clue\React\Socks\Client('example.com:1080', $middle); -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $target, 'dns' => false )); @@ -573,7 +573,7 @@ underlying connection attempt if it takes too long: ```php $proxy = new Clue\React\Socks\Client('127.0.0.1:1080'); -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'dns' => false, 'timeout' => 3.0 @@ -692,8 +692,8 @@ You can start listening on an underlying TCP/IP socket server like this: ```php $server = new Clue\React\Socks\Server(); -// listen on localhost:$port -$socket = new React\Socket\Server($port); +// listen on localhost:1080 +$socket = new React\Socket\SocketServer('127.0.0.1:1080'); $server->listen($socket); ``` @@ -718,7 +718,7 @@ proxy servers etc.), you can explicitly pass a custom instance of the [`ConnectorInterface`](https://github.com/reactphp/socket#connectorinterface): ```php -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'dns' => '127.0.0.1', 'tcp' => array( 'bindto' => '192.168.10.1:0' @@ -835,7 +835,7 @@ $proxy = new Clue\React\Socks\Client('user:pass@example.com:1080'); $server = new Clue\React\Socks\Server(null, $proxy); // listen on localhost:1080 -$socket = new React\Socket\Server('127.0.0.1:1080'); +$socket = new React\Socket\SocketServer('127.0.0.1:1080'); $server->listen($socket); ``` @@ -880,7 +880,7 @@ You can simply start your listening socket on the `tls://` URI scheme like this: $server = new Clue\React\Socks\Server(); // listen on tls://127.0.0.1:1080 with the given server certificate -$socket = new React\Socket\Server('tls://127.0.0.1:1080', null, array( +$socket = new React\Socket\SocketServer('tls://127.0.0.1:1080', array( 'tls' => array( 'local_cert' => __DIR__ . '/localhost.pem', ) @@ -915,7 +915,7 @@ You can simply start your listening socket on the `unix://` URI scheme like this $server = new Clue\React\Socks\Server(); // listen on /tmp/proxy.sock -$socket = new React\Socket\Server('unix:///tmp/proxy.sock'); +$socket = new React\Socket\SocketServer('unix:///tmp/proxy.sock'); $server->listen($socket); ``` diff --git a/composer.json b/composer.json index a6c36b5..c57742b 100644 --- a/composer.json +++ b/composer.json @@ -13,14 +13,14 @@ "require": { "php": ">=5.3", "react/promise": "^2.1 || ^1.2", - "react/socket": "^1.8" + "react/socket": "^1.9" }, "require-dev": { "clue/block-react": "^1.1", "clue/connection-manager-extra": "^1.0 || ^0.7", "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", "react/event-loop": "^1.2", - "react/http": "^1.4" + "react/http": "^1.5" }, "autoload": { "psr-4": { "Clue\\React\\Socks\\": "src/" } diff --git a/examples/01-https-request.php b/examples/01-https-request.php index 320fb4a..461c7bc 100644 --- a/examples/01-https-request.php +++ b/examples/01-https-request.php @@ -23,13 +23,13 @@ $proxy = new Clue\React\Socks\Client($url); -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'timeout' => 3.0, 'dns' => false )); -$browser = new React\Http\Browser(null, $connector); +$browser = new React\Http\Browser($connector); $browser->get('https://example.com/')->then(function (Psr\Http\Message\ResponseInterface $response) { var_dump($response->getHeaders(), (string) $response->getBody()); diff --git a/examples/02-optional-proxy-https-request.php b/examples/02-optional-proxy-https-request.php index e6a5f1a..dbdc0f3 100644 --- a/examples/02-optional-proxy-https-request.php +++ b/examples/02-optional-proxy-https-request.php @@ -20,14 +20,14 @@ if ($url !== false) { $proxy = new Clue\React\Socks\Client($url); - $connector = new React\Socket\Connector(null, array( + $connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'timeout' => 3.0, 'dns' => false )); } -$browser = new React\Http\Browser(null, $connector); +$browser = new React\Http\Browser($connector); $browser->get('https://example.com/')->then(function (Psr\Http\Message\ResponseInterface $response) { var_dump($response->getHeaders(), (string) $response->getBody()); diff --git a/examples/11-proxy-raw-http-protocol.php b/examples/11-proxy-raw-http-protocol.php index 03c93cb..4d01844 100644 --- a/examples/11-proxy-raw-http-protocol.php +++ b/examples/11-proxy-raw-http-protocol.php @@ -26,7 +26,7 @@ $proxy = new Clue\React\Socks\Client($url); -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'timeout' => 3.0, 'dns' => false diff --git a/examples/12-optional-proxy-raw-http-protocol.php b/examples/12-optional-proxy-raw-http-protocol.php index f090d67..1673698 100644 --- a/examples/12-optional-proxy-raw-http-protocol.php +++ b/examples/12-optional-proxy-raw-http-protocol.php @@ -26,7 +26,7 @@ if ($url !== false) { $proxy = new Clue\React\Socks\Client($url); - $connector = new React\Socket\Connector(null, array( + $connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'timeout' => 3.0, 'dns' => false diff --git a/examples/13-proxy-raw-https-protocol.php b/examples/13-proxy-raw-https-protocol.php index 8be3046..72b21ee 100644 --- a/examples/13-proxy-raw-https-protocol.php +++ b/examples/13-proxy-raw-https-protocol.php @@ -26,7 +26,7 @@ $proxy = new Clue\React\Socks\Client($url); -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'timeout' => 3.0, 'dns' => false diff --git a/examples/14-optional-proxy-raw-https-protocol.php b/examples/14-optional-proxy-raw-https-protocol.php index 67cbf67..92b42c0 100644 --- a/examples/14-optional-proxy-raw-https-protocol.php +++ b/examples/14-optional-proxy-raw-https-protocol.php @@ -26,7 +26,7 @@ if ($url !== false) { $proxy = new Clue\React\Socks\Client($url); - $connector = new React\Socket\Connector(null, array( + $connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'timeout' => 3.0, 'dns' => false diff --git a/examples/15-proxy-chaining.php b/examples/15-proxy-chaining.php index 4661c49..82eb1f4 100644 --- a/examples/15-proxy-chaining.php +++ b/examples/15-proxy-chaining.php @@ -30,7 +30,7 @@ // please note how the client uses p3 (not p1!), which in turn then uses the complete chain // this creates a TCP/IP connection to p1, which then connects to p2, then to p3, which then connects to the target -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $connector, 'timeout' => 3.0, 'dns' => false diff --git a/examples/16-local-dns.php b/examples/16-local-dns.php index d967dc2..b5a9d48 100644 --- a/examples/16-local-dns.php +++ b/examples/16-local-dns.php @@ -16,7 +16,7 @@ $proxy = new Clue\React\Socks\Client($url); // set up DNS server to use (Google's public DNS) -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'timeout' => 3.0, 'dns' => '8.8.8.8' diff --git a/examples/21-server.php b/examples/21-server.php index c5f4bb5..aa7e7b7 100644 --- a/examples/21-server.php +++ b/examples/21-server.php @@ -11,7 +11,7 @@ $server = new Clue\React\Socks\Server(); // listen on 127.0.0.1:1080 or first argument -$socket = new React\Socket\Server(isset($argv[1]) ? $argv[1] : '127.0.0.1:1080'); +$socket = new React\Socket\SocketServer(isset($argv[1]) ? $argv[1] : '127.0.0.1:1080'); $server->listen($socket); echo 'SOCKS server listening on ' . $socket->getAddress() . PHP_EOL; diff --git a/examples/22-server-with-password.php b/examples/22-server-with-password.php index 2313274..bf9a832 100644 --- a/examples/22-server-with-password.php +++ b/examples/22-server-with-password.php @@ -21,7 +21,7 @@ )); // listen on 127.0.0.1:1080 or first argument -$socket = new React\Socket\Server(isset($argv[1]) ? $argv[1] : '127.0.0.1:1080'); +$socket = new React\Socket\SocketServer(isset($argv[1]) ? $argv[1] : '127.0.0.1:1080'); $server->listen($socket); echo 'SOCKS5 server requiring authentication listening on ' . $socket->getAddress() . PHP_EOL; diff --git a/examples/23-server-blacklist.php b/examples/23-server-blacklist.php index 818b0c9..c97e0bf 100644 --- a/examples/23-server-blacklist.php +++ b/examples/23-server-blacklist.php @@ -29,7 +29,7 @@ $server = new Clue\React\Socks\Server(null, $connector); // listen on 127.0.0.1:1080 or first argument -$socket = new React\Socket\Server(isset($argv[1]) ? $argv[1] : '127.0.0.1:1080'); +$socket = new React\Socket\SocketServer(isset($argv[1]) ? $argv[1] : '127.0.0.1:1080'); $server->listen($socket); echo 'SOCKS server listening on ' . $socket->getAddress() . PHP_EOL; diff --git a/examples/31-server-proxy-chaining.php b/examples/31-server-proxy-chaining.php index 7c3602b..216ffe5 100644 --- a/examples/31-server-proxy-chaining.php +++ b/examples/31-server-proxy-chaining.php @@ -32,7 +32,7 @@ $server = new Clue\React\Socks\Server(null, $connector); // listen on 127.0.0.1:1080 or first argument -$socket = new React\Socket\Server($listen); +$socket = new React\Socket\SocketServer($listen); $server->listen($socket); echo 'SOCKS server listening on ' . $socket->getAddress() . PHP_EOL; diff --git a/examples/32-server-proxy-chaining-from-random-pool.php b/examples/32-server-proxy-chaining-from-random-pool.php index a4138ed..0e65d21 100644 --- a/examples/32-server-proxy-chaining-from-random-pool.php +++ b/examples/32-server-proxy-chaining-from-random-pool.php @@ -35,7 +35,7 @@ $server = new Clue\React\Socks\Server(null, $connector); // listen on 127.0.0.1:1080 or first argument -$socket = new React\Socket\Server($listen); +$socket = new React\Socket\SocketServer($listen); $server->listen($socket); echo 'SOCKS server listening on ' . $socket->getAddress() . PHP_EOL; diff --git a/examples/41-server-secure.php b/examples/41-server-secure.php index b518ec1..4f062fa 100644 --- a/examples/41-server-secure.php +++ b/examples/41-server-secure.php @@ -11,10 +11,12 @@ $server = new Clue\React\Socks\Server(); // listen on tls://127.0.0.1:1080 or first argument -$listen = isset($argv[1]) ? $argv[1] : '127.0.0.1:1080'; -$socket = new React\Socket\Server('tls://' . $listen, null, array('tls' => array( - 'local_cert' => __DIR__ . '/localhost.pem', -))); +$uri = 'tls://' . (isset($argv[1]) ? $argv[1] : '127.0.0.1:1080'); +$socket = new React\Socket\SocketServer($uri, array( + 'tls' => array( + 'local_cert' => __DIR__ . '/localhost.pem', + ) +)); $server->listen($socket); echo 'SOCKS over TLS server listening on ' . str_replace('tls:', 'sockss:', $socket->getAddress()) . PHP_EOL; diff --git a/examples/42-http-secure.php b/examples/42-http-secure.php index ac81126..023c6dd 100644 --- a/examples/42-http-secure.php +++ b/examples/42-http-secure.php @@ -10,22 +10,24 @@ require __DIR__ . '/../vendor/autoload.php'; -$url = isset($argv[1]) ? $argv[1] : '127.0.0.1:1080'; +$url = isset($argv[1]) ? $argv[1] : 'sockss://127.0.0.1:1080'; -$connector = new React\Socket\Connector(null, array('tls' => array( - 'verify_peer' => false, - 'verify_peer_name' => false -))); +$connector = new React\Socket\Connector(array( + 'tls' => array( + 'verify_peer' => false, + 'verify_peer_name' => false + ) +)); $proxy = new Clue\React\Socks\Client($url, $connector); -$connector = new React\Socket\Connector(null, array( +$connector = new React\Socket\Connector(array( 'tcp' => $proxy, 'timeout' => 3.0, 'dns' => false )); -echo 'Demo SOCKS over TLS client connecting to secure SOCKS server ' . $proxy . PHP_EOL; +echo 'Demo SOCKS over TLS client connecting to secure SOCKS server ' . $url . PHP_EOL; $connector->connect('tcp://www.google.com:80')->then(function (React\Socket\ConnectionInterface $connection) { echo 'connected' . PHP_EOL; diff --git a/src/Server.php b/src/Server.php index 00e92a0..2405f3e 100644 --- a/src/Server.php +++ b/src/Server.php @@ -78,7 +78,7 @@ public function __construct(LoopInterface $loop = null, ConnectorInterface $conn } $this->loop = $loop ?: Loop::get(); - $this->connector = $connector ?: new Connector($this->loop); + $this->connector = $connector ?: new Connector(array(), $this->loop); } /** diff --git a/tests/ClientTest.php b/tests/ClientTest.php index d581a94..90451fb 100644 --- a/tests/ClientTest.php +++ b/tests/ClientTest.php @@ -3,14 +3,12 @@ namespace Clue\Tests\React\Socks; use Clue\React\Socks\Client; -use React\Promise\Promise; use Clue\React\Socks\Server; use React\Promise\Deferred; +use React\Promise\Promise; class ClientTest extends TestCase { - private $loop; - private $connector; /** @var Client */ @@ -21,7 +19,6 @@ class ClientTest extends TestCase */ public function setUpMocks() { - $this->loop = \React\EventLoop\Factory::create(); $this->connector = $this->getMockBuilder('React\Socket\ConnectorInterface')->getMock(); $this->client = new Client('127.0.0.1:1080', $this->connector); } diff --git a/tests/FunctionalTest.php b/tests/FunctionalTest.php index 9c38b38..dc8702f 100644 --- a/tests/FunctionalTest.php +++ b/tests/FunctionalTest.php @@ -2,18 +2,19 @@ namespace Clue\Tests\React\Socks; +use Clue\React\Block; use Clue\React\Socks\Client; use Clue\React\Socks\Server; -use Clue\React\Block; -use React\Socket\TimeoutConnector; +use React\EventLoop\Loop; +use React\Socket\Connector; use React\Socket\SecureConnector; +use React\Socket\SocketServer; use React\Socket\TcpConnector; +use React\Socket\TimeoutConnector; use React\Socket\UnixServer; -use React\Socket\Connector; class FunctionalTest extends TestCase { - private $loop; private $connector; private $client; @@ -25,9 +26,7 @@ class FunctionalTest extends TestCase */ public function setUpClientServer() { - $this->loop = \React\EventLoop\Factory::create(); - - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $address = $socket->getAddress(); if (strpos($address, '://') === false) { $address = 'tcp://' . $address; @@ -35,9 +34,9 @@ public function setUpClientServer() $this->port = parse_url($address, PHP_URL_PORT); $this->assertNotEquals(0, $this->port); - $this->server = new Server($this->loop); + $this->server = new Server(); $this->server->listen($socket); - $this->connector = new TcpConnector($this->loop); + $this->connector = new TcpConnector(); $this->client = new Client('127.0.0.1:' . $this->port, $this->connector); } @@ -99,16 +98,20 @@ public function testConnectionSocksOverTls() $this->markTestSkipped('Not supported on HHVM'); } - $socket = new \React\Socket\Server('tls://127.0.0.1:0', $this->loop, array('tls' => array( - 'local_cert' => __DIR__ . '/../examples/localhost.pem', - ))); - $this->server = new Server($this->loop); + $socket = new SocketServer('tls://127.0.0.1:0', array( + 'tls' => array( + 'local_cert' => __DIR__ . '/../examples/localhost.pem', + ) + )); + $this->server = new Server(); $this->server->listen($socket); - $this->connector = new Connector($this->loop, array('tls' => array( - 'verify_peer' => false, - 'verify_peer_name' => false - ))); + $this->connector = new Connector(array( + 'tls' => array( + 'verify_peer' => false, + 'verify_peer_name' => false + ) + )); $this->client = new Client(str_replace('tls:', 'sockss:', $socket->getAddress()), $this->connector); $this->assertResolveStream($this->client->connect('www.google.com:80')); @@ -124,16 +127,20 @@ public function testConnectionSocksOverTlsUsesPeerNameFromSocksUri() $this->markTestSkipped('Not supported on HHVM'); } - $socket = new \React\Socket\Server('tls://127.0.0.1:0', $this->loop, array('tls' => array( - 'local_cert' => __DIR__ . '/../examples/localhost.pem', - ))); - $this->server = new Server($this->loop); + $socket = new SocketServer('tls://127.0.0.1:0',array( + 'tls' => array( + 'local_cert' => __DIR__ . '/../examples/localhost.pem', + ) + )); + $this->server = new Server(); $this->server->listen($socket); - $this->connector = new Connector($this->loop, array('tls' => array( - 'verify_peer' => false, - 'verify_peer_name' => true - ))); + $this->connector = new Connector(array( + 'tls' => array( + 'verify_peer' => false, + 'verify_peer_name' => true + ) + )); $this->client = new Client(str_replace('tls:', 'sockss:', $socket->getAddress()), $this->connector); $this->assertResolveStream($this->client->connect('www.google.com:80')); @@ -147,11 +154,11 @@ public function testConnectionSocksOverUnix() } $path = sys_get_temp_dir() . '/test' . mt_rand(1000, 9999) . '.sock'; - $socket = new UnixServer($path, $this->loop); - $this->server = new Server($this->loop); + $socket = new UnixServer($path); + $this->server = new Server(); $this->server->listen($socket); - $this->connector = new Connector($this->loop); + $this->connector = new Connector(); $this->client = new Client('socks+unix://' . $path, $this->connector); $this->assertResolveStream($this->client->connect('www.google.com:80')); @@ -167,11 +174,11 @@ public function testConnectionSocks5OverUnix() } $path = sys_get_temp_dir() . '/test' . mt_rand(1000, 9999) . '.sock'; - $socket = new UnixServer($path, $this->loop); - $this->server = new Server($this->loop); + $socket = new UnixServer($path); + $this->server = new Server(); $this->server->listen($socket); - $this->connector = new Connector($this->loop); + $this->connector = new Connector(); $this->client = new Client('socks5+unix://' . $path, $this->connector); $this->assertResolveStream($this->client->connect('www.google.com:80')); @@ -187,11 +194,11 @@ public function testConnectionSocksWithAuthenticationOverUnix() } $path = sys_get_temp_dir() . '/test' . mt_rand(1000, 9999) . '.sock'; - $socket = new UnixServer($path, $this->loop); - $this->server = new Server($this->loop, null, array('name' => 'pass')); + $socket = new UnixServer($path); + $this->server = new Server(null, null, array('name' => 'pass')); $this->server->listen($socket); - $this->connector = new Connector($this->loop); + $this->connector = new Connector(); $this->client = new Client('socks+unix://name:pass@' . $path, $this->connector); $this->assertResolveStream($this->client->connect('www.google.com:80')); @@ -202,9 +209,9 @@ public function testConnectionSocksWithAuthenticationOverUnix() /** @group internet */ public function testConnectionAuthenticationFromUri() { - $this->server = new Server($this->loop, null, array('name' => 'pass')); + $this->server = new Server(null, null, array('name' => 'pass')); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -218,7 +225,7 @@ public function testConnectionAuthenticationCallback() { $called = 0; $that = $this; - $this->server = new Server($this->loop, null, function ($name, $pass, $remote) use ($that, &$called) { + $this->server = new Server(null, null, function ($name, $pass, $remote) use ($that, &$called) { ++$called; $that->assertEquals('name', $name); $that->assertEquals('pass', $pass); @@ -227,7 +234,7 @@ public function testConnectionAuthenticationCallback() return true; }); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -241,13 +248,13 @@ public function testConnectionAuthenticationCallback() public function testConnectionAuthenticationCallbackWillNotBeInvokedIfClientsSendsNoAuth() { $called = 0; - $this->server = new Server($this->loop, null, function () use (&$called) { + $this->server = new Server(null, null, function () use (&$called) { ++$called; return true; }); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -260,9 +267,9 @@ public function testConnectionAuthenticationCallbackWillNotBeInvokedIfClientsSen /** @group internet */ public function testConnectionAuthenticationFromUriEncoded() { - $this->server = new Server($this->loop, null, array('name' => 'p@ss:w0rd')); + $this->server = new Server(null, null, array('name' => 'p@ss:w0rd')); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -274,9 +281,9 @@ public function testConnectionAuthenticationFromUriEncoded() /** @group internet */ public function testConnectionAuthenticationFromUriWithOnlyUserAndNoPassword() { - $this->server = new Server($this->loop, null, array('empty' => '')); + $this->server = new Server(null, null, array('empty' => '')); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -288,9 +295,9 @@ public function testConnectionAuthenticationFromUriWithOnlyUserAndNoPassword() /** @group internet */ public function testConnectionAuthenticationEmptyPassword() { - $this->server = new Server($this->loop, null, array('user' => '')); + $this->server = new Server(null, null, array('user' => '')); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -309,9 +316,9 @@ public function testConnectionAuthenticationUnused() public function testConnectionInvalidNoAuthenticationOverLegacySocks4() { - $this->server = new Server($this->loop, null, array('name' => 'pass')); + $this->server = new Server(null, null, array('name' => 'pass')); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -322,9 +329,9 @@ public function testConnectionInvalidNoAuthenticationOverLegacySocks4() public function testConnectionInvalidNoAuthentication() { - $this->server = new Server($this->loop, null, array('name' => 'pass')); + $this->server = new Server(null, null, array('name' => 'pass')); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -335,9 +342,9 @@ public function testConnectionInvalidNoAuthentication() public function testConnectionInvalidAuthenticationMismatch() { - $this->server = new Server($this->loop, null, array('name' => 'pass')); + $this->server = new Server(null, null, array('name' => 'pass')); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -348,11 +355,11 @@ public function testConnectionInvalidAuthenticationMismatch() public function testConnectionInvalidAuthenticatorReturnsFalse() { - $this->server = new Server($this->loop, null, function () { + $this->server = new Server(null, null, function () { return false; }); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -363,11 +370,11 @@ public function testConnectionInvalidAuthenticatorReturnsFalse() public function testConnectionInvalidAuthenticatorReturnsPromiseFulfilledWithFalse() { - $this->server = new Server($this->loop, null, function () { + $this->server = new Server(null, null, function () { return \React\Promise\resolve(false); }); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -378,11 +385,11 @@ public function testConnectionInvalidAuthenticatorReturnsPromiseFulfilledWithFal public function testConnectionInvalidAuthenticatorReturnsPromiseRejected() { - $this->server = new Server($this->loop, null, function () { + $this->server = new Server(null, null, function () { return \React\Promise\reject(); }); - $socket = new \React\Socket\Server(0, $this->loop); + $socket = new SocketServer('127.0.0.1:0'); $this->server->listen($socket); $this->port = parse_url($socket->getAddress(), PHP_URL_PORT); @@ -416,7 +423,7 @@ public function testConnectorCancelConnection() public function testConnectorInvalidUnboundPortTimeout() { // time out the connection attempt in 0.1s (as expected) - $tcp = new TimeoutConnector($this->client, 0.1, $this->loop); + $tcp = new TimeoutConnector($this->client, 0.1); $this->assertRejectPromise($tcp->connect('www.google.com:8080')); } @@ -428,7 +435,7 @@ public function testSecureConnectorOkay() $this->markTestSkipped('Not supported on HHVM'); } - $ssl = new SecureConnector($this->client, $this->loop); + $ssl = new SecureConnector($this->client); $this->assertResolveStream($ssl->connect('www.google.com:443')); } @@ -440,7 +447,7 @@ public function testSecureConnectorToBadSslWithVerifyFails() $this->markTestSkipped('Required function does not exist in your environment (HHVM?)'); } - $ssl = new SecureConnector($this->client, $this->loop, array('verify_peer' => true)); + $ssl = new SecureConnector($this->client, null, array('verify_peer' => true)); $this->assertRejectPromise($ssl->connect('self-signed.badssl.com:443')); } @@ -452,7 +459,7 @@ public function testSecureConnectorToBadSslWithoutVerifyWorks() $this->markTestSkipped('Not supported on HHVM'); } - $ssl = new SecureConnector($this->client, $this->loop, array('verify_peer' => false)); + $ssl = new SecureConnector($this->client, null, array('verify_peer' => false)); $this->assertResolveStream($ssl->connect('self-signed.badssl.com:443')); } @@ -464,7 +471,7 @@ public function testSecureConnectorInvalidPlaintextIsNotSsl() $this->markTestSkipped('Required function does not exist in your environment (HHVM?)'); } - $ssl = new SecureConnector($this->client, $this->loop); + $ssl = new SecureConnector($this->client); $this->assertRejectPromise($ssl->connect('www.google.com:80')); } @@ -472,10 +479,10 @@ public function testSecureConnectorInvalidPlaintextIsNotSsl() /** @group internet */ public function testSecureConnectorInvalidUnboundPortTimeout() { - $ssl = new SecureConnector($this->client, $this->loop); + $ssl = new SecureConnector($this->client); // time out the connection attempt in 0.1s (as expected) - $ssl = new TimeoutConnector($ssl, 0.1, $this->loop); + $ssl = new TimeoutConnector($ssl, 0.1); $this->assertRejectPromise($ssl->connect('www.google.com:8080')); } @@ -488,7 +495,7 @@ private function assertResolveStream($promise) $stream->close(); }); - Block\await($promise, $this->loop, 2.0); + Block\await($promise, Loop::get(), 2.0); } private function assertRejectPromise($promise, $message = null, $code = null) @@ -507,6 +514,6 @@ private function assertRejectPromise($promise, $message = null, $code = null) $this->setExpectedException('Exception', $message, $code); } - Block\await($promise, $this->loop, 2.0); + Block\await($promise, Loop::get(), 2.0); } } diff --git a/tests/TestCase.php b/tests/TestCase.php index 984c467..76e77bb 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -96,5 +96,4 @@ public function setExpectedException($exception, $message = '', $code = 0) parent::setExpectedException($exception, $message, $code); } } - }