summaryrefslogtreecommitdiffstats
path: root/apps/provisioning_api/tests/Controller
diff options
context:
space:
mode:
Diffstat (limited to 'apps/provisioning_api/tests/Controller')
-rw-r--r--apps/provisioning_api/tests/Controller/UsersControllerTest.php214
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