Skip to content

Commit 342fbd3

Browse files
committed
Merge pull request php-curl-class#222 from php-curl-class/VolCh-master
Merge MultiCurl::setDigestAuthentication
2 parents 74bb989 + 6fe72d9 commit 342fbd3

File tree

3 files changed

+90
-1
lines changed

3 files changed

+90
-1
lines changed

src/Curl/Curl.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
class Curl
66
{
7-
const VERSION = '4.6.7';
7+
const VERSION = '4.6.8';
88
const DEFAULT_TIMEOUT = 30;
99

1010
public $curl;

src/Curl/MultiCurl.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,19 @@ public function setBasicAuthentication($username, $password = '')
310310
$this->setOpt(CURLOPT_USERPWD, $username . ':' . $password);
311311
}
312312

313+
/**
314+
* Set Digest Authentication
315+
*
316+
* @access public
317+
* @param $username
318+
* @param $password
319+
*/
320+
public function setDigestAuthentication($username, $password = '')
321+
{
322+
$this->setOpt(CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
323+
$this->setOpt(CURLOPT_USERPWD, $username . ':' . $password);
324+
}
325+
313326
/**
314327
* Set Cookie
315328
*

tests/PHPCurlClass/PHPMultiCurlClassTest.php

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1612,6 +1612,82 @@ public function testBasicHttpAuthSuccess()
16121612
$this->assertEquals($password2, $get_2->response->password);
16131613
}
16141614

1615+
public function testDigestHttpAuthSuccess()
1616+
{
1617+
$username = 'myusername';
1618+
$password = 'mypassword';
1619+
$invalid_password = 'anotherpassword';
1620+
1621+
// Ensure that http digest returns canceled when not using any http digest authentication.
1622+
$multi_curl = new MultiCurl();
1623+
$multi_curl->setHeader('X-DEBUG-TEST', 'http_digest_auth');
1624+
1625+
$get_1 = $multi_curl->addGet(Test::TEST_URL);
1626+
$get_1->complete(function ($instance) {
1627+
PHPUnit_Framework_Assert::assertEquals('canceled', $instance->response);
1628+
PHPUnit_Framework_Assert::assertEquals(401, $instance->httpStatusCode);
1629+
});
1630+
1631+
$multi_curl->start();
1632+
1633+
// Ensure that http digest returns invalid when using incorrect http digest authentication.
1634+
$multi_curl = new MultiCurl();
1635+
$multi_curl->setHeader('X-DEBUG-TEST', 'http_digest_auth');
1636+
$multi_curl->setDigestAuthentication($username, $invalid_password);
1637+
$this->assertEquals(CURLAUTH_DIGEST, $multi_curl->getOpt(CURLOPT_HTTPAUTH));
1638+
1639+
$get_1 = $multi_curl->addGet(Test::TEST_URL);
1640+
$get_1->complete(function ($instance) {
1641+
PHPUnit_Framework_Assert::assertEquals(CURLAUTH_DIGEST, $instance->getOpt(CURLOPT_HTTPAUTH));
1642+
PHPUnit_Framework_Assert::assertEquals('invalid', $instance->response);
1643+
PHPUnit_Framework_Assert::assertEquals(401, $instance->httpStatusCode);
1644+
});
1645+
1646+
$multi_curl->start();
1647+
1648+
// Ensure that http digest returns valid when using correct http digest authentication.
1649+
$multi_curl = new MultiCurl();
1650+
$multi_curl->setHeader('X-DEBUG-TEST', 'http_digest_auth');
1651+
$multi_curl->setDigestAuthentication($username, $password);
1652+
$this->assertEquals(CURLAUTH_DIGEST, $multi_curl->getOpt(CURLOPT_HTTPAUTH));
1653+
1654+
$get_1 = $multi_curl->addGet(Test::TEST_URL);
1655+
$get_1->complete(function ($instance) {
1656+
PHPUnit_Framework_Assert::assertEquals(CURLAUTH_DIGEST, $instance->getOpt(CURLOPT_HTTPAUTH));
1657+
PHPUnit_Framework_Assert::assertEquals('valid', $instance->response);
1658+
PHPUnit_Framework_Assert::assertEquals(200, $instance->httpStatusCode);
1659+
});
1660+
1661+
$multi_curl->start();
1662+
1663+
// Ensure that http digest can return both invalid and valid when using
1664+
// incorrect and correct authentication in the same MultiCurl.
1665+
$multi_curl = new MultiCurl();
1666+
$multi_curl->setHeader('X-DEBUG-TEST', 'http_digest_auth');
1667+
$multi_curl->setDigestAuthentication($username, $password);
1668+
$this->assertEquals(CURLAUTH_DIGEST, $multi_curl->getOpt(CURLOPT_HTTPAUTH));
1669+
1670+
$get_1 = $multi_curl->addGet(Test::TEST_URL);
1671+
$get_1->beforeSend(function ($instance) use ($username, $invalid_password) {
1672+
$instance->setDigestAuthentication($username, $invalid_password);
1673+
PHPUnit_Framework_Assert::assertEquals(CURLAUTH_DIGEST, $instance->getOpt(CURLOPT_HTTPAUTH));
1674+
});
1675+
$get_1->complete(function ($instance) {
1676+
PHPUnit_Framework_Assert::assertEquals(CURLAUTH_DIGEST, $instance->getOpt(CURLOPT_HTTPAUTH));
1677+
PHPUnit_Framework_Assert::assertEquals('invalid', $instance->response);
1678+
PHPUnit_Framework_Assert::assertEquals(401, $instance->httpStatusCode);
1679+
});
1680+
1681+
$get_2 = $multi_curl->addGet(Test::TEST_URL);
1682+
$get_2->complete(function ($instance) {
1683+
PHPUnit_Framework_Assert::assertEquals(CURLAUTH_DIGEST, $instance->getOpt(CURLOPT_HTTPAUTH));
1684+
PHPUnit_Framework_Assert::assertEquals('valid', $instance->response);
1685+
PHPUnit_Framework_Assert::assertEquals(200, $instance->httpStatusCode);
1686+
});
1687+
1688+
$multi_curl->start();
1689+
}
1690+
16151691
public function testCookies()
16161692
{
16171693
$data = array('key' => 'mycookie');

0 commit comments

Comments
 (0)