2
2
3
3
namespace spec \Http \Client \Plugin ;
4
4
5
- use Http \Promise \FulfilledPromise ;
6
5
use Http \Message \Cookie ;
7
6
use Http \Message \CookieJar ;
7
+ use Http \Promise \FulfilledPromise ;
8
8
use Http \Promise \Promise ;
9
+ use PhpSpec \ObjectBehavior ;
10
+ use Prophecy \Argument ;
9
11
use Psr \Http \Message \RequestInterface ;
10
12
use Psr \Http \Message \ResponseInterface ;
11
13
use Psr \Http \Message \UriInterface ;
12
- use PhpSpec \ObjectBehavior ;
13
- use Prophecy \Argument ;
14
14
15
15
class CookiePluginSpec extends ObjectBehavior
16
16
{
@@ -146,7 +146,7 @@ function it_saves_cookie(RequestInterface $request, ResponseInterface $response,
146
146
147
147
$ response ->hasHeader ('Set-Cookie ' )->willReturn (true );
148
148
$ 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 '
150
150
]);
151
151
152
152
$ request ->getUri ()->willReturn ($ uri );
@@ -157,4 +157,24 @@ function it_saves_cookie(RequestInterface $request, ResponseInterface $response,
157
157
$ promise ->shouldHaveType ('Http\Promise\Promise ' );
158
158
$ promise ->wait ()->shouldReturnAnInstanceOf ('Psr\Http\Message\ResponseInterface ' );
159
159
}
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
+ }
160
180
}
0 commit comments