From 53b0df09ab69530ae80c677377af4cba4eec3d31 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Thu, 2 Jul 2015 12:40:35 -0400 Subject: [PATCH] Add cookies and improve headers in FauxRequest For testing, it can be useful for a FauxRequest to actually contain cookies. And for convenience, it's useful to allow setting headers by passing an array rather than by making multiple calls to ->setHeader(). Change-Id: I3b84246e954aae594490927d2b0a57336af2e3a5 --- includes/WebRequest.php | 45 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/includes/WebRequest.php b/includes/WebRequest.php index c99e4846db..e098fea7f0 100644 --- a/includes/WebRequest.php +++ b/includes/WebRequest.php @@ -1297,6 +1297,7 @@ class FauxRequest extends WebRequest { private $wasPosted = false; private $session = array(); private $requestUrl; + protected $cookies = array(); /** * @param array $data Array of *non*-urlencoded key => value pairs, the @@ -1371,7 +1372,36 @@ class FauxRequest extends WebRequest { } public function getCookie( $key, $prefix = null, $default = null ) { - return $default; + if ( $prefix === null ) { + global $wgCookiePrefix; + $prefix = $wgCookiePrefix; + } + $name = $prefix . $key; + return isset( $this->cookies[$name] ) ? $this->cookies[$name] : $default; + } + + /** + * @param string $name Unprefixed name of the cookie to set + * @param string|null $value Value of the cookie to set + * @param string|null $prefix Cookie prefix. Defaults to $wgCookiePrefix + */ + public function setCookie( $key, $value, $prefix = null ) { + $this->setCookies( array( $key => $value ), $prefix ); + } + + /** + * @param array $cookies + * @param string|null $prefix Cookie prefix. Defaults to $wgCookiePrefix + */ + public function setCookies( $cookies, $prefix = null ) { + if ( $prefix === null ) { + global $wgCookiePrefix; + $prefix = $wgCookiePrefix; + } + foreach ( $cookies as $key => $value ) { + $name = $prefix . $key; + $this->cookies[$name] = $value; + } } public function checkSessionCookie() { @@ -1402,8 +1432,17 @@ class FauxRequest extends WebRequest { * @param string $val */ public function setHeader( $name, $val ) { - $name = strtoupper( $name ); - $this->headers[$name] = $val; + $this->setHeaders( array( $name => $val ) ); + } + + /** + * @param array $headers + */ + public function setHeaders( $headers ) { + foreach ( $headers as $name => $val ) { + $name = strtoupper( $name ); + $this->headers[$name] = $val; + } } /** -- 2.20.1