@@ -68,6 +68,54 @@ function (ServerRequestInterface $request) use (&$exposedRequest) {
6868 $ this ->assertSame ($ body , $ exposedRequest ->getBody ()->getContents ());
6969 }
7070
71+ public function testEmptyStreamingResolvesImmediatelyWithEmptyBufferedBody ()
72+ {
73+ $ stream = new ThroughStream ();
74+ $ serverRequest = new ServerRequest (
75+ 'GET ' ,
76+ 'https://example.com/ ' ,
77+ array (),
78+ $ body = new HttpBodyStream ($ stream , 0 )
79+ );
80+
81+ $ exposedRequest = null ;
82+ $ buffer = new RequestBodyBufferMiddleware ();
83+ $ buffer (
84+ $ serverRequest ,
85+ function (ServerRequestInterface $ request ) use (&$ exposedRequest ) {
86+ $ exposedRequest = $ request ;
87+ }
88+ );
89+
90+ $ this ->assertSame (0 , $ exposedRequest ->getBody ()->getSize ());
91+ $ this ->assertSame ('' , $ exposedRequest ->getBody ()->getContents ());
92+ $ this ->assertNotSame ($ body , $ exposedRequest ->getBody ());
93+ }
94+
95+ public function testEmptyBufferedResolvesImmediatelyWithSameBody ()
96+ {
97+ $ serverRequest = new ServerRequest (
98+ 'GET ' ,
99+ 'https://example.com/ ' ,
100+ array (),
101+ ''
102+ );
103+ $ body = $ serverRequest ->getBody ();
104+
105+ $ exposedRequest = null ;
106+ $ buffer = new RequestBodyBufferMiddleware ();
107+ $ buffer (
108+ $ serverRequest ,
109+ function (ServerRequestInterface $ request ) use (&$ exposedRequest ) {
110+ $ exposedRequest = $ request ;
111+ }
112+ );
113+
114+ $ this ->assertSame (0 , $ exposedRequest ->getBody ()->getSize ());
115+ $ this ->assertSame ('' , $ exposedRequest ->getBody ()->getContents ());
116+ $ this ->assertSame ($ body , $ exposedRequest ->getBody ());
117+ }
118+
71119 public function testKnownExcessiveSizedBodyIsDisgardedTheRequestIsPassedDownToTheNextMiddleware ()
72120 {
73121 $ loop = Factory::create ();
0 commit comments