Added unit test for new functionality
This commit is contained in:
parent
3b88c469c7
commit
fc1f0233ff
|
@ -120,8 +120,9 @@ class Users {
|
|||
$groups = isset($_POST['groups']) ? $_POST['groups'] : null;
|
||||
$user = $this->userSession->getUser();
|
||||
$isAdmin = $this->groupManager->isAdmin($user->getUID());
|
||||
$subAdminManager = $this->groupManager->getSubAdmin();
|
||||
|
||||
if (!$isAdmin && !$this->groupManager->getSubAdmin()->isSubAdmin($user)) {
|
||||
if (!$isAdmin && !$subAdminManager->isSubAdmin($user)) {
|
||||
return new OC_OCS_Result(null, \OCP\API::RESPOND_UNAUTHORISED);
|
||||
}
|
||||
|
||||
|
@ -131,11 +132,11 @@ class Users {
|
|||
}
|
||||
|
||||
if(is_array($groups)) {
|
||||
foreach ($groups as $key => $group) {
|
||||
foreach ($groups as $group) {
|
||||
if(!$this->groupManager->groupExists($group)){
|
||||
return new OC_OCS_Result(null, 104, 'group '.$group.' does not exist');
|
||||
}
|
||||
if(!$isAdmin && !$this->groupManager->getSubAdmin()->isSubAdminofGroup($user, $this->groupManager->get($group))) {
|
||||
if(!$isAdmin && !$subAdminManager->isSubAdminofGroup($user, $this->groupManager->get($group))) {
|
||||
return new OC_OCS_Result(null, 105, 'insufficient privileges for group '. $group);
|
||||
}
|
||||
}
|
||||
|
@ -146,13 +147,13 @@ class Users {
|
|||
}
|
||||
|
||||
try {
|
||||
$user = $this->userManager->createUser($userId, $password);
|
||||
$this->logger->info('Successful addUser call with userid: '.$_POST['userid'], ['app' => 'ocs_api']);
|
||||
$newUser = $this->userManager->createUser($userId, $password);
|
||||
$this->logger->info('Successful addUser call with userid: '.$userId, ['app' => 'ocs_api']);
|
||||
|
||||
if (is_array($groups)) {
|
||||
foreach ($groups as $group) {
|
||||
$this->groupManager->get($group)->addUser($user);
|
||||
$this->logger->info('Added user (' . $user->getUID() . ') to group ' . $group, ['app' => 'ocs_api']);
|
||||
$this->groupManager->get($group)->addUser($newUser);
|
||||
$this->logger->info('Added userid '.$userId.' to group '.$group, ['app' => 'ocs_api']);
|
||||
}
|
||||
}
|
||||
return new OC_OCS_Result(null, 100);
|
||||
|
|
|
@ -237,6 +237,76 @@ class UsersTest extends OriginalTest {
|
|||
$this->assertEquals($expected, $this->api->addUser());
|
||||
}
|
||||
|
||||
public function testAddUserNonExistingGroup() {
|
||||
$_POST['userid'] = 'NewUser';
|
||||
$_POST['groups'] = ['NonExistingGroup'];
|
||||
$this->userManager
|
||||
->expects($this->once())
|
||||
->method('userExists')
|
||||
->with('NewUser')
|
||||
->willReturn(false);
|
||||
$loggedInUser = $this->getMock('\OCP\IUser');
|
||||
$loggedInUser
|
||||
->expects($this->once())
|
||||
->method('getUID')
|
||||
->will($this->returnValue('adminUser'));
|
||||
$this->userSession
|
||||
->expects($this->once())
|
||||
->method('getUser')
|
||||
->will($this->returnValue($loggedInUser));
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('isAdmin')
|
||||
->with('adminUser')
|
||||
->willReturn(true);
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('groupExists')
|
||||
->with('NonExistingGroup')
|
||||
->willReturn(false);
|
||||
|
||||
$expected = new \OC_OCS_Result(null, 104, 'group NonExistingGroup does not exist');
|
||||
$this->assertEquals($expected, $this->api->addUser());
|
||||
}
|
||||
|
||||
public function testAddUserExistingGroupNonExistingGroup() {
|
||||
$_POST['userid'] = 'NewUser';
|
||||
$_POST['groups'] = ['ExistingGroup', 'NonExistingGroup'];
|
||||
$this->userManager
|
||||
->expects($this->once())
|
||||
->method('userExists')
|
||||
->with('NewUser')
|
||||
->willReturn(false);
|
||||
$loggedInUser = $this->getMock('\OCP\IUser');
|
||||
$loggedInUser
|
||||
->expects($this->once())
|
||||
->method('getUID')
|
||||
->will($this->returnValue('adminUser'));
|
||||
$this->userSession
|
||||
->expects($this->once())
|
||||
->method('getUser')
|
||||
->will($this->returnValue($loggedInUser));
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('isAdmin')
|
||||
->with('adminUser')
|
||||
->willReturn(true);
|
||||
$this->groupManager
|
||||
->expects($this->exactly(2))
|
||||
->method('groupExists')
|
||||
->withConsecutive(
|
||||
['ExistingGroup'],
|
||||
['NonExistingGroup']
|
||||
)
|
||||
->will($this->returnValueMap([
|
||||
['ExistingGroup', true],
|
||||
['NonExistingGroup', false]
|
||||
]));
|
||||
|
||||
$expected = new \OC_OCS_Result(null, 104, 'group NonExistingGroup does not exist');
|
||||
$this->assertEquals($expected, $this->api->addUser());
|
||||
}
|
||||
|
||||
public function testAddUserSuccessful() {
|
||||
$_POST['userid'] = 'NewUser';
|
||||
$_POST['password'] = 'PasswordOfTheNewUser';
|
||||
|
@ -272,6 +342,62 @@ class UsersTest extends OriginalTest {
|
|||
$this->assertEquals($expected, $this->api->addUser());
|
||||
}
|
||||
|
||||
public function testAddUserExistingGroup() {
|
||||
$_POST['userid'] = 'NewUser';
|
||||
$_POST['password'] = 'PasswordOfTheNewUser';
|
||||
$_POST['groups'] = ['ExistingGroup'];
|
||||
$this->userManager
|
||||
->expects($this->once())
|
||||
->method('userExists')
|
||||
->with('NewUser')
|
||||
->willReturn(false);
|
||||
$loggedInUser = $this->getMock('\OCP\IUser');
|
||||
$loggedInUser
|
||||
->expects($this->once())
|
||||
->method('getUID')
|
||||
->will($this->returnValue('adminUser'));
|
||||
$this->userSession
|
||||
->expects($this->once())
|
||||
->method('getUser')
|
||||
->will($this->returnValue($loggedInUser));
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('isAdmin')
|
||||
->with('adminUser')
|
||||
->willReturn(true);
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('groupExists')
|
||||
->with('ExistingGroup')
|
||||
->willReturn(true);
|
||||
$user = $this->getMock('\OCP\IUser');
|
||||
$this->userManager
|
||||
->expects($this->once())
|
||||
->method('createUser')
|
||||
->with('NewUser', 'PasswordOfTheNewUser')
|
||||
->willReturn($user);
|
||||
$group = $this->getMock('\OCP\IGroup');
|
||||
$group
|
||||
->expects($this->once())
|
||||
->method('addUser')
|
||||
->with($user);
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('get')
|
||||
->with('ExistingGroup')
|
||||
->willReturn($group);
|
||||
$this->logger
|
||||
->expects($this->exactly(2))
|
||||
->method('info')
|
||||
->withConsecutive(
|
||||
['Successful addUser call with userid: NewUser', ['app' => 'ocs_api']],
|
||||
['Added userid NewUser to group ExistingGroup', ['app' => 'ocs_api']]
|
||||
);
|
||||
|
||||
$expected = new \OC_OCS_Result(null, 100);
|
||||
$this->assertEquals($expected, $this->api->addUser());
|
||||
}
|
||||
|
||||
public function testAddUserUnsuccessful() {
|
||||
$_POST['userid'] = 'NewUser';
|
||||
$_POST['password'] = 'PasswordOfTheNewUser';
|
||||
|
@ -308,6 +434,219 @@ class UsersTest extends OriginalTest {
|
|||
$this->assertEquals($expected, $this->api->addUser());
|
||||
}
|
||||
|
||||
public function testAddUserAsRegularUser() {
|
||||
$_POST['userid'] = 'NewUser';
|
||||
$_POST['password'] = 'PasswordOfTheNewUser';
|
||||
$loggedInUser = $this->getMock('\OCP\IUser');
|
||||
$loggedInUser
|
||||
->expects($this->once())
|
||||
->method('getUID')
|
||||
->will($this->returnValue('regularUser'));
|
||||
$this->userSession
|
||||
->expects($this->once())
|
||||
->method('getUser')
|
||||
->will($this->returnValue($loggedInUser));
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('isAdmin')
|
||||
->with('regularUser')
|
||||
->willReturn(false);
|
||||
$subAdminManager = $this->getMockBuilder('\OC\Subadmin')
|
||||
->disableOriginalConstructor()->getMock();
|
||||
$subAdminManager
|
||||
->expects($this->once())
|
||||
->method('isSubAdmin')
|
||||
->with($loggedInUser)
|
||||
->willReturn(false);
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('getSubAdmin')
|
||||
->with()
|
||||
->willReturn($subAdminManager);
|
||||
|
||||
$expected = new \OC_OCS_Result(null, \OCP\API::RESPOND_UNAUTHORISED);
|
||||
$this->assertEquals($expected, $this->api->addUser());
|
||||
}
|
||||
|
||||
public function testAddUserAsSubAdminNoGroup() {
|
||||
$_POST['userid'] = 'NewUser';
|
||||
$_POST['password'] = 'PasswordOfTheNewUser';
|
||||
$loggedInUser = $this->getMock('\OCP\IUser');
|
||||
$loggedInUser
|
||||
->expects($this->once())
|
||||
->method('getUID')
|
||||
->will($this->returnValue('regularUser'));
|
||||
$this->userSession
|
||||
->expects($this->once())
|
||||
->method('getUser')
|
||||
->will($this->returnValue($loggedInUser));
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('isAdmin')
|
||||
->with('regularUser')
|
||||
->willReturn(false);
|
||||
$subAdminManager = $this->getMockBuilder('\OC\Subadmin')
|
||||
->disableOriginalConstructor()->getMock();
|
||||
$subAdminManager
|
||||
->expects($this->once())
|
||||
->method('isSubAdmin')
|
||||
->with($loggedInUser)
|
||||
->willReturn(true);
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('getSubAdmin')
|
||||
->with()
|
||||
->willReturn($subAdminManager);
|
||||
|
||||
$expected = new \OC_OCS_Result(null, 106, 'no group specified (required for subadmins)');
|
||||
$this->assertEquals($expected, $this->api->addUser());
|
||||
}
|
||||
|
||||
public function testAddUserAsSubAdminValidGroupNotSubAdmin() {
|
||||
$_POST['userid'] = 'NewUser';
|
||||
$_POST['password'] = 'PasswordOfTheNewUser';
|
||||
$_POST['groups'] = ['ExistingGroup'];
|
||||
$loggedInUser = $this->getMock('\OCP\IUser');
|
||||
$loggedInUser
|
||||
->expects($this->once())
|
||||
->method('getUID')
|
||||
->will($this->returnValue('regularUser'));
|
||||
$this->userSession
|
||||
->expects($this->once())
|
||||
->method('getUser')
|
||||
->will($this->returnValue($loggedInUser));
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('isAdmin')
|
||||
->with('regularUser')
|
||||
->willReturn(false);
|
||||
$existingGroup = $this->getMock('\OCP\IGroup');
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('get')
|
||||
->with('ExistingGroup')
|
||||
->willReturn($existingGroup);
|
||||
$subAdminManager = $this->getMockBuilder('\OC\Subadmin')
|
||||
->disableOriginalConstructor()->getMock();
|
||||
$subAdminManager
|
||||
->expects($this->once())
|
||||
->method('isSubAdmin')
|
||||
->with($loggedInUser)
|
||||
->willReturn(true);
|
||||
$subAdminManager
|
||||
->expects($this->once())
|
||||
->method('isSubAdminOfGroup')
|
||||
->with($loggedInUser, $existingGroup)
|
||||
->wilLReturn(false);
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('getSubAdmin')
|
||||
->with()
|
||||
->willReturn($subAdminManager);
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('groupExists')
|
||||
->with('ExistingGroup')
|
||||
->willReturn(true);
|
||||
|
||||
$expected = new \OC_OCS_Result(null, 105, 'insufficient privileges for group ExistingGroup');
|
||||
$this->assertEquals($expected, $this->api->addUser());
|
||||
}
|
||||
|
||||
public function testAddUserAsSubAdminExistingGroups() {
|
||||
$_POST['userid'] = 'NewUser';
|
||||
$_POST['password'] = 'PasswordOfTheNewUser';
|
||||
$_POST['groups'] = ['ExistingGroup1', 'ExistingGroup2'];
|
||||
$this->userManager
|
||||
->expects($this->once())
|
||||
->method('userExists')
|
||||
->with('NewUser')
|
||||
->willReturn(false);
|
||||
$loggedInUser = $this->getMock('\OCP\IUser');
|
||||
$loggedInUser
|
||||
->expects($this->once())
|
||||
->method('getUID')
|
||||
->will($this->returnValue('subAdminUser'));
|
||||
$this->userSession
|
||||
->expects($this->once())
|
||||
->method('getUser')
|
||||
->will($this->returnValue($loggedInUser));
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('isAdmin')
|
||||
->with('subAdminUser')
|
||||
->willReturn(false);
|
||||
$this->groupManager
|
||||
->expects($this->exactly(2))
|
||||
->method('groupExists')
|
||||
->withConsecutive(
|
||||
['ExistingGroup1'],
|
||||
['ExistingGroup2']
|
||||
)
|
||||
->willReturn(true);
|
||||
$user = $this->getMock('\OCP\IUser');
|
||||
$this->userManager
|
||||
->expects($this->once())
|
||||
->method('createUser')
|
||||
->with('NewUser', 'PasswordOfTheNewUser')
|
||||
->willReturn($user);
|
||||
$existingGroup1 = $this->getMock('\OCP\IGroup');
|
||||
$existingGroup2 = $this->getMock('\OCP\IGroup');
|
||||
$existingGroup1
|
||||
->expects($this->once())
|
||||
->method('addUser')
|
||||
->with($user);
|
||||
$existingGroup2
|
||||
->expects($this->once())
|
||||
->method('addUser')
|
||||
->with($user);
|
||||
$this->groupManager
|
||||
->expects($this->exactly(4))
|
||||
->method('get')
|
||||
->withConsecutive(
|
||||
['ExistingGroup1'],
|
||||
['ExistingGroup2'],
|
||||
['ExistingGroup1'],
|
||||
['ExistingGroup2']
|
||||
)
|
||||
->will($this->returnValueMap([
|
||||
['ExistingGroup1', $existingGroup1],
|
||||
['ExistingGroup2', $existingGroup2]
|
||||
]));
|
||||
$this->logger
|
||||
->expects($this->exactly(3))
|
||||
->method('info')
|
||||
->withConsecutive(
|
||||
['Successful addUser call with userid: NewUser', ['app' => 'ocs_api']],
|
||||
['Added userid NewUser to group ExistingGroup1', ['app' => 'ocs_api']],
|
||||
['Added userid NewUser to group ExistingGroup2', ['app' => 'ocs_api']]
|
||||
);
|
||||
$subAdminManager = $this->getMockBuilder('\OC\Subadmin')
|
||||
->disableOriginalConstructor()->getMock();
|
||||
$this->groupManager
|
||||
->expects($this->once())
|
||||
->method('getSubAdmin')
|
||||
->willReturn($subAdminManager);
|
||||
$subAdminManager
|
||||
->expects($this->once())
|
||||
->method('isSubAdmin')
|
||||
->with($loggedInUser)
|
||||
->willReturn(true);
|
||||
$subAdminManager
|
||||
->expects($this->exactly(2))
|
||||
->method('isSubAdminOfGroup')
|
||||
->withConsecutive(
|
||||
[$loggedInUser, $existingGroup1],
|
||||
[$loggedInUser, $existingGroup2]
|
||||
)
|
||||
->wilLReturn(true);
|
||||
|
||||
|
||||
$expected = new \OC_OCS_Result(null, 100);
|
||||
$this->assertEquals($expected, $this->api->addUser());
|
||||
}
|
||||
|
||||
|
||||
public function testGetUserNotLoggedIn() {
|
||||
$this->userSession
|
||||
->expects($this->once())
|
||||
|
|
Loading…
Reference in New Issue