Skip to content

Commit

Permalink
Merge pull request #501 from clue-labs/unhandled-rejections
Browse files Browse the repository at this point in the history
Update test suite to avoid unhandled promise rejections
  • Loading branch information
WyriHaximus committed Jul 7, 2023
2 parents bb3154d + 94222ad commit 24dd698
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 9 deletions.
2 changes: 2 additions & 0 deletions tests/Io/TransactionTest.php
Expand Up @@ -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()
Expand Down
45 changes: 36 additions & 9 deletions tests/Middleware/LimitConcurrentRequestsMiddlewareTest.php
Expand Up @@ -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);
Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -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));
Expand All @@ -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();
});
Expand Down Expand Up @@ -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;
Expand All @@ -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',
Expand All @@ -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',
Expand All @@ -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',
Expand All @@ -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',
Expand Down

0 comments on commit 24dd698

Please sign in to comment.