From 5087433ba114d18b3d16c068879ec66b40d3ccf4 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Fri, 2 Sep 2016 17:27:05 -0700 Subject: [PATCH 01/16] Start built-in web server for PHP 7.1 continuous integration tests --- tests/before_script.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/before_script.sh b/tests/before_script.sh index 949234b..a009129 100755 --- a/tests/before_script.sh +++ b/tests/before_script.sh @@ -37,6 +37,8 @@ elif [[ "${TRAVIS_PHP_VERSION}" == "5.6" ]]; then php -S 127.0.0.1:8000 -t tests/PHPCurlClass/ & elif [[ "${TRAVIS_PHP_VERSION}" == "7.0" ]]; then php -S 127.0.0.1:8000 -t tests/PHPCurlClass/ & +elif [[ "${TRAVIS_PHP_VERSION}" == "7.1" ]]; then + php -S 127.0.0.1:8000 -t tests/PHPCurlClass/ & elif [[ "${TRAVIS_PHP_VERSION}" == "hhvm" ]]; then sudo add-apt-repository -y ppa:nginx/stable sudo apt-get update From a02c8aa5f26b3a9d6e64f3561f5d56e963a441bd Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sat, 3 Sep 2016 22:49:41 -0700 Subject: [PATCH 02/16] Fix undefined index when option not set --- src/Curl/Curl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Curl/Curl.php b/src/Curl/Curl.php index d2e0693..d5c8c1f 100644 --- a/src/Curl/Curl.php +++ b/src/Curl/Curl.php @@ -437,7 +437,7 @@ class Curl */ public function getOpt($option) { - return $this->options[$option]; + return isset($this->options[$option]) ? $this->options[$option] : null; } /** From 90560e5d9c82625c236d78921b44ea93f8da381e Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sat, 3 Sep 2016 22:53:04 -0700 Subject: [PATCH 03/16] Add phpcs to require-dev --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 52c180a..06c815e 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,8 @@ "ext-curl": "*" }, "require-dev": { - "phpunit/phpunit": "*" + "phpunit/phpunit": "*", + "squizlabs/php_codesniffer": "*" }, "autoload": { "psr-4": { From 946f4a74a150a0c0ae483c63c3ed0bf4e855d8e5 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sat, 3 Sep 2016 23:06:25 -0700 Subject: [PATCH 04/16] Fix undefined index when option not set for MultiCurl::getOpt() --- src/Curl/MultiCurl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Curl/MultiCurl.php b/src/Curl/MultiCurl.php index 764f280..8905d46 100644 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -344,7 +344,7 @@ class MultiCurl */ public function getOpt($option) { - return $this->options[$option]; + return isset($this->options[$option]) ? $this->options[$option] : null; } /** From c634e65a199f764d2abc0a82cb635c44d3895808 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sat, 3 Sep 2016 23:18:22 -0700 Subject: [PATCH 05/16] Add MultiCurl::setCookieString() --- src/Curl/MultiCurl.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Curl/MultiCurl.php b/src/Curl/MultiCurl.php index 8905d46..9e5f087 100644 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -386,6 +386,19 @@ class MultiCurl $this->setOpt(CURLOPT_COOKIE, str_replace('+', '%20', http_build_query($this->cookies, '', '; '))); } + /** + * Set Cookie String + * + * @access public + * @param $string + * + * @return bool + */ + public function setCookieString($string) + { + return $this->setOpt(CURLOPT_COOKIE, $string); + } + /** * Set Cookie File * From 82b64c2290ee5e88e33e485c7cd82fc5d396b4bb Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sat, 3 Sep 2016 23:19:42 -0700 Subject: [PATCH 06/16] Add MultiCurl::setConnectTimeout() --- src/Curl/MultiCurl.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Curl/MultiCurl.php b/src/Curl/MultiCurl.php index 9e5f087..6713cb9 100644 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -386,6 +386,17 @@ class MultiCurl $this->setOpt(CURLOPT_COOKIE, str_replace('+', '%20', http_build_query($this->cookies, '', '; '))); } + /** + * Set Connect Timeout + * + * @access public + * @param $seconds + */ + public function setConnectTimeout($seconds) + { + $this->setOpt(CURLOPT_CONNECTTIMEOUT, $seconds); + } + /** * Set Cookie String * From 6c542c4784511e2842f346b0e2df5b524fa3f98a Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sat, 3 Sep 2016 23:20:18 -0700 Subject: [PATCH 07/16] Update readme methods --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9414c53..8caedf2 100644 --- a/README.md +++ b/README.md @@ -250,9 +250,11 @@ MultiCurl::complete($callback) MultiCurl::error($callback) MultiCurl::getOpt($option) MultiCurl::setBasicAuthentication($username, $password = '') +MultiCurl::setConnectTimeout($seconds) MultiCurl::setCookie($key, $value) MultiCurl::setCookieFile($cookie_file) MultiCurl::setCookieJar($cookie_jar) +MultiCurl::setCookieString($string) MultiCurl::setDigestAuthentication($username, $password = '') MultiCurl::setHeader($key, $value) MultiCurl::setJsonDecoder($function) From 21134e119e76c451c2b695946f342a8ccdd48240 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 4 Sep 2016 00:07:31 -0700 Subject: [PATCH 08/16] Add MultiCurl::setOpts() --- src/Curl/MultiCurl.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Curl/MultiCurl.php b/src/Curl/MultiCurl.php index 6713cb9..e1cded6 100644 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -482,6 +482,19 @@ class MultiCurl $this->options[$option] = $value; } + /** + * Set Opts + * + * @access public + * @param $options + */ + public function setOpts($options) + { + foreach ($options as $option => $value) { + $this->setOpt($option, $value); + } + } + /** * Set Referer * From 4c47bac9faae1c11ac4e949471eb30eb8b9c699a Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 4 Sep 2016 00:13:49 -0700 Subject: [PATCH 09/16] Add multicurl test for setHeader and individual overrides --- tests/PHPCurlClass/PHPMultiCurlClassTest.php | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/PHPCurlClass/PHPMultiCurlClassTest.php b/tests/PHPCurlClass/PHPMultiCurlClassTest.php index a30d6b9..2f3b398 100644 --- a/tests/PHPCurlClass/PHPMultiCurlClassTest.php +++ b/tests/PHPCurlClass/PHPMultiCurlClassTest.php @@ -1853,6 +1853,31 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase $this->assertEquals($curl_user_agent, $get_2->response); } + public function testSetHeaderAndOverride() + { + $multi_curl = new MultiCurl(); + $multi_curl->setHeader('header-for-all-before', 'a'); + + $get_1 = $multi_curl->addGet(Test::TEST_URL); + $get_1->setHeader('header-for-1st-request', '1'); + $get_1->complete(function ($instance) { + PHPUnit_Framework_Assert::assertEquals('a', $instance->requestHeaders['header-for-all-before']); + PHPUnit_Framework_Assert::assertEquals('b', $instance->requestHeaders['header-for-all-after']); + PHPUnit_Framework_Assert::assertEquals('1', $instance->requestHeaders['header-for-1st-request']); + }); + + $get_2 = $multi_curl->addGet(Test::TEST_URL); + $get_2->setHeader('header-for-2nd-request', '2'); + $get_2->complete(function ($instance) { + PHPUnit_Framework_Assert::assertEquals('a', $instance->requestHeaders['header-for-all-before']); + PHPUnit_Framework_Assert::assertEquals('b', $instance->requestHeaders['header-for-all-after']); + PHPUnit_Framework_Assert::assertEquals('2', $instance->requestHeaders['header-for-2nd-request']); + }); + + $multi_curl->setHeader('header-for-all-after', 'b'); + $multi_curl->start(); + } + public function testBasicHttpAuthSuccess() { $username1 = 'myusername'; From 35ac500e03080ab409fbf4f6a2818ce4dd82b465 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 4 Sep 2016 01:12:06 -0700 Subject: [PATCH 10/16] Improve cookie handling for multicurl requests. Fix Curl::responseCookies set in headerCallback() being overwritten during multicurl request. Use rfc cookie encoding when using MultiCurl::setCookie(). Make MultiCurl::responseCookies publicly accessible. --- README.md | 1 + src/Curl/Curl.php | 4 +-- src/Curl/MultiCurl.php | 5 +++- tests/PHPCurlClass/PHPCurlClassTest.php | 5 ++-- tests/PHPCurlClass/PHPMultiCurlClassTest.php | 28 ++++++++++++-------- tests/PHPCurlClass/server.php | 5 ++++ 6 files changed, 31 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 8caedf2..c4f7f27 100644 --- a/README.md +++ b/README.md @@ -259,6 +259,7 @@ MultiCurl::setDigestAuthentication($username, $password = '') MultiCurl::setHeader($key, $value) MultiCurl::setJsonDecoder($function) MultiCurl::setOpt($option, $value) +MultiCurl::setOpts($options) MultiCurl::setReferer($referer) MultiCurl::setReferrer($referrer) MultiCurl::setTimeout($seconds) diff --git a/src/Curl/Curl.php b/src/Curl/Curl.php index d5c8c1f..d39e90c 100644 --- a/src/Curl/Curl.php +++ b/src/Curl/Curl.php @@ -60,6 +60,7 @@ class Curl public $requestHeaders = null; public $responseHeaders = null; public $rawResponseHeaders = ''; + public $responseCookies = array(); public $response = null; public $rawResponse = null; @@ -71,7 +72,6 @@ class Curl public $fileHandle = null; private $cookies = array(); - private $responseCookies = array(); private $headers = array(); private $options = array(); @@ -336,8 +336,8 @@ class Curl */ public function exec($ch = null) { - $this->responseCookies = array(); if ($ch === null) { + $this->responseCookies = array(); $this->call($this->beforeSendFunction); $this->rawResponse = curl_exec($this->curl); $this->curlErrorCode = curl_errno($this->curl); diff --git a/src/Curl/MultiCurl.php b/src/Curl/MultiCurl.php index e1cded6..79365e4 100644 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -383,7 +383,6 @@ class MultiCurl public function setCookie($key, $value) { $this->cookies[$key] = $value; - $this->setOpt(CURLOPT_COOKIE, str_replace('+', '%20', http_build_query($this->cookies, '', '; '))); } /** @@ -699,6 +698,9 @@ class MultiCurl foreach ($this->headers as $key => $value) { $curl->setHeader($key, $value); } + foreach ($this->cookies as $key => $value) { + $curl->setCookie($key, $value); + } $curl->setJsonDecoder($this->jsonDecoder); $curl->setXmlDecoder($this->xmlDecoder); @@ -708,6 +710,7 @@ class MultiCurl } $this->activeCurls[$curl->id] = $curl; + $this->responseCookies = array(); $curl->call($curl->beforeSendFunction); } } diff --git a/tests/PHPCurlClass/PHPCurlClassTest.php b/tests/PHPCurlClass/PHPCurlClassTest.php index c9efabb..24bee0c 100644 --- a/tests/PHPCurlClass/PHPCurlClassTest.php +++ b/tests/PHPCurlClass/PHPCurlClassTest.php @@ -877,9 +877,8 @@ class CurlTest extends PHPUnit_Framework_TestCase $test->server('multiple_cookie', 'GET'); $this->assertEquals('cookie1=scrumptious,cookie2=mouthwatering', $test->curl->responseHeaders['Set-Cookie']); - $response_cookies = $test->curl->getResponseCookies(); - $this->assertEquals('scrumptious', $response_cookies['cookie1']); - $this->assertEquals('mouthwatering', $response_cookies['cookie2']); + $this->assertEquals('scrumptious', $test->curl->responseCookies['cookie1']); + $this->assertEquals('mouthwatering', $test->curl->responseCookies['cookie2']); } public function testDefaultTimeout() diff --git a/tests/PHPCurlClass/PHPMultiCurlClassTest.php b/tests/PHPCurlClass/PHPMultiCurlClassTest.php index 2f3b398..8d694c4 100644 --- a/tests/PHPCurlClass/PHPMultiCurlClassTest.php +++ b/tests/PHPCurlClass/PHPMultiCurlClassTest.php @@ -2001,31 +2001,37 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase public function testCookies() { - $data = array('key' => 'mycookie'); - $multi_curl = new MultiCurl(); - $multi_curl->setHeader('X-DEBUG-TEST', 'cookie'); + $multi_curl->setHeader('X-DEBUG-TEST', 'setcookie'); $multi_curl->setCookie('mycookie', 'yum'); + $multi_curl->setCookie('cookie-for-all-before', 'a'); - $get_1 = $multi_curl->addGet(Test::TEST_URL, $data); + $get_1 = $multi_curl->addGet(Test::TEST_URL); + $get_1->setCookie('cookie-for-1st-request', '1'); $get_1->complete(function ($instance) { - PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance); - PHPUnit_Framework_Assert::assertEquals('yum', $instance->response); + PHPUnit_Framework_Assert::assertEquals('yum', $instance->responseCookies['mycookie']); + PHPUnit_Framework_Assert::assertEquals('a', $instance->responseCookies['cookie-for-all-before']); + PHPUnit_Framework_Assert::assertEquals('b', $instance->responseCookies['cookie-for-all-after']); + PHPUnit_Framework_Assert::assertEquals('1', $instance->responseCookies['cookie-for-1st-request']); }); - $get_2 = $multi_curl->addGet(Test::TEST_URL, $data); + $get_2 = $multi_curl->addGet(Test::TEST_URL); + $get_2->setCookie('cookie-for-2nd-request', '2'); $get_2->beforeSend(function ($instance) { $instance->setCookie('mycookie', 'yummy'); }); $get_2->complete(function ($instance) { - PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance); - PHPUnit_Framework_Assert::assertEquals('yummy', $instance->response); + PHPUnit_Framework_Assert::assertEquals('yummy', $instance->responseCookies['mycookie']); + PHPUnit_Framework_Assert::assertEquals('a', $instance->responseCookies['cookie-for-all-before']); + PHPUnit_Framework_Assert::assertEquals('b', $instance->responseCookies['cookie-for-all-after']); + PHPUnit_Framework_Assert::assertEquals('2', $instance->responseCookies['cookie-for-2nd-request']); }); + $multi_curl->setCookie('cookie-for-all-after', 'b'); $multi_curl->start(); - $this->assertEquals('yum', $get_1->response); - $this->assertEquals('yummy', $get_2->response); + $this->assertEquals('yum', $get_1->responseCookies['mycookie']); + $this->assertEquals('yummy', $get_2->responseCookies['mycookie']); } public function testJSONDecoder() diff --git a/tests/PHPCurlClass/server.php b/tests/PHPCurlClass/server.php index e1f5856..3aefcbd 100644 --- a/tests/PHPCurlClass/server.php +++ b/tests/PHPCurlClass/server.php @@ -143,6 +143,11 @@ if ($test === 'http_basic_auth') { } elseif ($test === 'request_uri') { echo $_SERVER['REQUEST_URI']; exit; +} elseif ($test === 'setcookie') { + foreach ($_COOKIE as $key => $value) { + setcookie($key, $value); + } + exit; } elseif ($test === 'cookiejar') { setcookie('mycookie', 'yum'); exit; From c2d04221e75e29a6ec84252e0a36abe175ccec00 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 4 Sep 2016 01:19:27 -0700 Subject: [PATCH 11/16] Add MultiCurl::setPort() --- README.md | 1 + src/Curl/MultiCurl.php | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/README.md b/README.md index c4f7f27..1be0428 100644 --- a/README.md +++ b/README.md @@ -260,6 +260,7 @@ MultiCurl::setHeader($key, $value) MultiCurl::setJsonDecoder($function) MultiCurl::setOpt($option, $value) MultiCurl::setOpts($options) +MultiCurl::setPort($port) MultiCurl::setReferer($referer) MultiCurl::setReferrer($referrer) MultiCurl::setTimeout($seconds) diff --git a/src/Curl/MultiCurl.php b/src/Curl/MultiCurl.php index 79365e4..d2b7ffb 100644 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -385,6 +385,17 @@ class MultiCurl $this->cookies[$key] = $value; } + /** + * Set Port + * + * @access public + * @param $port + */ + public function setPort($port) + { + $this->setOpt(CURLOPT_PORT, intval($port)); + } + /** * Set Connect Timeout * From 7038db45385c63f2c8fb8f7564cc2bee720153e7 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 4 Sep 2016 01:42:17 -0700 Subject: [PATCH 12/16] Make internal method private --- README.md | 1 - src/Curl/Curl.php | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1be0428..4fa5d17 100644 --- a/README.md +++ b/README.md @@ -187,7 +187,6 @@ Curl::close() Curl::complete($callback) Curl::delete($url, $query_parameters = array(), $data = array()) Curl::download($url, $mixed_filename) -Curl::downloadComplete($fh) Curl::error($callback) Curl::exec($ch = null) Curl::get($url, $data = array()) diff --git a/src/Curl/Curl.php b/src/Curl/Curl.php index d39e90c..95e873a 100644 --- a/src/Curl/Curl.php +++ b/src/Curl/Curl.php @@ -257,10 +257,10 @@ class Curl /** * Download Complete * - * @access public + * @access private * @param $fh */ - public function downloadComplete($fh) + private function downloadComplete($fh) { if (!$this->error && $this->downloadCompleteFunction) { rewind($fh); From f9cf113a86c4dd7de996f77d7395ab6c8b88bb6d Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 4 Sep 2016 01:43:10 -0700 Subject: [PATCH 13/16] Remove Curl::getResponseCookies(), use Curl::responseCookies directly instead --- src/Curl/Curl.php | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/Curl/Curl.php b/src/Curl/Curl.php index 95e873a..e4e4b90 100644 --- a/src/Curl/Curl.php +++ b/src/Curl/Curl.php @@ -727,18 +727,6 @@ class Curl return isset($this->responseCookies[$key]) ? $this->responseCookies[$key] : null; } - /** - * Get response cookies. - * - * @access public - * - * @return array - */ - public function getResponseCookies() - { - return $this->responseCookies; - } - /** * Set Port * From 67e799238635de0b4678b8775dc615fc8967eeda Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 4 Sep 2016 01:45:03 -0700 Subject: [PATCH 14/16] Clean up --- src/Curl/MultiCurl.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Curl/MultiCurl.php b/src/Curl/MultiCurl.php index d2b7ffb..79d3c34 100644 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -303,8 +303,8 @@ class MultiCurl */ public function close() { - foreach ($this->curls as $ch) { - $ch->close(); + foreach ($this->curls as $curl) { + $curl->close(); } if (is_resource($this->multiCurl)) { From a7b9042871a47dbbe0ff879edd0a8fb27dc66765 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 4 Sep 2016 01:48:25 -0700 Subject: [PATCH 15/16] List PHP 7.1 compatibility --- .travis.yml | 1 - README.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 667f62d..0f0a1d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,6 @@ php: matrix: allow_failures: - - php: 7.1 - php: nightly before_script: diff --git a/README.md b/README.md index 4fa5d17..cb5dba0 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ For latest commit version: ### Requirements -PHP Curl Class works with PHP 5.3, 5.4, 5.5, 5.6, 7.0, and HHVM. +PHP Curl Class works with PHP 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, and HHVM. ### Quick Start and Examples From 7ca7ac3629ab0c5b5c009712340e22e2db127ea4 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Sun, 4 Sep 2016 03:03:24 -0700 Subject: [PATCH 16/16] Use request-line header and effectiveUrl for assertions --- README.md | 1 - tests/PHPCurlClass/PHPCurlClassTest.php | 33 +++++-------- tests/PHPCurlClass/PHPMultiCurlClassTest.php | 51 ++++++++++++-------- 3 files changed, 44 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index cb5dba0..2b46c0c 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,6 @@ Curl::getCookie($key) Curl::getInfo($opt) Curl::getOpt($option) Curl::getResponseCookie($key) -Curl::getResponseCookies() Curl::head($url, $data = array()) Curl::headerCallback($ch, $header) Curl::options($url, $data = array()) diff --git a/tests/PHPCurlClass/PHPCurlClassTest.php b/tests/PHPCurlClass/PHPCurlClassTest.php index 24bee0c..775e511 100644 --- a/tests/PHPCurlClass/PHPCurlClassTest.php +++ b/tests/PHPCurlClass/PHPCurlClassTest.php @@ -201,53 +201,46 @@ class CurlTest extends PHPUnit_Framework_TestCase $data = array('key' => 'value'); $curl = new Curl(); - $curl->setHeader('X-DEBUG-TEST', 'get'); $curl->setUrl(Test::TEST_URL); $curl->delete($data); - $this->assertEquals(Test::TEST_URL, $curl->baseUrl); - $this->assertEquals('key=value', $curl->response); + $this->assertEquals('DELETE /?key=value HTTP/1.1', $curl->requestHeaders['Request-Line']); + $this->assertEquals(Test::TEST_URL . '?key=value', $curl->effectiveUrl); $curl = new Curl(); - $curl->setHeader('X-DEBUG-TEST', 'get'); $curl->setUrl(Test::TEST_URL); $curl->get($data); - $this->assertEquals(Test::TEST_URL, $curl->baseUrl); - $this->assertEquals('key=value', $curl->response); + $this->assertEquals('GET /?key=value HTTP/1.1', $curl->requestHeaders['Request-Line']); + $this->assertEquals(Test::TEST_URL . '?key=value', $curl->effectiveUrl); $curl = new Curl(); - $curl->setHeader('X-DEBUG-TEST', 'get'); $curl->setUrl(Test::TEST_URL); $curl->head($data); - $this->assertEquals(Test::TEST_URL, $curl->baseUrl); $this->assertEquals('HEAD /?key=value HTTP/1.1', $curl->requestHeaders['Request-Line']); + $this->assertEquals(Test::TEST_URL . '?key=value', $curl->effectiveUrl); $curl = new Curl(); - $curl->setHeader('X-DEBUG-TEST', 'get'); $curl->setUrl(Test::TEST_URL); $curl->options($data); - $this->assertEquals(Test::TEST_URL, $curl->baseUrl); - $this->assertEquals('key=value', $curl->response); + $this->assertEquals('OPTIONS /?key=value HTTP/1.1', $curl->requestHeaders['Request-Line']); + $this->assertEquals(Test::TEST_URL . '?key=value', $curl->effectiveUrl); $curl = new Curl(); - $curl->setHeader('X-DEBUG-TEST', 'request_method'); $curl->setUrl(Test::TEST_URL); $curl->patch($data); - $this->assertEquals(Test::TEST_URL, $curl->baseUrl); - $this->assertEquals('PATCH', $curl->response); + $this->assertEquals('PATCH / HTTP/1.1', $curl->requestHeaders['Request-Line']); + $this->assertEquals(Test::TEST_URL, $curl->effectiveUrl); $curl = new Curl(); - $curl->setHeader('X-DEBUG-TEST', 'post'); $curl->setUrl(Test::TEST_URL); $curl->post($data); - $this->assertEquals(Test::TEST_URL, $curl->baseUrl); - $this->assertEquals('key=value', $curl->response); + $this->assertEquals('POST / HTTP/1.1', $curl->requestHeaders['Request-Line']); + $this->assertEquals(Test::TEST_URL, $curl->effectiveUrl); $curl = new Curl(); - $curl->setHeader('X-DEBUG-TEST', 'put'); $curl->setUrl(Test::TEST_URL); $curl->put($data); - $this->assertEquals(Test::TEST_URL, $curl->baseUrl); - $this->assertEquals('key=value', $curl->response); + $this->assertEquals('PUT / HTTP/1.1', $curl->requestHeaders['Request-Line']); + $this->assertEquals(Test::TEST_URL, $curl->effectiveUrl); } public function testEffectiveUrl() diff --git a/tests/PHPCurlClass/PHPMultiCurlClassTest.php b/tests/PHPCurlClass/PHPMultiCurlClassTest.php index 8d694c4..28a0eb4 100644 --- a/tests/PHPCurlClass/PHPMultiCurlClassTest.php +++ b/tests/PHPCurlClass/PHPMultiCurlClassTest.php @@ -2230,65 +2230,76 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase $data = array('key' => 'value'); $multi_curl = new MultiCurl(); - $multi_curl->setHeader('X-DEBUG-TEST', 'get'); $multi_curl->setUrl(Test::TEST_URL); $multi_curl->addDelete($data)->complete(function ($instance) { - PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->baseUrl); - PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response); + PHPUnit_Framework_Assert::assertEquals( + 'DELETE /?key=value HTTP/1.1', + $instance->requestHeaders['Request-Line'] + ); + PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL . '?key=value', $instance->effectiveUrl); }); $multi_curl->start(); $multi_curl = new MultiCurl(); - $multi_curl->setHeader('X-DEBUG-TEST', 'get'); $multi_curl->setUrl(Test::TEST_URL); $multi_curl->addGet($data)->complete(function ($instance) { - PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->baseUrl); - PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response); + PHPUnit_Framework_Assert::assertEquals( + 'GET /?key=value HTTP/1.1', + $instance->requestHeaders['Request-Line'] + ); + PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL . '?key=value', $instance->effectiveUrl); }); $multi_curl->start(); $multi_curl = new MultiCurl(); - $multi_curl->setHeader('X-DEBUG-TEST', 'get'); $multi_curl->setUrl(Test::TEST_URL); $multi_curl->addHead($data)->complete(function ($instance) { - PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->baseUrl); PHPUnit_Framework_Assert::assertEquals( 'HEAD /?key=value HTTP/1.1', $instance->requestHeaders['Request-Line'] ); + PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL . '?key=value', $instance->effectiveUrl); }); $multi_curl->start(); $multi_curl = new MultiCurl(); - $multi_curl->setHeader('X-DEBUG-TEST', 'get'); $multi_curl->setUrl(Test::TEST_URL); $multi_curl->addOptions($data)->complete(function ($instance) { - PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->baseUrl); - PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response); + PHPUnit_Framework_Assert::assertEquals( + 'OPTIONS /?key=value HTTP/1.1', + $instance->requestHeaders['Request-Line'] + ); + PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL . '?key=value', $instance->effectiveUrl); }); $multi_curl = new MultiCurl(); - $multi_curl->setHeader('X-DEBUG-TEST', 'request_method'); $multi_curl->setUrl(Test::TEST_URL); $multi_curl->addPatch($data)->complete(function ($instance) { - PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->baseUrl); - PHPUnit_Framework_Assert::assertEquals('PATCH', $instance->response); + PHPUnit_Framework_Assert::assertEquals( + 'PATCH / HTTP/1.1', + $instance->requestHeaders['Request-Line'] + ); + PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->effectiveUrl); }); $multi_curl = new MultiCurl(); - $multi_curl->setHeader('X-DEBUG-TEST', 'post'); $multi_curl->setUrl(Test::TEST_URL); $multi_curl->addPost($data)->complete(function ($instance) { - PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->baseUrl); - PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response); + PHPUnit_Framework_Assert::assertEquals( + 'POST / HTTP/1.1', + $instance->requestHeaders['Request-Line'] + ); + PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->effectiveUrl); }); $multi_curl = new MultiCurl(); - $multi_curl->setHeader('X-DEBUG-TEST', 'put'); $multi_curl->setUrl(Test::TEST_URL); $multi_curl->addPut($data)->complete(function ($instance) { - PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->baseUrl); - PHPUnit_Framework_Assert::assertEquals('key=value', $instance->response); + PHPUnit_Framework_Assert::assertEquals( + 'PUT / HTTP/1.1', + $instance->requestHeaders['Request-Line'] + ); + PHPUnit_Framework_Assert::assertEquals(Test::TEST_URL, $instance->effectiveUrl); }); }