From 94222ad193ac03265da34124e5681f03e73558c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20L=C3=BCck?= Date: Thu, 29 Jun 2023 00:45:47 +0200 Subject: [PATCH] Update test suite to avoid unhandled promise rejections --- tests/Io/TransactionTest.php | 2 + .../LimitConcurrentRequestsMiddlewareTest.php | 45 +++++++++++++++---- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/tests/Io/TransactionTest.php b/tests/Io/TransactionTest.php index 140c53e0..284d059f 100644 --- a/tests/Io/TransactionTest.php +++ b/tests/Io/TransactionTest.php @@ -321,6 +321,8 @@ public function testTimeoutExplicitOptionWillNotStartTimeoutTimerWhenStreamingRe $stream->close(); $this->assertInstanceOf('React\Promise\PromiseInterface', $promise); + + $promise->then(null, $this->expectCallableOnce()); // avoid reporting unhandled rejection } public function testTimeoutExplicitOptionWillRejectWhenTimerFiresAfterStreamingRequestBodyCloses() diff --git a/tests/Middleware/LimitConcurrentRequestsMiddlewareTest.php b/tests/Middleware/LimitConcurrentRequestsMiddlewareTest.php index 6c63a94f..faf27cb6 100644 --- a/tests/Middleware/LimitConcurrentRequestsMiddlewareTest.php +++ b/tests/Middleware/LimitConcurrentRequestsMiddlewareTest.php @@ -64,7 +64,10 @@ public function testLimitOneRequestConcurrently() $this->assertFalse($calledB); $this->assertFalse($calledC); - $limitHandlers($requestB, $nextB); + $promise = $limitHandlers($requestB, $nextB); + + assert($promise instanceof PromiseInterface); + $promise->then(null, $this->expectCallableOnce()); // avoid reporting unhandled rejection $this->assertTrue($calledA); $this->assertFalse($calledB); @@ -188,10 +191,13 @@ public function testStreamDoesPauseAndThenResumeWhenDequeued() $limitHandlers = new LimitConcurrentRequestsMiddleware(1); $deferred = new Deferred(); - $limitHandlers(new ServerRequest('GET', 'https://example.com'), function () use ($deferred) { + $promise = $limitHandlers(new ServerRequest('GET', 'https://example.com'), function () use ($deferred) { return $deferred->promise(); }); + assert($promise instanceof PromiseInterface); + $promise->then(null, $this->expectCallableOnce()); // avoid reporting unhandled rejection + $limitHandlers(new ServerRequest('GET', 'https://example.com/', array(), $body), function () {}); $deferred->reject(new \RuntimeException()); @@ -283,10 +289,13 @@ public function testReceivesNextRequestAfterPreviousHandlerIsSettled() $deferred = new Deferred(); $middleware = new LimitConcurrentRequestsMiddleware(1); - $middleware($request, function () use ($deferred) { + $promise = $middleware($request, function () use ($deferred) { return $deferred->promise(); }); + assert($promise instanceof PromiseInterface); + $promise->then(null, $this->expectCallableOnce()); // avoid reporting unhandled rejection + $deferred->reject(new \RuntimeException()); $middleware($request, $this->expectCallableOnceWith($request)); @@ -303,10 +312,13 @@ public function testReceivesNextRequestWhichThrowsAfterPreviousHandlerIsSettled( $deferred = new Deferred(); $middleware = new LimitConcurrentRequestsMiddleware(1); - $middleware($request, function () use ($deferred) { + $promise = $middleware($request, function () use ($deferred) { return $deferred->promise(); }); + assert($promise instanceof PromiseInterface); + $promise->then(null, $this->expectCallableOnce()); // avoid reporting unhandled rejection + $second = $middleware($request, function () { throw new \RuntimeException(); }); @@ -443,10 +455,13 @@ public function testReceivesStreamingBodyChangesInstanceWithCustomBodyButSameDat $middleware = new LimitConcurrentRequestsMiddleware(1); $deferred = new Deferred(); - $middleware(new ServerRequest('GET', 'https://example.com/'), function () use ($deferred) { + $promise = $middleware(new ServerRequest('GET', 'https://example.com/'), function () use ($deferred) { return $deferred->promise(); }); + assert($promise instanceof PromiseInterface); + $promise->then(null, $this->expectCallableOnce()); // avoid reporting unhandled rejection + $req = null; $middleware($request, function (ServerRequestInterface $request) use (&$req) { $req = $request; @@ -471,10 +486,13 @@ public function testReceivesNextStreamingBodyWithBufferedDataAfterPreviousHandle { $deferred = new Deferred(); $middleware = new LimitConcurrentRequestsMiddleware(1); - $middleware(new ServerRequest('GET', 'http://example.com/'), function () use ($deferred) { + $promise = $middleware(new ServerRequest('GET', 'http://example.com/'), function () use ($deferred) { return $deferred->promise(); }); + assert($promise instanceof PromiseInterface); + $promise->then(null, $this->expectCallableOnce()); // avoid reporting unhandled rejection + $stream = new ThroughStream(); $request = new ServerRequest( 'POST', @@ -498,10 +516,13 @@ public function testReceivesNextStreamingBodyAndDoesNotEmitDataIfExplicitlyClose { $deferred = new Deferred(); $middleware = new LimitConcurrentRequestsMiddleware(1); - $middleware(new ServerRequest('GET', 'http://example.com/'), function () use ($deferred) { + $promise = $middleware(new ServerRequest('GET', 'http://example.com/'), function () use ($deferred) { return $deferred->promise(); }); + assert($promise instanceof PromiseInterface); + $promise->then(null, $this->expectCallableOnce()); // avoid reporting unhandled rejection + $stream = new ThroughStream(); $request = new ServerRequest( 'POST', @@ -526,10 +547,13 @@ public function testReceivesNextStreamingBodyAndDoesNotEmitDataIfExplicitlyPause { $deferred = new Deferred(); $middleware = new LimitConcurrentRequestsMiddleware(1); - $middleware(new ServerRequest('GET', 'http://example.com/'), function () use ($deferred) { + $promise = $middleware(new ServerRequest('GET', 'http://example.com/'), function () use ($deferred) { return $deferred->promise(); }); + assert($promise instanceof PromiseInterface); + $promise->then(null, $this->expectCallableOnce()); // avoid reporting unhandled rejection + $stream = new ThroughStream(); $request = new ServerRequest( 'POST', @@ -554,10 +578,13 @@ public function testReceivesNextStreamingBodyAndDoesEmitDataImmediatelyIfExplici { $deferred = new Deferred(); $middleware = new LimitConcurrentRequestsMiddleware(1); - $middleware(new ServerRequest('GET', 'http://example.com/'), function () use ($deferred) { + $promise = $middleware(new ServerRequest('GET', 'http://example.com/'), function () use ($deferred) { return $deferred->promise(); }); + assert($promise instanceof PromiseInterface); + $promise->then(null, $this->expectCallableOnce()); // avoid reporting unhandled rejection + $stream = new ThroughStream(); $request = new ServerRequest( 'POST',