22
33namespace spec \Http \Client \Plugin ;
44
5- use Http \Promise \FulfilledPromise ;
65use Http \Message \Cookie ;
76use Http \Message \CookieJar ;
7+ use Http \Promise \FulfilledPromise ;
88use Http \Promise \Promise ;
9+ use PhpSpec \ObjectBehavior ;
10+ use Prophecy \Argument ;
911use Psr \Http \Message \RequestInterface ;
1012use Psr \Http \Message \ResponseInterface ;
1113use Psr \Http \Message \UriInterface ;
12- use PhpSpec \ObjectBehavior ;
13- use Prophecy \Argument ;
1414
1515class CookiePluginSpec extends ObjectBehavior
1616{
@@ -146,7 +146,7 @@ function it_saves_cookie(RequestInterface $request, ResponseInterface $response,
146146
147147 $ response ->hasHeader ('Set-Cookie ' )->willReturn (true );
148148 $ response ->getHeader ('Set-Cookie ' )->willReturn ([
149- 'cookie=value ' ,
149+ 'cookie=value; expires=Tuesday, 31-Mar-99 07:42:12 GMT; Max-Age=60; path=/; domain=test.com; secure; HttpOnly '
150150 ]);
151151
152152 $ request ->getUri ()->willReturn ($ uri );
@@ -157,4 +157,24 @@ function it_saves_cookie(RequestInterface $request, ResponseInterface $response,
157157 $ promise ->shouldHaveType ('Http\Promise\Promise ' );
158158 $ promise ->wait ()->shouldReturnAnInstanceOf ('Psr\Http\Message\ResponseInterface ' );
159159 }
160+
161+ function it_throws_exception_on_invalid_expires_date (RequestInterface $ request , ResponseInterface $ response , UriInterface $ uri )
162+ {
163+ $ next = function () use ($ response ) {
164+ return new FulfilledPromise ($ response ->getWrappedObject ());
165+ };
166+
167+ $ response ->hasHeader ('Set-Cookie ' )->willReturn (true );
168+ $ response ->getHeader ('Set-Cookie ' )->willReturn ([
169+ 'cookie=value; expires=i-am-an-invalid-date; '
170+ ]);
171+
172+ $ request ->getUri ()->willReturn ($ uri );
173+ $ uri ->getHost ()->willReturn ('test.com ' );
174+ $ uri ->getPath ()->willReturn ('/ ' );
175+
176+ $ promise = $ this ->handleRequest ($ request , $ next , function () {});
177+ $ promise ->shouldReturnAnInstanceOf ('Http\Promise\RejectedPromise ' );
178+ $ promise ->shouldThrow ('Http\Client\Exception\TransferException ' )->duringWait ();
179+ }
160180}
0 commit comments