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 +37
-2
lines changed
Expand file tree Collapse file tree 2 files changed +37
-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,34 @@ 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+ * @param string|array $cookies
593+ */
594+ public function testSetCookies (array $ cookies )
595+ {
596+ $ client = new Client ();
597+
598+ $ client ->setCookies ($ cookies );
599+
600+ self ::assertCount (1 , $ client ->getCookies ());
601+ self ::assertContainsOnlyInstancesOf (SetCookie::class, $ client ->getCookies ());
602+ }
603+
604+ public function testSetCookieAcceptOnlyArray ()
605+ {
606+ $ client = new Client ();
607+
608+ $ this ->expectException (HttpException \InvalidArgumentException::class);
609+ $ this ->expectExceptionMessage ('Invalid cookies passed as parameter, it must be an array ' );
610+ $ client ->setCookies (new SetCookie ('name ' , 'value ' ));
611+ }
582612}
You can’t perform that action at this time.
0 commit comments