From ebee3543ce30a88ccb631796826b075676680cb9 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Thu, 10 Jul 2014 20:43:00 +0200 Subject: [PATCH 1/2] warn and continue gracefully if bcmath is not installed --- apps/user_ldap/lib/access.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index e3b6566bcf..1ffe4d236f 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -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 \Excpetion('missing bcmath module'); + } $srl = ord($sid[0]); $numberSubID = ord($sid[1]); $x = substr($sid, 2, 6); From 537468f4c4c8692a3dab4f911c505bee119acc55 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Fri, 11 Jul 2014 12:13:54 +0200 Subject: [PATCH 2/2] make tests deal with missing bcmath --- apps/user_ldap/lib/access.php | 2 +- apps/user_ldap/tests/access.php | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index 1ffe4d236f..23ba4253ed 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -1302,7 +1302,7 @@ class Access extends LDAPUtility implements user\IUserTools { \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 \Excpetion('missing bcmath module'); + throw new \Exception('missing bcmath module'); } $srl = ord($sid[0]); $numberSubID = ord($sid[1]); diff --git a/apps/user_ldap/tests/access.php b/apps/user_ldap/tests/access.php index 2ff7540b8e..e77aad769d 100644 --- a/apps/user_ldap/tests/access.php +++ b/apps/user_ldap/tests/access.php @@ -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);