mirror of
https://github.com/php-curl-class/php-curl-class.git
synced 2026-08-30 12:14:36 +00:00
Merge pull request #222 from php-curl-class/VolCh-master
Merge MultiCurl::setDigestAuthentication
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@ namespace Curl;
|
||||
|
||||
class Curl
|
||||
{
|
||||
const VERSION = '4.6.7';
|
||||
const VERSION = '4.6.8';
|
||||
const DEFAULT_TIMEOUT = 30;
|
||||
|
||||
public $curl;
|
||||
|
||||
@@ -310,6 +310,19 @@ class MultiCurl
|
||||
$this->setOpt(CURLOPT_USERPWD, $username . ':' . $password);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Digest 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
|
||||
*
|
||||
|
||||
@@ -1612,6 +1612,82 @@ class MultiCurlTest extends PHPUnit_Framework_TestCase
|
||||
$this->assertEquals($password2, $get_2->response->password);
|
||||
}
|
||||
|
||||
public function testDigestHttpAuthSuccess()
|
||||
{
|
||||
$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_digest_auth');
|
||||
|
||||
$get_1 = $multi_curl->addGet(Test::TEST_URL);
|
||||
$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));
|
||||
|
||||
$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()
|
||||
{
|
||||
$data = array('key' => 'mycookie');
|
||||
|
||||
Reference in New Issue
Block a user