Merge pull request #9576 from owncloud/bcmath-check

LDAP Active Directory Primary Groups support depends on bcmath module
This commit is contained in:
blizzz 2014-07-18 19:15:36 +02:00
commit 1d520108c5
2 changed files with 35 additions and 0 deletions

View File

@ -1298,6 +1298,12 @@ class Access extends LDAPUtility implements user\IUserTools {
*/
public function convertSID2Str($sid) {
try {
if(!function_exists('bcadd')) {
\OCP\Util::writeLog('user_ldap',
'You need to install bcmath module for PHP to have support ' .
'for AD primary groups', \OCP\Util::WARN);
throw new \Exception('missing bcmath module');
}
$srl = ord($sid[0]);
$numberSubID = ord($sid[1]);
$x = substr($sid, 2, 6);

View File

@ -82,6 +82,10 @@ class Test_Access extends \PHPUnit_Framework_TestCase {
list($lw, $con, $um) = $this->getConnecterAndLdapMock();
$access = new Access($con, $lw, $um);
if(!function_exists('\bcadd')) {
$this->markTestSkipped('bcmath not available');
}
$sidBinary = file_get_contents(__DIR__ . '/data/sid.dat');
$sidExpected = 'S-1-5-21-249921958-728525901-1594176202';
@ -92,12 +96,37 @@ class Test_Access extends \PHPUnit_Framework_TestCase {
list($lw, $con, $um) = $this->getConnecterAndLdapMock();
$access = new Access($con, $lw, $um);
if(!function_exists('\bcadd')) {
$this->markTestSkipped('bcmath not available');
}
$sidIllegal = 'foobar';
$sidExpected = '';
$this->assertSame($sidExpected, $access->convertSID2Str($sidIllegal));
}
public function testConvertSID2StrNoBCMath() {
if(function_exists('\bcadd')) {
$removed = false;
if(function_exists('runkit_function_remove')) {
$removed = !runkit_function_remove('\bcadd');
}
if(!$removed) {
$this->markTestSkipped('bcadd could not be removed for ' .
'testing without bcmath');
}
}
list($lw, $con, $um) = $this->getConnecterAndLdapMock();
$access = new Access($con, $lw, $um);
$sidBinary = file_get_contents(__DIR__ . '/data/sid.dat');
$sidExpected = '';
$this->assertSame($sidExpected, $access->convertSID2Str($sidBinary));
}
public function testGetDomainDNFromDNSuccess() {
list($lw, $con, $um) = $this->getConnecterAndLdapMock();
$access = new Access($con, $lw, $um);