]> source.dussan.org Git - nextcloud-server.git/commitdiff
chore(provisioning_api): Add tests for getDisabledUserDetails
authorCôme Chilliet <come.chilliet@nextcloud.com>
Thu, 17 Oct 2024 13:43:57 +0000 (15:43 +0200)
committerGit'Fellow <12234510+solracsf@users.noreply.github.com>
Thu, 31 Oct 2024 06:51:25 +0000 (07:51 +0100)
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
apps/provisioning_api/tests/Controller/UsersControllerTest.php

index 5c4493b9e773e223d20c79079b16b1749e1dce32..dfd9291ad15c53c080f711753de436697f3db30b 100644 (file)
@@ -248,6 +248,131 @@ class UsersControllerTest extends TestCase {
                $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);