1414use RingCentral \Psr7 \Response ;
1515use Psr \Http \Message \RequestInterface ;
1616use React \Promise \CancellablePromiseInterface ;
17+ use React \Promise \PromiseInterface ;
1718
1819final class MiddlewareRunnerTest extends TestCase
1920{
2021 /**
2122 * @expectedException RuntimeException
2223 * @expectedExceptionMessage No middleware to run
2324 */
24- public function testDefaultResponse ()
25+ public function testEmptyMiddlewareStackThrowsException ()
2526 {
2627 $ request = new ServerRequest ('GET ' , 'https://example.com/ ' );
2728 $ middlewares = array ();
2829 $ middlewareStack = new MiddlewareRunner ($ middlewares );
2930
30- Block \await ( $ middlewareStack ($ request), Factory:: create () );
31+ $ middlewareStack ($ request );
3132 }
3233
33- public function testReturnsRejectedPromiseIfHandlerThrowsException ()
34+ /**
35+ * @expectedException RuntimeException
36+ * @expectedExceptionMessage hello
37+ */
38+ public function testThrowsIfHandlerThrowsException ()
3439 {
3540 $ middleware = new MiddlewareRunner (array (
3641 function (ServerRequestInterface $ request ) {
@@ -40,15 +45,15 @@ function (ServerRequestInterface $request) {
4045
4146 $ request = new ServerRequest ('GET ' , 'http://example.com/ ' );
4247
43- $ promise = $ middleware ($ request );
44-
45- $ promise ->then (null , $ this ->expectCallableOnceWith ($ this ->isInstanceOf ('RuntimeException ' )));
48+ $ middleware ($ request );
4649 }
4750
4851 /**
4952 * @requires PHP 7
53+ * @expectedException Throwable
54+ * @expectedExceptionMessage hello
5055 */
51- public function testReturnsRejectedPromiseIfHandlerThrowsThrowable ()
56+ public function testThrowsIfHandlerThrowsThrowable ()
5257 {
5358 $ middleware = new MiddlewareRunner (array (
5459 function (ServerRequestInterface $ request ) {
@@ -58,9 +63,7 @@ function (ServerRequestInterface $request) {
5863
5964 $ request = new ServerRequest ('GET ' , 'http://example.com/ ' );
6065
61- $ promise = $ middleware ($ request );
62-
63- $ promise ->then (null , $ this ->expectCallableOnceWith ($ this ->isInstanceOf ('Throwable ' )));
66+ $ middleware ($ request );
6467 }
6568
6669 public function provideProcessStackMiddlewares ()
@@ -126,9 +129,14 @@ public function testProcessStack(array $middlewares, $expectedCallCount)
126129 $ request = new ServerRequest ('GET ' , 'https://example.com/ ' );
127130 $ middlewareStack = new MiddlewareRunner ($ middlewares );
128131
129- /** @var ResponseInterface $result */
130- $ result = Block \await ($ middlewareStack ($ request ), Factory::create ());
131- $ this ->assertSame (200 , $ result ->getStatusCode ());
132+ $ response = $ middlewareStack ($ request );
133+
134+ $ this ->assertTrue ($ response instanceof PromiseInterface);
135+ $ response = Block \await ($ response , Factory::create ());
136+
137+ $ this ->assertTrue ($ response instanceof ResponseInterface);
138+ $ this ->assertSame (200 , $ response ->getStatusCode ());
139+
132140 foreach ($ middlewares as $ middleware ) {
133141 if (!($ middleware instanceof ProcessStack)) {
134142 continue ;
@@ -163,7 +171,11 @@ public function testNextCanBeRunMoreThanOnceWithoutCorruptingTheMiddlewareStack(
163171 $ retryCalled = 0 ;
164172 $ error = null ;
165173 $ retry = function ($ request , $ next ) use (&$ error , &$ retryCalled ) {
166- return $ next ($ request )->then (null , function ($ et ) use (&$ error , $ request , $ next , &$ retryCalled ) {
174+ $ promise = new \React \Promise \Promise (function ($ resolve ) use ($ request , $ next ) {
175+ $ resolve ($ next ($ request ));
176+ });
177+
178+ return $ promise ->then (null , function ($ et ) use (&$ error , $ request , $ next , &$ retryCalled ) {
167179 $ retryCalled ++;
168180 $ error = $ et ;
169181 // the $next failed. discard $error and retry once again:
@@ -214,7 +226,7 @@ function (ServerRequestInterface $request, $next) use (&$receivedRequests) {
214226 },
215227 function (ServerRequestInterface $ request , $ next ) use (&$ receivedRequests ) {
216228 $ receivedRequests [] = 'middleware3: ' . $ request ->getUri ();
217- return $ next ( $ request );
229+ return new \ React \ Promise \ Promise ( function () { } );
218230 }
219231 ));
220232
@@ -372,9 +384,9 @@ public function testUncommonMiddlewareArrayFormats($middlewareFactory, $expected
372384 $ request = new ServerRequest ('GET ' , 'https://example.com/ ' );
373385 $ middlewareStack = new MiddlewareRunner ($ middlewareFactory ());
374386
375- /** @var ResponseInterface $response */
376- $ response = Block \await ($ middlewareStack ($ request ), Factory::create ());
387+ $ response = $ middlewareStack ($ request );
377388
389+ $ this ->assertTrue ($ response instanceof ResponseInterface);
378390 $ this ->assertSame ($ expectedSequence , (string ) $ response ->getBody ());
379391 }
380392
@@ -397,7 +409,7 @@ function (RequestInterface $request) use (&$called) {
397409
398410 $ request = new ServerRequest ('GET ' , 'http://example.com/ ' );
399411
400- $ response = Block \await ( $ middleware ($ request), Factory:: create () );
412+ $ response = $ middleware ($ request );
401413
402414 $ this ->assertTrue ($ response instanceof ResponseInterface);
403415 $ this ->assertEquals (2 , $ called );
0 commit comments