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);
+ }));
}
}
$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());
+ }
}