diff options
author | blizzz <blizzz@arthur-schiwon.de> | 2019-06-21 11:08:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-21 11:08:59 +0200 |
commit | c1eff72bdf91df623bb377967270befd5c1594f9 (patch) | |
tree | ec79e8297f225212bebbf3ef64b1e2e6106f937f /apps/provisioning_api/tests/Controller/UsersControllerTest.php | |
parent | 08734326da2bf8aef1856129ac547e6d4358d805 (diff) | |
parent | 29449f85b688deb1f103f3f67993475a040b4d80 (diff) | |
download | nextcloud-server-c1eff72bdf91df623bb377967270befd5c1594f9.tar.gz nextcloud-server-c1eff72bdf91df623bb377967270befd5c1594f9.zip |
Merge pull request #15964 from nextcloud/enh/noid/user-creation-options
Opt-in for generation userid, requiring email addresses
Diffstat (limited to 'apps/provisioning_api/tests/Controller/UsersControllerTest.php')
-rw-r--r-- | apps/provisioning_api/tests/Controller/UsersControllerTest.php | 159 |
1 files changed, 155 insertions, 4 deletions
diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index 7a7f0144524..63f9d4c376a 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -356,7 +356,10 @@ class UsersControllerTest extends TestCase { ->with('adminUser') ->willReturn(true); - $this->assertEquals([], $this->api->addUser('NewUser', 'PasswordOfTheNewUser')->getData()); + $this->assertTrue(key_exists( + 'UserID', + $this->api->addUser('NewUser', 'PasswordOfTheNewUser')->getData() + )); } public function testAddUserSuccessfulWithDisplayName() { @@ -413,7 +416,149 @@ class UsersControllerTest extends TestCase { ->method('editUser') ->with('NewUser', 'display', 'DisplayNameOfTheNewUser'); - $this->assertEquals([], $api->addUser('NewUser', 'PasswordOfTheNewUser', 'DisplayNameOfTheNewUser')->getData()); + $this->assertTrue(key_exists( + 'UserID', + $api->addUser('NewUser', 'PasswordOfTheNewUser', 'DisplayNameOfTheNewUser')->getData() + )); + } + + public function testAddUserSuccessfulGenerateUserID() { + $this->config + ->expects($this->any()) + ->method('getAppValue') + ->willReturnCallback(function($appid, $key, $default) { + if($key === 'newUser.generateUserID') { + return 'yes'; + } + return null; + }); + $this->userManager + ->expects($this->any()) + ->method('userExists') + ->with($this->anything()) + ->will($this->returnValue(false)); + $this->userManager + ->expects($this->once()) + ->method('createUser') + ->with($this->anything(), 'PasswordOfTheNewUser'); + $this->logger + ->expects($this->once()) + ->method('info') + ->with($this->stringStartsWith('Successful addUser call with userid: '), ['app' => 'ocs_api']); + $loggedInUser = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $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->secureRandom->expects($this->any()) + ->method('generate') + ->with(10) + ->willReturnCallback(function() { return (string)rand(1000000000, 9999999999); }); + + $this->assertTrue(key_exists( + 'UserID', + $this->api->addUser('', 'PasswordOfTheNewUser')->getData() + )); + } + + /** + * @expectedException \OCP\AppFramework\OCS\OCSException + * @expectedExceptionCode 111 + * @expectedExceptionMessage Could not create non-existing user id + */ + public function testAddUserFailedToGenerateUserID() { + $this->config + ->expects($this->any()) + ->method('getAppValue') + ->willReturnCallback(function($appid, $key, $default) { + if($key === 'newUser.generateUserID') { + return 'yes'; + } + return null; + }); + $this->userManager + ->expects($this->any()) + ->method('userExists') + ->with($this->anything()) + ->will($this->returnValue(true)); + $this->userManager + ->expects($this->never()) + ->method('createUser'); + $loggedInUser = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $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->api->addUser('', 'PasswordOfTheNewUser')->getData(); + } + + /** + * @expectedException \OCP\AppFramework\OCS\OCSException + * @expectedExceptionCode 110 + * @expectedExceptionMessage Required email address was not provided + */ + public function testAddUserEmailRequired() { + $this->config + ->expects($this->any()) + ->method('getAppValue') + ->willReturnCallback(function($appid, $key, $default) { + if($key === 'newUser.requireEmail') { + return 'yes'; + } + return null; + }); + $this->userManager + ->expects($this->once()) + ->method('userExists') + ->with('NewUser') + ->will($this->returnValue(false)); + $this->userManager + ->expects($this->never()) + ->method('createUser'); + $loggedInUser = $this->getMockBuilder(IUser::class) + ->disableOriginalConstructor() + ->getMock(); + $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->assertTrue(key_exists( + 'UserID', + $this->api->addUser('NewUser', 'PasswordOfTheNewUser')->getData() + )); } public function testAddUserExistingGroup() { @@ -471,7 +616,10 @@ class UsersControllerTest extends TestCase { ['Added userid NewUser to group ExistingGroup', ['app' => 'ocs_api']] ); - $this->assertEquals([], $this->api->addUser('NewUser', 'PasswordOfTheNewUser', '', '', ['ExistingGroup'])->getData()); + $this->assertTrue(key_exists( + 'UserID', + $this->api->addUser('NewUser', 'PasswordOfTheNewUser', '', '', ['ExistingGroup'])->getData() + )); } /** @@ -689,7 +837,10 @@ class UsersControllerTest extends TestCase { ) ->willReturn(true); - $this->assertEquals([], $this->api->addUser('NewUser', 'PasswordOfTheNewUser', '', '', ['ExistingGroup1', 'ExistingGroup2'])->getData()); + $this->assertTrue(key_exists( + 'UserID', + $this->api->addUser('NewUser', 'PasswordOfTheNewUser', '', '', ['ExistingGroup1', 'ExistingGroup2'])->getData() + )); } /** |