Merge pull request #20093 from owncloud/ldap-fix-quota-and-case

LDAP fix quota and case, fixes #20043
This commit is contained in:
Thomas Müller 2015-10-28 09:31:04 +01:00
commit 0eeee8fdd8
4 changed files with 57 additions and 7 deletions

View file

@ -691,8 +691,9 @@ class Access extends LDAPUtility implements user\IUserTools {
* @param array $ldapRecords
*/
public function batchApplyUserAttributes(array $ldapRecords){
$displayNameAttribute = strtolower($this->connection->ldapUserDisplayName);
foreach($ldapRecords as $userRecord) {
$ocName = $this->dn2ocname($userRecord['dn'][0], $userRecord[$this->connection->ldapUserDisplayName]);
$ocName = $this->dn2ocname($userRecord['dn'][0], $userRecord[$displayNameAttribute]);
$this->cacheUserExists($ocName);
$user = $this->userManager->get($ocName);
$user->processAttributes($userRecord);

View file

@ -417,9 +417,9 @@ class User {
}
//can be null
$quotaDefault = $this->connection->ldapQuotaDefault;
$quota = !is_null($valueFromLDAP)
? $valueFromLDAP
: $quotaDefault !== '' ? $quotaDefault : null;
$quota = $quotaDefault !== '' ? $quotaDefault : null;
$quota = !is_null($valueFromLDAP) ? $valueFromLDAP : $quota;
if(is_null($valueFromLDAP)) {
$quotaAttribute = $this->connection->ldapQuotaAttribute;
if(!empty($quotaAttribute)) {

View file

@ -230,24 +230,34 @@ class Test_Access extends \Test\TestCase {
$mapperMock = $this->getMockBuilder('\OCA\User_LDAP\Mapping\UserMapping')
->disableOriginalConstructor()
->getMock();
$mapperMock->expects($this->any())
->method('getNameByDN')
->will($this->returnValue('a_username'));
$userMock = $this->getMockBuilder('\OCA\user_ldap\lib\user\User')
->disableOriginalConstructor()
->getMock();
$access->connection->expects($this->any())
->method('__get')
->will($this->returnValue('displayName'));
$access->setUserMapper($mapperMock);
$displayNameAttribute = strtolower($access->connection->ldapUserDisplayName);
$data = array(
array(
'dn' => 'foobar',
$con->ldapUserDisplayName => 'barfoo'
$displayNameAttribute => 'barfoo'
),
array(
'dn' => 'foo',
$con->ldapUserDisplayName => 'bar'
$displayNameAttribute => 'bar'
),
array(
'dn' => 'raboof',
$con->ldapUserDisplayName => 'oofrab'
$displayNameAttribute => 'oofrab'
)
);

View file

@ -370,6 +370,45 @@ class Test_User_User extends \Test\TestCase {
$user->updateQuota();
}
public function testUpdateQuotaFromValue() {
list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
$this->getTestInstances();
list($access, $connection) =
$this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
$readQuota = '19 GB';
$connection->expects($this->at(0))
->method('__get')
->with($this->equalTo('ldapQuotaDefault'))
->will($this->returnValue(''));
$connection->expects($this->once(1))
->method('__get')
->with($this->equalTo('ldapQuotaDefault'))
->will($this->returnValue(null));
$access->expects($this->never())
->method('readAttribute');
$config->expects($this->once())
->method('setUserValue')
->with($this->equalTo('alice'),
$this->equalTo('files'),
$this->equalTo('quota'),
$this->equalTo($readQuota))
->will($this->returnValue(true));
$uid = 'alice';
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
$uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
$user->updateQuota($readQuota);
}
//the testUpdateAvatar series also implicitely tests getAvatarImage
public function testUpdateAvatarJpegPhotoProvided() {
list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =