From c876b3c77bde656463dc036650a840440bcf40d3 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Tue, 9 Jul 2019 11:58:14 +0200 Subject: [PATCH 1/2] Return first value from $users Signed-off-by: Daniel Kesselberg --- core/Controller/LostController.php | 9 ++-- tests/Core/Controller/LostControllerTest.php | 51 +++++++++++--------- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/core/Controller/LostController.php b/core/Controller/LostController.php index f54f0636a5f..1d4a85f0bc3 100644 --- a/core/Controller/LostController.php +++ b/core/Controller/LostController.php @@ -49,6 +49,9 @@ use OCP\IUserManager; use OCP\Mail\IMailer; use OCP\Security\ICrypto; use OCP\Security\ISecureRandom; +use function array_filter; +use function count; +use function reset; /** * Class LostController @@ -383,12 +386,12 @@ class LostController extends Controller { return $user; } - $users = \array_filter($this->userManager->getByEmail($input), function (IUser $user) { + $users = array_filter($this->userManager->getByEmail($input), function (IUser $user) { return $user->isEnabled(); }); - if (\count($users) === 1) { - return $users[0]; + if (count($users) === 1) { + return reset($users); } throw $userNotFound; diff --git a/tests/Core/Controller/LostControllerTest.php b/tests/Core/Controller/LostControllerTest.php index de8e8cfbcef..e9d57f4f925 100644 --- a/tests/Core/Controller/LostControllerTest.php +++ b/tests/Core/Controller/LostControllerTest.php @@ -807,28 +807,38 @@ class LostControllerTest extends \Test\TestCase { $this->assertEquals($expectedResponse, $response); } - public function testTwoUsersWithSameEmailOneDisabled() { + + /** + * @return array + */ + public function dataTwoUserswithSameEmailOneDisabled(): array { + return [ + ['user1' => true, 'user2' => false], + ['user1' => false, 'user2' => true] + ]; + } + + /** + * @dataProvider dataTwoUserswithSameEmailOneDisabled + * @param bool $userEnabled1 + * @param bool $userEnabled2 + */ + public function testTwoUsersWithSameEmailOneDisabled(bool $userEnabled1, bool $userEnabled2): void { $user1 = $this->createMock(IUser::class); - $user1->expects($this->any()) - ->method('getEMailAddress') + $user1->method('getEMailAddress') ->willReturn('test@example.com'); - $user1->expects($this->any()) - ->method('getUID') + $user1->method('getUID') ->willReturn('User1'); - $user1->expects($this->any()) - ->method('isEnabled') - ->willReturn(true); + $user1->method('isEnabled') + ->willReturn($userEnabled1); $user2 = $this->createMock(IUser::class); - $user2->expects($this->any()) - ->method('getEMailAddress') + $user2->method('getEMailAddress') ->willReturn('test@example.com'); - $user2->expects($this->any()) - ->method('getUID') + $user2->method('getUID') ->willReturn('User2'); - $user2->expects($this->any()) - ->method('isEnabled') - ->willReturn(false); + $user2->method('isEnabled') + ->willReturn($userEnabled2); $this->userManager ->method('get') @@ -838,14 +848,7 @@ class LostControllerTest extends \Test\TestCase { ->method('getByEmail') ->willReturn([$user1, $user2]); - // request password reset for test@example.com - $response = $this->lostController->email('test@example.com'); - - $expectedResponse = new JSONResponse([ - 'status' => 'success' - ]); - $expectedResponse->throttle(); - - $this->assertEquals($expectedResponse, $response); + $result = self::invokePrivate($this->lostController, 'findUserByIdOrMail', ['test@example.com']); + $this->assertInstanceOf(IUser::class, $result); } } From 46d349ce2a2a492074bb90c252c9942b70716c32 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Wed, 10 Jul 2019 12:47:39 +0200 Subject: [PATCH 2/2] Remove void for php7.0 Signed-off-by: Daniel Kesselberg --- tests/Core/Controller/LostControllerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Core/Controller/LostControllerTest.php b/tests/Core/Controller/LostControllerTest.php index e9d57f4f925..60c225a2832 100644 --- a/tests/Core/Controller/LostControllerTest.php +++ b/tests/Core/Controller/LostControllerTest.php @@ -823,7 +823,7 @@ class LostControllerTest extends \Test\TestCase { * @param bool $userEnabled1 * @param bool $userEnabled2 */ - public function testTwoUsersWithSameEmailOneDisabled(bool $userEnabled1, bool $userEnabled2): void { + public function testTwoUsersWithSameEmailOneDisabled(bool $userEnabled1, bool $userEnabled2) { $user1 = $this->createMock(IUser::class); $user1->method('getEMailAddress') ->willReturn('test@example.com');