chore(provisioning_api): Add tests for getDisabledUserDetails

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2024-10-17 15:43:57 +02:00 committed by backportbot[bot]
parent a9dd34ab35
commit b2b1be0475

View file

@ -214,6 +214,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);