Skip to content

Commit dca0773

Browse files
authored
Merge pull request #246 from jsor-labs/middlewarerunner-corruption-test-reject
Extend test to ensure next handler can be run more than once when handler rejects
2 parents 001f0a9 + 75f1a5a commit dca0773

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

tests/MiddlewareRunnerTest.php

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use React\EventLoop\Factory;
88
use React\Http\MiddlewareRunner;
99
use React\Http\ServerRequest;
10+
use React\Promise;
1011
use React\Tests\Http\Middleware\ProcessStack;
1112
use RingCentral\Psr7\Response;
1213
use Clue\React\Block;
@@ -93,7 +94,26 @@ public function testProcessStack(array $middlewares, $expectedCallCount)
9394
}
9495
}
9596

96-
public function testNextCanBeRunMoreThanOnceWithoutCorruptingTheMiddlewareStack()
97+
public function provideErrorHandler()
98+
{
99+
return array(
100+
array(
101+
function (\Exception $e) {
102+
throw $e;
103+
}
104+
),
105+
array(
106+
function (\Exception $e) {
107+
return Promise\reject($e);
108+
}
109+
)
110+
);
111+
}
112+
113+
/**
114+
* @dataProvider provideErrorHandler
115+
*/
116+
public function testNextCanBeRunMoreThanOnceWithoutCorruptingTheMiddlewareStack($errorHandler)
97117
{
98118
$exception = new \RuntimeException('exception');
99119
$retryCalled = 0;
@@ -110,15 +130,15 @@ public function testNextCanBeRunMoreThanOnceWithoutCorruptingTheMiddlewareStack(
110130
$response = new Response();
111131
$called = 0;
112132
$runner = new MiddlewareRunner(array(
113-
$retry,
114-
function () use (&$called, $response, $exception) {
115-
$called++;
116-
if ($called === 1) {
117-
throw $exception;
133+
$retry,
134+
function () use ($errorHandler, &$called, $response, $exception) {
135+
$called++;
136+
if ($called === 1) {
137+
return $errorHandler($exception);
138+
}
139+
140+
return $response;
118141
}
119-
120-
return $response;
121-
}
122142
));
123143

124144
$request = new ServerRequest('GET', 'https://example.com/');

0 commit comments

Comments
 (0)