diff options
Diffstat (limited to 'apps/provisioning_api/tests/Controller/UsersControllerTest.php')
-rw-r--r-- | apps/provisioning_api/tests/Controller/UsersControllerTest.php | 214 |
1 files changed, 206 insertions, 8 deletions
diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index 61205b45900..c712cd7485d 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -33,6 +33,7 @@ use Exception; use OC\Accounts\AccountManager; use OC\Group\Manager; use OCP\App\IAppManager; +use OCP\AppFramework\OCS\OCSException; use OCP\Mail\IEMailTemplate; use OC\Settings\Mailer\NewUserMailHelper; use OC\SubAdmin; @@ -699,6 +700,11 @@ class UsersControllerTest extends TestCase { ->method('getUserValue') ->with('UID', 'core', 'enabled', 'true') ->will($this->returnValue('true')); + $this->config + ->expects($this->at(1)) + ->method('getUserValue') + ->with('UID', 'core', 'lang') + ->will($this->returnValue('de')); $this->api ->expects($this->once()) ->method('fillStorageInfo') @@ -709,7 +715,7 @@ class UsersControllerTest extends TestCase { ->method('getDisplayName') ->will($this->returnValue('Demo User')); $targetUser - ->expects($this->exactly(3)) + ->expects($this->exactly(4)) ->method('getUID') ->will($this->returnValue('UID')); @@ -723,7 +729,8 @@ class UsersControllerTest extends TestCase { 'address' => 'address', 'website' => 'website', 'twitter' => 'twitter', - 'groups' => ['group0', 'group1', 'group2'] + 'groups' => ['group0', 'group1', 'group2'], + 'language' => 'de', ]; $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UserToGet'])); } @@ -778,6 +785,11 @@ class UsersControllerTest extends TestCase { ->method('getUserValue') ->with('UID', 'core', 'enabled', 'true') ->will($this->returnValue('true')); + $this->config + ->expects($this->at(1)) + ->method('getUserValue') + ->with('UID', 'core', 'lang') + ->will($this->returnValue('da')); $this->api ->expects($this->once()) ->method('fillStorageInfo') @@ -788,7 +800,7 @@ class UsersControllerTest extends TestCase { ->method('getDisplayName') ->will($this->returnValue('Demo User')); $targetUser - ->expects($this->exactly(3)) + ->expects($this->exactly(4)) ->method('getUID') ->will($this->returnValue('UID')); $this->accountManager->expects($this->any())->method('getUser') @@ -812,7 +824,8 @@ class UsersControllerTest extends TestCase { 'address' => 'address', 'website' => 'website', 'twitter' => 'twitter', - 'groups' => [] + 'groups' => [], + 'language' => 'da', ]; $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UserToGet'])); } @@ -918,9 +931,14 @@ class UsersControllerTest extends TestCase { ->method('getEMailAddress') ->will($this->returnValue('subadmin@owncloud.org')); $targetUser - ->expects($this->exactly(3)) + ->expects($this->exactly(4)) ->method('getUID') ->will($this->returnValue('UID')); + $this->config + ->expects($this->at(0)) + ->method('getUserValue') + ->with('UID', 'core', 'lang') + ->will($this->returnValue('ru')); $this->accountManager->expects($this->any())->method('getUser') ->with($targetUser) ->willReturn( @@ -941,7 +959,8 @@ class UsersControllerTest extends TestCase { 'address' => 'address', 'website' => 'website', 'twitter' => 'twitter', - 'groups' => [] + 'groups' => [], + 'language' => 'ru', ]; $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['subadmin'])); } @@ -1128,7 +1147,7 @@ class UsersControllerTest extends TestCase { ->with('UserToEdit') ->will($this->returnValue($targetUser)); $this->groupManager - ->expects($this->once()) + ->expects($this->exactly(2)) ->method('isAdmin') ->with('UID') ->will($this->returnValue(true)); @@ -1163,7 +1182,7 @@ class UsersControllerTest extends TestCase { ->with('UserToEdit') ->will($this->returnValue($targetUser)); $this->groupManager - ->expects($this->once()) + ->expects($this->exactly(2)) ->method('isAdmin') ->with('UID') ->will($this->returnValue(true)); @@ -1214,6 +1233,185 @@ class UsersControllerTest extends TestCase { $this->assertEquals([], $this->api->editUser('UserToEdit', 'quota', '3042824')->getData()); } + public function testEditUserSelfEditChangeLanguage() { + + $this->l10nFactory->expects($this->once()) + ->method('findAvailableLanguages') + ->willReturn(['en', 'de', 'sv']); + $this->config->expects($this->any()) + ->method('getSystemValue') + ->willReturnMap([ + ['allow_user_to_change_display_name', true, true], + ['force_language', false, false], + ]); + + $loggedInUser = $this->createMock(IUser::class); + $loggedInUser + ->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('UserToEdit')); + $targetUser = $this->createMock(IUser::class); + $this->config->expects($this->once()) + ->method('setUserValue') + ->with('UserToEdit', 'core', 'lang', 'de'); + $this->userSession + ->expects($this->once()) + ->method('getUser') + ->will($this->returnValue($loggedInUser)); + $this->userManager + ->expects($this->once()) + ->method('get') + ->with('UserToEdit') + ->will($this->returnValue($targetUser)); + $this->groupManager + ->expects($this->atLeastOnce()) + ->method('isAdmin') + ->with('UserToEdit') + ->will($this->returnValue(false)); + $targetUser + ->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('UserToEdit')); + + $this->assertEquals([], $this->api->editUser('UserToEdit', 'language', 'de')->getData()); + } + + public function dataEditUserSelfEditChangeLanguageButForced() { + return [ + ['de'], + [true], + ]; + } + + /** + * @dataProvider dataEditUserSelfEditChangeLanguageButForced + * @expectedException \OCP\AppFramework\OCS\OCSException + */ + public function testEditUserSelfEditChangeLanguageButForced($forced) { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->willReturnMap([ + ['allow_user_to_change_display_name', true, true], + ['force_language', false, $forced], + ]); + + $loggedInUser = $this->createMock(IUser::class); + $loggedInUser + ->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('UserToEdit')); + $targetUser = $this->createMock(IUser::class); + $this->config->expects($this->never()) + ->method('setUserValue'); + $this->userSession + ->expects($this->once()) + ->method('getUser') + ->will($this->returnValue($loggedInUser)); + $this->userManager + ->expects($this->once()) + ->method('get') + ->with('UserToEdit') + ->will($this->returnValue($targetUser)); + $this->groupManager + ->expects($this->atLeastOnce()) + ->method('isAdmin') + ->with('UserToEdit') + ->will($this->returnValue(false)); + $targetUser + ->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('UserToEdit')); + + $this->assertEquals([], $this->api->editUser('UserToEdit', 'language', 'de')->getData()); + } + + public function testEditUserAdminEditChangeLanguage() { + + $this->l10nFactory->expects($this->once()) + ->method('findAvailableLanguages') + ->willReturn(['en', 'de', 'sv']); + + $loggedInUser = $this->createMock(IUser::class); + $loggedInUser + ->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('admin')); + $targetUser = $this->createMock(IUser::class); + $this->config->expects($this->once()) + ->method('setUserValue') + ->with('UserToEdit', 'core', 'lang', 'de'); + $this->userSession + ->expects($this->once()) + ->method('getUser') + ->will($this->returnValue($loggedInUser)); + $this->userManager + ->expects($this->once()) + ->method('get') + ->with('UserToEdit') + ->will($this->returnValue($targetUser)); + $this->groupManager + ->expects($this->once()) + ->method('isAdmin') + ->with('admin') + ->will($this->returnValue(true)); + $subAdminManager = $this->createMock(SubAdmin::class); + $this->groupManager + ->expects($this->once()) + ->method('getSubAdmin') + ->will($this->returnValue($subAdminManager)); + $targetUser + ->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('UserToEdit')); + + $this->assertEquals([], $this->api->editUser('UserToEdit', 'language', 'de')->getData()); + } + + /** + * @dataProvider dataEditUserSelfEditChangeLanguageButForced + * @expectedException \OCP\AppFramework\OCS\OCSException + */ + public function testEditUserAdminEditChangeLanguageInvalidLanguage() { + + $this->l10nFactory->expects($this->once()) + ->method('findAvailableLanguages') + ->willReturn(['en', 'de', 'sv']); + + $loggedInUser = $this->createMock(IUser::class); + $loggedInUser + ->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('admin')); + $targetUser = $this->createMock(IUser::class); + $this->config->expects($this->never()) + ->method('setUserValue'); + $this->userSession + ->expects($this->once()) + ->method('getUser') + ->will($this->returnValue($loggedInUser)); + $this->userManager + ->expects($this->once()) + ->method('get') + ->with('UserToEdit') + ->will($this->returnValue($targetUser)); + $this->groupManager + ->expects($this->once()) + ->method('isAdmin') + ->with('admin') + ->will($this->returnValue(true)); + $subAdminManager = $this->createMock(SubAdmin::class); + $this->groupManager + ->expects($this->once()) + ->method('getSubAdmin') + ->will($this->returnValue($subAdminManager)); + $targetUser + ->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('UserToEdit')); + + $this->assertEquals([], $this->api->editUser('UserToEdit', 'language', 'ru')->getData()); + } + public function testEditUserSubadminUserAccessible() { $loggedInUser = $this->getMockBuilder('\OCP\IUser')->disableOriginalConstructor()->getMock(); $loggedInUser |