This repository was archived by the owner on Jan 30, 2020. It is now read-only.
File tree 2 files changed +35
-2
lines changed
2 files changed +35
-2
lines changed Original file line number Diff line number Diff line change 11
11
use Traversable ;
12
12
use Zend \Http \Client \Adapter \Curl ;
13
13
use Zend \Http \Client \Adapter \Socket ;
14
+ use Zend \Http \Header \SetCookie ;
14
15
use Zend \Stdlib ;
15
16
use Zend \Stdlib \ArrayUtils ;
16
17
use Zend \Stdlib \ErrorHandler ;
@@ -603,7 +604,7 @@ public function addCookie(
603
604
/**
604
605
* Set an array of cookies
605
606
*
606
- * @param array $cookies
607
+ * @param array|SetCookie[] $cookies Cookies as name=>value pairs or instances of SetCookie.
607
608
* @throws Exception\InvalidArgumentException
608
609
* @return Client
609
610
*/
@@ -612,7 +613,11 @@ public function setCookies($cookies)
612
613
if (is_array ($ cookies )) {
613
614
$ this ->clearCookies ();
614
615
foreach ($ cookies as $ name => $ value ) {
615
- $ this ->addCookie ($ name , $ value );
616
+ if ($ value instanceof SetCookie) {
617
+ $ this ->addCookie ($ value );
618
+ } else {
619
+ $ this ->addCookie ($ name , $ value );
620
+ }
616
621
}
617
622
} else {
618
623
throw new Exception \InvalidArgumentException ('Invalid cookies passed as parameter, it must be an array ' );
Original file line number Diff line number Diff line change @@ -579,4 +579,32 @@ public function testUriPortIsNotSetWhenUriIsRelative()
579
579
$ client ->send ();
580
580
$ this ->assertNull ($ client ->getUri ()->getPort ());
581
581
}
582
+
583
+ public function cookies ()
584
+ {
585
+ yield 'name-value ' => [['cookie-name ' => 'cookie-value ' ]];
586
+ yield 'SetCookie ' => [[new SetCookie ('cookie-name ' , 'cookie-value ' )]];
587
+ }
588
+
589
+ /**
590
+ * @dataProvider cookies
591
+ */
592
+ public function testSetCookies (array $ cookies )
593
+ {
594
+ $ client = new Client ();
595
+
596
+ $ client ->setCookies ($ cookies );
597
+
598
+ self ::assertCount (1 , $ client ->getCookies ());
599
+ self ::assertContainsOnlyInstancesOf (SetCookie::class, $ client ->getCookies ());
600
+ }
601
+
602
+ public function testSetCookieAcceptOnlyArray ()
603
+ {
604
+ $ client = new Client ();
605
+
606
+ $ this ->expectException (HttpException \InvalidArgumentException::class);
607
+ $ this ->expectExceptionMessage ('Invalid cookies passed as parameter, it must be an array ' );
608
+ $ client ->setCookies (new SetCookie ('name ' , 'value ' ));
609
+ }
582
610
}
You can’t perform that action at this time.
0 commit comments