summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDaniel Kesselberg <mail@danielkesselberg.de>2018-08-18 16:51:59 +0200
committerDaniel Kesselberg <mail@danielkesselberg.de>2018-08-19 16:32:46 +0200
commit031fdfb1fc3b99c7a7dd93ee20fe000e9cf7fda6 (patch)
tree1e6b38849ce63611557037d2d804f6a22c722fc4 /tests
parent4b71df7b15e50815e060da73bb73b7d54dc06333 (diff)
downloadnextcloud-server-031fdfb1fc3b99c7a7dd93ee20fe000e9cf7fda6.tar.gz
nextcloud-server-031fdfb1fc3b99c7a7dd93ee20fe000e9cf7fda6.zip
Enable password reset for user with same email address when only one is active
When two or more user share the same email address its not possible to reset password by email. Even when only one account is active. This pr reduce list of users returned by getByEmail by disabled users. Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/Core/Controller/LostControllerTest.php84
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/Core/Controller/LostControllerTest.php b/tests/Core/Controller/LostControllerTest.php
index d6afa5959a0..682229111e0 100644
--- a/tests/Core/Controller/LostControllerTest.php
+++ b/tests/Core/Controller/LostControllerTest.php
@@ -759,4 +759,88 @@ class LostControllerTest extends \Test\TestCase {
$this->assertSame($expectedResponse, $response);
}
+ public function testTwoUsersWithSameEmail() {
+ $user1 = $this->createMock(IUser::class);
+ $user1->expects($this->any())
+ ->method('getEMailAddress')
+ ->willReturn('test@example.com');
+ $user1->expects($this->any())
+ ->method('getUID')
+ ->willReturn('User1');
+ $user1->expects($this->any())
+ ->method('isEnabled')
+ ->willReturn(true);
+
+ $user2 = $this->createMock(IUser::class);
+ $user2->expects($this->any())
+ ->method('getEMailAddress')
+ ->willReturn('test@example.com');
+ $user2->expects($this->any())
+ ->method('getUID')
+ ->willReturn('User2');
+ $user2->expects($this->any())
+ ->method('isEnabled')
+ ->willReturn(true);
+
+ $this->userManager
+ ->method('get')
+ ->willReturn(null);
+
+ $this->userManager
+ ->method('getByEmail')
+ ->willReturn([$user1, $user2]);
+
+ // request password reset for test@example.com
+ $response = $this->lostController->email('test@example.com');
+
+ $expectedResponse = new JSONResponse([
+ 'status' => 'error',
+ 'msg' => 'Couldn\'t send reset email. Please make sure your username is correct.'
+ ]);
+ $expectedResponse->throttle();
+
+ $this->assertEquals($expectedResponse, $response);
+ }
+
+ public function testTwoUsersWithSameEmailOneDisabled() {
+ $user1 = $this->createMock(IUser::class);
+ $user1->expects($this->any())
+ ->method('getEMailAddress')
+ ->willReturn('test@example.com');
+ $user1->expects($this->any())
+ ->method('getUID')
+ ->willReturn('User1');
+ $user1->expects($this->any())
+ ->method('isEnabled')
+ ->willReturn(true);
+
+ $user2 = $this->createMock(IUser::class);
+ $user2->expects($this->any())
+ ->method('getEMailAddress')
+ ->willReturn('test@example.com');
+ $user2->expects($this->any())
+ ->method('getUID')
+ ->willReturn('User2');
+ $user2->expects($this->any())
+ ->method('isEnabled')
+ ->willReturn(false);
+
+ $this->userManager
+ ->method('get')
+ ->willReturn(null);
+
+ $this->userManager
+ ->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);
+ }
}