From e3b09c66542dcf4ba7ef4ad60b60e624b8b3c3fb Mon Sep 17 00:00:00 2001 From: Vladimir Chernyshev Date: Tue, 11 Aug 2015 13:24:09 +0300 Subject: [PATCH 1/5] Update PHPMultiCurlClassTest.php Add testDigestHttpAuthSuccess --- tests/PHPCurlClass/PHPMultiCurlClassTest.php | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/PHPCurlClass/PHPMultiCurlClassTest.php b/tests/PHPCurlClass/PHPMultiCurlClassTest.php index 352bc44..37ee3c5 100644 --- a/tests/PHPCurlClass/PHPMultiCurlClassTest.php +++ b/tests/PHPCurlClass/PHPMultiCurlClassTest.php @@ -1612,6 +1612,45 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase $this->assertEquals($password2, $get_2->response->password); } + public function testDigestHttpAuthSuccess() + { + $username1 = 'myusername'; + $password1 = 'mypassword'; + $username2 = 'myotherusername'; + $password2 = 'myotherpassword'; + + $multi_curl = new MultiCurl(); + $multi_curl->setHeader('X-DEBUG-TEST', 'http_basic_auth'); + $multi_curl->setDigestAuthentication($username1, $password1); + + $get_1 = $multi_curl->addGet(Test::TEST_URL); + $get_1->complete(function ($instance) use ($username1, $password1) { + PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance); + PHPUnit_Framework_Assert::assertEquals($username1, $instance->response->username); + PHPUnit_Framework_Assert::assertEquals($password1, $instance->response->password); + }); + + $get_2 = $multi_curl->addGet(Test::TEST_URL); + $get_2->beforeSend(function ($instance) use ($username2, $password2) { + $instance->setDigestAuthentication($username2, $password2); + }); + $get_2->complete(function ($instance) use ($username2, $password2) { + PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance); + PHPUnit_Framework_Assert::assertEquals($username2, $instance->response->username); + PHPUnit_Framework_Assert::assertEquals($password2, $instance->response->password); + }); + + $multi_curl->start(); + + $this->assertEquals(CURLAUTH_DIGEST, $multi_curl->getOpt(CURLOPT_HTTPAUTH)); + $this->assertEquals(CURLAUTH_DIGEST, $get_1->getOpt(CURLOPT_HTTPAUTH)); + $this->assertEquals($username1, $get_1->response->username); + $this->assertEquals($password1, $get_1->response->password); + $this->assertEquals(CURLAUTH_DIGEST, $get_2->getOpt(CURLOPT_HTTPAUTH)); + $this->assertEquals($username2, $get_2->response->username); + $this->assertEquals($password2, $get_2->response->password); + } + public function testCookies() { $data = array('key' => 'mycookie'); From 8e5de8c2fd06d41fc5d350e258c412c6f014fdd7 Mon Sep 17 00:00:00 2001 From: Vladimir Chernyshev Date: Tue, 11 Aug 2015 13:25:36 +0300 Subject: [PATCH 2/5] Update MultiCurl.php Add setDigestAuthentication --- src/Curl/MultiCurl.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Curl/MultiCurl.php b/src/Curl/MultiCurl.php index e07d43c..e2dc3b8 100644 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -310,6 +310,19 @@ class MultiCurl $this->setOpt(CURLOPT_USERPWD, $username . ':' . $password); } + /** + * Set Digets Authentication + * + * @access public + * @param $username + * @param $password + */ + public function setDigestAuthentication($username, $password = '') + { + $this->setOpt(CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); + $this->setOpt(CURLOPT_USERPWD, $username . ':' . $password); + } + /** * Set Cookie * From 290c178516d6ff68fe358bafd6f6b7a811192992 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Tue, 11 Aug 2015 17:08:40 -0700 Subject: [PATCH 3/5] Fix typo --- 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 e2dc3b8..806a88f 100644 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -311,7 +311,7 @@ class MultiCurl } /** - * Set Digets Authentication + * Set Digest Authentication * * @access public * @param $username From d7861d8e08b16ce052c4b20f86480417a76aebd8 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Tue, 11 Aug 2015 20:34:27 -0700 Subject: [PATCH 4/5] Update HTTP digest authentication tests for MultiCurl --- tests/PHPCurlClass/PHPMultiCurlClassTest.php | 89 ++++++++++++++------ 1 file changed, 63 insertions(+), 26 deletions(-) diff --git a/tests/PHPCurlClass/PHPMultiCurlClassTest.php b/tests/PHPCurlClass/PHPMultiCurlClassTest.php index 37ee3c5..7fc7b54 100644 --- a/tests/PHPCurlClass/PHPMultiCurlClassTest.php +++ b/tests/PHPCurlClass/PHPMultiCurlClassTest.php @@ -1614,41 +1614,78 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase public function testDigestHttpAuthSuccess() { - $username1 = 'myusername'; - $password1 = 'mypassword'; - $username2 = 'myotherusername'; - $password2 = 'myotherpassword'; + $username = 'myusername'; + $password = 'mypassword'; + $invalid_password = 'anotherpassword'; + // Ensure that http digest returns canceled when not using any http digest authentication. $multi_curl = new MultiCurl(); - $multi_curl->setHeader('X-DEBUG-TEST', 'http_basic_auth'); - $multi_curl->setDigestAuthentication($username1, $password1); + $multi_curl->setHeader('X-DEBUG-TEST', 'http_digest_auth'); $get_1 = $multi_curl->addGet(Test::TEST_URL); - $get_1->complete(function ($instance) use ($username1, $password1) { - PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance); - PHPUnit_Framework_Assert::assertEquals($username1, $instance->response->username); - PHPUnit_Framework_Assert::assertEquals($password1, $instance->response->password); - }); - - $get_2 = $multi_curl->addGet(Test::TEST_URL); - $get_2->beforeSend(function ($instance) use ($username2, $password2) { - $instance->setDigestAuthentication($username2, $password2); - }); - $get_2->complete(function ($instance) use ($username2, $password2) { - PHPUnit_Framework_Assert::assertInstanceOf('Curl\Curl', $instance); - PHPUnit_Framework_Assert::assertEquals($username2, $instance->response->username); - PHPUnit_Framework_Assert::assertEquals($password2, $instance->response->password); + $get_1->complete(function ($instance) { + PHPUnit_Framework_Assert::assertEquals('canceled', $instance->response); + PHPUnit_Framework_Assert::assertEquals(401, $instance->httpStatusCode); }); $multi_curl->start(); + // Ensure that http digest returns invalid when using incorrect http digest authentication. + $multi_curl = new MultiCurl(); + $multi_curl->setHeader('X-DEBUG-TEST', 'http_digest_auth'); + $multi_curl->setDigestAuthentication($username, $invalid_password); $this->assertEquals(CURLAUTH_DIGEST, $multi_curl->getOpt(CURLOPT_HTTPAUTH)); - $this->assertEquals(CURLAUTH_DIGEST, $get_1->getOpt(CURLOPT_HTTPAUTH)); - $this->assertEquals($username1, $get_1->response->username); - $this->assertEquals($password1, $get_1->response->password); - $this->assertEquals(CURLAUTH_DIGEST, $get_2->getOpt(CURLOPT_HTTPAUTH)); - $this->assertEquals($username2, $get_2->response->username); - $this->assertEquals($password2, $get_2->response->password); + + $get_1 = $multi_curl->addGet(Test::TEST_URL); + $get_1->complete(function ($instance) { + PHPUnit_Framework_Assert::assertEquals(CURLAUTH_DIGEST, $instance->getOpt(CURLOPT_HTTPAUTH)); + PHPUnit_Framework_Assert::assertEquals('invalid', $instance->response); + PHPUnit_Framework_Assert::assertEquals(401, $instance->httpStatusCode); + }); + + $multi_curl->start(); + + // Ensure that http digest returns valid when using correct http digest authentication. + $multi_curl = new MultiCurl(); + $multi_curl->setHeader('X-DEBUG-TEST', 'http_digest_auth'); + $multi_curl->setDigestAuthentication($username, $password); + $this->assertEquals(CURLAUTH_DIGEST, $multi_curl->getOpt(CURLOPT_HTTPAUTH)); + + $get_1 = $multi_curl->addGet(Test::TEST_URL); + $get_1->complete(function ($instance) { + PHPUnit_Framework_Assert::assertEquals(CURLAUTH_DIGEST, $instance->getOpt(CURLOPT_HTTPAUTH)); + PHPUnit_Framework_Assert::assertEquals('valid', $instance->response); + PHPUnit_Framework_Assert::assertEquals(200, $instance->httpStatusCode); + }); + + $multi_curl->start(); + + // Ensure that http digest can return both invalid and valid when using + // incorrect and correct authentication in the same MultiCurl. + $multi_curl = new MultiCurl(); + $multi_curl->setHeader('X-DEBUG-TEST', 'http_digest_auth'); + $multi_curl->setDigestAuthentication($username, $password); + $this->assertEquals(CURLAUTH_DIGEST, $multi_curl->getOpt(CURLOPT_HTTPAUTH)); + + $get_1 = $multi_curl->addGet(Test::TEST_URL); + $get_1->beforeSend(function ($instance) use ($username, $invalid_password) { + $instance->setDigestAuthentication($username, $invalid_password); + PHPUnit_Framework_Assert::assertEquals(CURLAUTH_DIGEST, $instance->getOpt(CURLOPT_HTTPAUTH)); + }); + $get_1->complete(function ($instance) { + PHPUnit_Framework_Assert::assertEquals(CURLAUTH_DIGEST, $instance->getOpt(CURLOPT_HTTPAUTH)); + PHPUnit_Framework_Assert::assertEquals('invalid', $instance->response); + PHPUnit_Framework_Assert::assertEquals(401, $instance->httpStatusCode); + }); + + $get_2 = $multi_curl->addGet(Test::TEST_URL); + $get_2->complete(function ($instance) { + PHPUnit_Framework_Assert::assertEquals(CURLAUTH_DIGEST, $instance->getOpt(CURLOPT_HTTPAUTH)); + PHPUnit_Framework_Assert::assertEquals('valid', $instance->response); + PHPUnit_Framework_Assert::assertEquals(200, $instance->httpStatusCode); + }); + + $multi_curl->start(); } public function testCookies() From 6fe72d9de47871caa6eef6d68801abca96f684f8 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Tue, 11 Aug 2015 20:50:25 -0700 Subject: [PATCH 5/5] Bump patch version --- 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 0ae256a..1f3a76f 100644 --- a/src/Curl/Curl.php +++ b/src/Curl/Curl.php @@ -4,7 +4,7 @@ namespace Curl; class Curl { - const VERSION = '4.6.7'; + const VERSION = '4.6.8'; const DEFAULT_TIMEOUT = 30; public $curl;