This repository was archived by the owner on Jan 30, 2020. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +35
-2
lines changed Expand file tree Collapse file tree 2 files changed +35
-2
lines changed Original file line number Diff line number Diff line change 1111use Traversable ;
1212use Zend \Http \Client \Adapter \Curl ;
1313use Zend \Http \Client \Adapter \Socket ;
14+ use Zend \Http \Header \SetCookie ;
1415use Zend \Stdlib ;
1516use Zend \Stdlib \ArrayUtils ;
1617use Zend \Stdlib \ErrorHandler ;
@@ -603,7 +604,7 @@ public function addCookie(
603604 /**
604605 * Set an array of cookies
605606 *
606- * @param array $cookies
607+ * @param array|SetCookie[] $cookies Cookies as name=>value pairs or instances of SetCookie.
607608 * @throws Exception\InvalidArgumentException
608609 * @return Client
609610 */
@@ -612,7 +613,11 @@ public function setCookies($cookies)
612613 if (is_array ($ cookies )) {
613614 $ this ->clearCookies ();
614615 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+ }
616621 }
617622 } else {
618623 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()
579579 $ client ->send ();
580580 $ this ->assertNull ($ client ->getUri ()->getPort ());
581581 }
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+ }
582610}
You can’t perform that action at this time.
0 commit comments