Merge pull request #11976 from nextcloud/bugfix-stable14/9326/make_sure_usermanager_getByEmail_only_returns_IUser
[stable14] filter null values for UserManager::getByEmail
This commit is contained in:
commit
d9c080120e
|
@ -591,8 +591,12 @@ class Manager extends PublicEmitter implements IUserManager {
|
|||
public function getByEmail($email) {
|
||||
$userIds = $this->config->getUsersForUserValue('settings', 'email', $email);
|
||||
|
||||
return array_map(function($uid) {
|
||||
$users = array_map(function($uid) {
|
||||
return $this->get($uid);
|
||||
}, $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();
|
||||
$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