Merge pull request #11830 from nextcloud/bugfix/9326/make_sure_usermanager_getByEmail_only_returns_IUser
filter null values for UserManager::getByEmail
This commit is contained in:
commit
ad66b0f9ab
|
@ -591,8 +591,12 @@ class Manager extends PublicEmitter implements IUserManager {
|
||||||
public function getByEmail($email) {
|
public function getByEmail($email) {
|
||||||
$userIds = $this->config->getUsersForUserValue('settings', 'email', $email);
|
$userIds = $this->config->getUsersForUserValue('settings', 'email', $email);
|
||||||
|
|
||||||
return array_map(function($uid) {
|
$users = array_map(function($uid) {
|
||||||
return $this->get($uid);
|
return $this->get($uid);
|
||||||
}, $userIds);
|
}, $userIds);
|
||||||
|
|
||||||
|
return array_values(array_filter($users, function($u) {
|
||||||
|
return ($u instanceof IUser);
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -668,4 +668,37 @@ class ManagerTest extends TestCase {
|
||||||
$manager->get('foo')->delete();
|
$manager->get('foo')->delete();
|
||||||
$this->assertFalse($manager->userExists('foo'));
|
$this->assertFalse($manager->userExists('foo'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetByEmail() {
|
||||||
|
$config = $this->getMockBuilder(IConfig::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$config
|
||||||
|
->expects($this->at(0))
|
||||||
|
->method('getUsersForUserValue')
|
||||||
|
->with('settings', 'email', 'test@example.com')
|
||||||
|
->will($this->returnValue(['uid1', 'uid99', 'uid2']));
|
||||||
|
|
||||||
|
$backend = $this->createMock(\Test\Util\User\Dummy::class);
|
||||||
|
$backend->expects($this->at(0))
|
||||||
|
->method('userExists')
|
||||||
|
->with($this->equalTo('uid1'))
|
||||||
|
->will($this->returnValue(true));
|
||||||
|
$backend->expects($this->at(1))
|
||||||
|
->method('userExists')
|
||||||
|
->with($this->equalTo('uid99'))
|
||||||
|
->will($this->returnValue(false));
|
||||||
|
$backend->expects($this->at(2))
|
||||||
|
->method('userExists')
|
||||||
|
->with($this->equalTo('uid2'))
|
||||||
|
->will($this->returnValue(true));
|
||||||
|
|
||||||
|
$manager = new \OC\User\Manager($config);
|
||||||
|
$manager->registerBackend($backend);
|
||||||
|
|
||||||
|
$users = $manager->getByEmail('test@example.com');
|
||||||
|
$this->assertCount(2, $users);
|
||||||
|
$this->assertEquals('uid1', $users[0]->getUID());
|
||||||
|
$this->assertEquals('uid2', $users[1]->getUID());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue