summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2021-01-29 21:21:54 +0100
committerDaniel Calviño Sánchez <danxuliu@gmail.com>2021-04-23 16:53:09 +0200
commitc130b880043214fc2e2730ec189603671f24599f (patch)
tree1b4731dfbdf5b4269f1d8dcb50a61e63a7cfa798 /apps
parentf2e40238a6e168a1f5412a8aca4c36ecdd5f85eb (diff)
downloadnextcloud-server-c130b880043214fc2e2730ec189603671f24599f.tar.gz
nextcloud-server-c130b880043214fc2e2730ec189603671f24599f.zip
Add more unit tests for setting user settings
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Diffstat (limited to 'apps')
-rw-r--r--apps/settings/tests/Controller/UsersControllerTest.php145
1 files changed, 145 insertions, 0 deletions
diff --git a/apps/settings/tests/Controller/UsersControllerTest.php b/apps/settings/tests/Controller/UsersControllerTest.php
index 681bf252d72..83a620f151a 100644
--- a/apps/settings/tests/Controller/UsersControllerTest.php
+++ b/apps/settings/tests/Controller/UsersControllerTest.php
@@ -270,6 +270,151 @@ class UsersControllerTest extends \Test\TestCase {
];
}
+ public function testSetUserSettingsWhenUserDisplayNameChangeNotAllowed() {
+ $controller = $this->getController(false, ['saveUserSettings']);
+ $user = $this->createMock(IUser::class);
+
+ $this->userSession->method('getUser')->willReturn($user);
+
+ $defaultProperties = $this->getDefaultAccountManagerUserData();
+
+ $this->accountManager->expects($this->once())
+ ->method('getUser')
+ ->with($user)
+ ->willReturn($defaultProperties);
+
+ $this->config->expects($this->once())
+ ->method('getSystemValue')
+ ->with('allow_user_to_change_display_name')
+ ->willReturn(false);
+
+ $this->appManager->expects($this->once())
+ ->method('isEnabledForUser')
+ ->with('federatedfilesharing')
+ ->willReturn(true);
+
+ $avatarScope = IAccountManager::VISIBILITY_PUBLIC;
+ $displayName = 'Display name';
+ $displayNameScope = IAccountManager::VISIBILITY_PUBLIC;
+ $phone = '47658468';
+ $phoneScope = IAccountManager::VISIBILITY_PUBLIC;
+ $email = 'john@example.com';
+ $emailScope = IAccountManager::VISIBILITY_PUBLIC;
+ $website = 'nextcloud.com';
+ $websiteScope = IAccountManager::VISIBILITY_PUBLIC;
+ $address = 'street and city';
+ $addressScope = IAccountManager::VISIBILITY_PUBLIC;
+ $twitter = '@nextclouders';
+ $twitterScope = IAccountManager::VISIBILITY_PUBLIC;
+
+ // Display name and email are not changed.
+ $expectedProperties = $defaultProperties;
+ $expectedProperties[IAccountManager::PROPERTY_AVATAR]['scope'] = $avatarScope;
+ $expectedProperties[IAccountManager::PROPERTY_PHONE]['value'] = $phone;
+ $expectedProperties[IAccountManager::PROPERTY_PHONE]['scope'] = $phoneScope;
+ unset($expectedProperties[IAccountManager::PROPERTY_PHONE]['verified']);
+ $expectedProperties[IAccountManager::PROPERTY_WEBSITE]['value'] = $website;
+ $expectedProperties[IAccountManager::PROPERTY_WEBSITE]['scope'] = $websiteScope;
+ unset($expectedProperties[IAccountManager::PROPERTY_WEBSITE]['verified']);
+ $expectedProperties[IAccountManager::PROPERTY_ADDRESS]['value'] = $address;
+ $expectedProperties[IAccountManager::PROPERTY_ADDRESS]['scope'] = $addressScope;
+ unset($expectedProperties[IAccountManager::PROPERTY_ADDRESS]['verified']);
+ $expectedProperties[IAccountManager::PROPERTY_TWITTER]['value'] = $twitter;
+ $expectedProperties[IAccountManager::PROPERTY_TWITTER]['scope'] = $twitterScope;
+ unset($expectedProperties[IAccountManager::PROPERTY_TWITTER]['verified']);
+
+ $this->mailer->expects($this->once())->method('validateMailAddress')
+ ->willReturn(true);
+
+ $controller->expects($this->once())
+ ->method('saveUserSettings')
+ ->with($user, $expectedProperties)
+ ->willReturnArgument(1);
+
+ $result = $controller->setUserSettings(
+ $avatarScope,
+ $displayName,
+ $displayNameScope,
+ $phone,
+ $phoneScope,
+ $email,
+ $emailScope,
+ $website,
+ $websiteScope,
+ $address,
+ $addressScope,
+ $twitter,
+ $twitterScope
+ );
+ }
+
+ public function testSetUserSettingsWhenFederatedFilesharingNotEnabled() {
+ $controller = $this->getController(false, ['saveUserSettings']);
+ $user = $this->createMock(IUser::class);
+
+ $this->userSession->method('getUser')->willReturn($user);
+
+ $defaultProperties = $this->getDefaultAccountManagerUserData();
+
+ $this->accountManager->expects($this->once())
+ ->method('getUser')
+ ->with($user)
+ ->willReturn($defaultProperties);
+
+ $this->appManager->expects($this->once())
+ ->method('isEnabledForUser')
+ ->with('federatedfilesharing')
+ ->willReturn(false);
+
+ $avatarScope = IAccountManager::VISIBILITY_PUBLIC;
+ $displayName = 'Display name';
+ $displayNameScope = IAccountManager::VISIBILITY_PUBLIC;
+ $phone = '47658468';
+ $phoneScope = IAccountManager::VISIBILITY_PUBLIC;
+ $email = 'john@example.com';
+ $emailScope = IAccountManager::VISIBILITY_PUBLIC;
+ $website = 'nextcloud.com';
+ $websiteScope = IAccountManager::VISIBILITY_PUBLIC;
+ $address = 'street and city';
+ $addressScope = IAccountManager::VISIBILITY_PUBLIC;
+ $twitter = '@nextclouders';
+ $twitterScope = IAccountManager::VISIBILITY_PUBLIC;
+
+ // Phone, website, address and twitter are not changed.
+ $expectedProperties = $defaultProperties;
+ $expectedProperties[IAccountManager::PROPERTY_AVATAR]['scope'] = $avatarScope;
+ $expectedProperties[IAccountManager::PROPERTY_DISPLAYNAME]['value'] = $displayName;
+ $expectedProperties[IAccountManager::PROPERTY_DISPLAYNAME]['scope'] = $displayNameScope;
+ unset($expectedProperties[IAccountManager::PROPERTY_DISPLAYNAME]['verified']);
+ $expectedProperties[IAccountManager::PROPERTY_EMAIL]['value'] = $email;
+ $expectedProperties[IAccountManager::PROPERTY_EMAIL]['scope'] = $emailScope;
+ unset($expectedProperties[IAccountManager::PROPERTY_EMAIL]['verified']);
+
+ $this->mailer->expects($this->once())->method('validateMailAddress')
+ ->willReturn(true);
+
+ $controller->expects($this->once())
+ ->method('saveUserSettings')
+ ->with($user, $expectedProperties)
+ ->willReturnArgument(1);
+
+ $result = $controller->setUserSettings(
+ $avatarScope,
+ $displayName,
+ $displayNameScope,
+ $phone,
+ $phoneScope,
+ $email,
+ $emailScope,
+ $website,
+ $websiteScope,
+ $address,
+ $addressScope,
+ $twitter,
+ $twitterScope
+ );
+ }
+
/**
* @dataProvider dataTestSaveUserSettings
*