55namespace Yiisoft \ErrorHandler \Tests \Middleware ;
66
77use DomainException ;
8+ use HttpSoft \Message \Response ;
89use HttpSoft \Message \ResponseFactory ;
10+ use HttpSoft \Message \ResponseTrait ;
911use HttpSoft \Message \ServerRequestFactory ;
1012use InvalidArgumentException ;
13+ use LogicException ;
1114use PHPUnit \Framework \TestCase ;
1215use Psr \Http \Message \ResponseFactoryInterface ;
1316use Psr \Http \Message \ResponseInterface ;
1417use Psr \Http \Message \ServerRequestInterface ;
18+ use Psr \Http \Message \StreamInterface ;
1519use Psr \Http \Server \RequestHandlerInterface ;
1620use Yiisoft \ErrorHandler \Middleware \ExceptionResponder ;
1721use Yiisoft \Http \Method ;
@@ -61,6 +65,45 @@ public function testAnotherException(): void
6165 $ this ->process ($ middleware );
6266 }
6367
68+ public function testCheckResponseBody (): void
69+ {
70+ $ middleware = $ this ->createMiddleware (checkResponseBody: true );
71+ $ request = (new ServerRequestFactory ())->createServerRequest (Method::GET , 'http://example.com ' );
72+ $ handler = new class () implements RequestHandlerInterface {
73+ public function handle (ServerRequestInterface $ request ): ResponseInterface
74+ {
75+ return new class () implements ResponseInterface {
76+ use ResponseTrait;
77+
78+ public function getBody (): StreamInterface
79+ {
80+ throw new LogicException ('test ' );
81+ }
82+ };
83+ }
84+ };
85+
86+ $ this ->expectException (LogicException::class);
87+ $ this ->expectExceptionMessage ('test ' );
88+ $ middleware ->process ($ request , $ handler );
89+ }
90+
91+ public function testSuccess (): void
92+ {
93+ $ middleware = $ this ->createMiddleware (checkResponseBody: true );
94+ $ request = (new ServerRequestFactory ())->createServerRequest (Method::GET , 'http://example.com ' );
95+ $ handler = new class () implements RequestHandlerInterface {
96+ public function handle (ServerRequestInterface $ request ): ResponseInterface
97+ {
98+ return new Response ();
99+ }
100+ };
101+
102+ $ response = $ middleware ->process ($ request , $ handler );
103+
104+ $ this ->assertSame (200 , $ response ->getStatusCode ());
105+ }
106+
64107 private function process (ExceptionResponder $ middleware ): ResponseInterface
65108 {
66109 return $ middleware ->process (
@@ -74,8 +117,10 @@ public function handle(ServerRequestInterface $request): ResponseInterface
74117 );
75118 }
76119
77- private function createMiddleware (array $ exceptionMap ): ExceptionResponder
78- {
120+ private function createMiddleware (
121+ array $ exceptionMap = [],
122+ bool $ checkResponseBody = false ,
123+ ): ExceptionResponder {
79124 return new ExceptionResponder (
80125 $ exceptionMap ,
81126 new ResponseFactory (),
@@ -84,6 +129,7 @@ private function createMiddleware(array $exceptionMap): ExceptionResponder
84129 ResponseFactoryInterface::class => new ResponseFactory (),
85130 ]),
86131 ),
132+ $ checkResponseBody ,
87133 );
88134 }
89135}
0 commit comments