diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index d2b0a3a4c3863..618e65b2fa7d4 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -214,6 +214,131 @@ public function testGetUsersAsSubAdmin() { $this->assertEquals($expected, $this->api->getUsers('MyCustomSearch')->getData()); } + private function createUserMock(string $uid, bool $enabled): MockObject&IUser { + $mockUser = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $mockUser + ->method('getUID') + ->willReturn($uid); + $mockUser + ->method('isEnabled') + ->willReturn($enabled); + return $mockUser; + } + + public function testGetDisabledUsersAsAdmin(): void { + $loggedInUser = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $loggedInUser + ->expects($this->once()) + ->method('getUID') + ->willReturn('admin'); + $this->userSession + ->expects($this->atLeastOnce()) + ->method('getUser') + ->willReturn($loggedInUser); + $this->groupManager + ->expects($this->once()) + ->method('isAdmin') + ->willReturn(true); + $this->userManager + ->expects($this->once()) + ->method('getDisabledUsers') + ->with(3, 0, 'MyCustomSearch') + ->willReturn([ + $this->createUserMock('admin', false), + $this->createUserMock('foo', false), + $this->createUserMock('bar', false), + ]); + + $expected = [ + 'users' => [ + 'admin' => ['id' => 'admin'], + 'foo' => ['id' => 'foo'], + 'bar' => ['id' => 'bar'], + ], + ]; + $this->assertEquals($expected, $this->api->getDisabledUsersDetails('MyCustomSearch', 3)->getData()); + } + + public function testGetDisabledUsersAsSubAdmin(): void { + $loggedInUser = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $loggedInUser + ->expects($this->once()) + ->method('getUID') + ->willReturn('subadmin'); + $this->userSession + ->expects($this->atLeastOnce()) + ->method('getUser') + ->willReturn($loggedInUser); + $this->groupManager + ->expects($this->once()) + ->method('isAdmin') + ->willReturn(false); + $firstGroup = $this->getMockBuilder('OCP\IGroup') + ->disableOriginalConstructor() + ->getMock(); + $secondGroup = $this->getMockBuilder('OCP\IGroup') + ->disableOriginalConstructor() + ->getMock(); + $subAdminManager = $this->getMockBuilder('OC\SubAdmin') + ->disableOriginalConstructor()->getMock(); + $subAdminManager + ->expects($this->once()) + ->method('isSubAdmin') + ->with($loggedInUser) + ->willReturn(true); + $subAdminManager + ->expects($this->once()) + ->method('getSubAdminsGroups') + ->with($loggedInUser) + ->willReturn([$firstGroup, $secondGroup]); + $this->groupManager + ->expects($this->once()) + ->method('getSubAdmin') + ->willReturn($subAdminManager); + $this->groupManager + ->expects($this->never()) + ->method('displayNamesInGroup'); + + $firstGroup + ->expects($this->once()) + ->method('searchUsers') + ->with('MyCustomSearch') + ->willReturn([ + $this->createUserMock('user1', false), + $this->createUserMock('bob', true), + $this->createUserMock('user2', false), + $this->createUserMock('alice', true), + ]); + + $secondGroup + ->expects($this->once()) + ->method('searchUsers') + ->with('MyCustomSearch') + ->willReturn([ + $this->createUserMock('user2', false), + $this->createUserMock('joe', true), + $this->createUserMock('user3', false), + $this->createUserMock('jim', true), + $this->createUserMock('john', true), + ]); + + + $expected = [ + 'users' => [ + 'user1' => ['id' => 'user1'], + 'user2' => ['id' => 'user2'], + 'user3' => ['id' => 'user3'], + ], + ]; + $this->assertEquals($expected, $this->api->getDisabledUsersDetails('MyCustomSearch', 3)->getData()); + } + public function testAddUserAlreadyExisting() { $this->expectException(\OCP\AppFramework\OCS\OCSException::class);