Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjoern Schiessle <bjoern@schiessle.org>2016-11-23 15:05:01 +0300
committerBjoern Schiessle <bjoern@schiessle.org>2016-11-23 22:19:31 +0300
commit546989959c11bc773461cdd8ff0233e3f54255e0 (patch)
tree5d0a21d29ddb848eb27e4f8ce090a942c7412fb6 /tests/Settings
parentf692ea34f1f1ce128ad40e3bf248c6342260c6c1 (diff)
update email address correctly
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
Diffstat (limited to 'tests/Settings')
-rw-r--r--tests/Settings/Controller/UsersControllerTest.php271
1 files changed, 251 insertions, 20 deletions
diff --git a/tests/Settings/Controller/UsersControllerTest.php b/tests/Settings/Controller/UsersControllerTest.php
index ec92479b40e..9f381e31957 100644
--- a/tests/Settings/Controller/UsersControllerTest.php
+++ b/tests/Settings/Controller/UsersControllerTest.php
@@ -11,6 +11,7 @@
namespace Tests\Settings\Controller;
use OC\Accounts\AccountManager;
+use OC\ForbiddenException;
use OC\Group\Manager;
use OC\Settings\Controller\UsersController;
use OCP\App\IAppManager;
@@ -103,27 +104,51 @@ class UsersControllerTest extends \Test\TestCase {
/**
* @param bool $isAdmin
- * @return UsersController
+ * @return UsersController | \PHPUnit_Framework_MockObject_MockObject
*/
- protected function getController($isAdmin) {
- return new UsersController(
- 'settings',
- $this->createMock(IRequest::class),
- $this->userManager,
- $this->groupManager,
- $this->userSession,
- $this->config,
- $isAdmin,
- $this->l,
- $this->logger,
- $this->defaults,
- $this->mailer,
- 'no-reply@owncloud.com',
- $this->urlGenerator,
- $this->appManager,
- $this->avatarManager,
- $this->accountManager
- );
+ protected function getController($isAdmin = false, $mockedMethods = []) {
+ if (empty($mockedMethods)) {
+ return new UsersController(
+ 'settings',
+ $this->createMock(IRequest::class),
+ $this->userManager,
+ $this->groupManager,
+ $this->userSession,
+ $this->config,
+ $isAdmin,
+ $this->l,
+ $this->logger,
+ $this->defaults,
+ $this->mailer,
+ 'no-reply@owncloud.com',
+ $this->urlGenerator,
+ $this->appManager,
+ $this->avatarManager,
+ $this->accountManager
+ );
+ } else {
+ return $this->getMockBuilder(UsersController::class)
+ ->setConstructorArgs(
+ [
+ 'settings',
+ $this->createMock(IRequest::class),
+ $this->userManager,
+ $this->groupManager,
+ $this->userSession,
+ $this->config,
+ $isAdmin,
+ $this->l,
+ $this->logger,
+ $this->defaults,
+ $this->mailer,
+ 'no-reply@owncloud.com',
+ $this->urlGenerator,
+ $this->appManager,
+ $this->avatarManager,
+ $this->accountManager
+ ]
+ )->setMethods($mockedMethods)->getMock();
+ }
}
public function testIndexAdmin() {
@@ -2010,4 +2035,210 @@ class UsersControllerTest extends \Test\TestCase {
$response = $controller->setDisplayName($user->getUID(), 'newDisplayName');
$this->assertEquals($expectedResponse, $response);
}
+
+ /**
+ * @dataProvider dataTestSetUserSettings
+ *
+ * @param string $email
+ * @param bool $validEmail
+ * @param $expectedStatus
+ */
+ public function testSetUserSettings($email, $validEmail, $expectedStatus) {
+ $controller = $this->getController(false, ['saveUserSettings']);
+ $user = $this->getMock(IUser::class);
+
+ $this->userSession->method('getUser')->willReturn($user);
+
+ if (!empty($email) && $validEmail) {
+ $this->mailer->expects($this->once())->method('validateMailAddress')
+ ->willReturn($validEmail);
+ }
+
+ $saveData = (!empty($email) && $validEmail) || empty($email);
+
+ if ($saveData) {
+ $controller->expects($this->once())->method('saveUserSettings');
+ } else {
+ $controller->expects($this->never())->method('saveUserSettings');
+ }
+
+ $result = $controller->setUserSettings(
+ AccountManager::VISIBILITY_CONTACTS_ONLY,
+ 'displayName',
+ AccountManager::VISIBILITY_CONTACTS_ONLY,
+ '47658468',
+ AccountManager::VISIBILITY_CONTACTS_ONLY,
+ $email,
+ AccountManager::VISIBILITY_CONTACTS_ONLY,
+ 'nextcloud.com',
+ AccountManager::VISIBILITY_CONTACTS_ONLY,
+ 'street and city',
+ AccountManager::VISIBILITY_CONTACTS_ONLY,
+ '@nextclouders',
+ AccountManager::VISIBILITY_CONTACTS_ONLY
+ );
+
+ $this->assertSame($expectedStatus, $result->getStatus());
+ }
+
+ public function dataTestSetUserSettings() {
+ return [
+ ['', true, Http::STATUS_OK],
+ ['', false, Http::STATUS_OK],
+ ['example.com', false, Http::STATUS_UNPROCESSABLE_ENTITY],
+ ['john@example.com', true, Http::STATUS_OK],
+ ];
+ }
+
+ /**
+ * @dataProvider dataTestSaveUserSettings
+ *
+ * @param array $data
+ * @param string $oldEmailAddress
+ * @param string $oldDisplayName
+ */
+ public function testSaveUserSettings($data,
+ $oldEmailAddress,
+ $oldDisplayName
+ ) {
+ $controller = $this->getController();
+ $user = $this->getMock(IUser::class);
+
+ $user->method('getDisplayName')->willReturn($oldDisplayName);
+ $user->method('getEMailAddress')->willReturn($oldEmailAddress);
+
+ if ($data[AccountManager::PROPERTY_EMAIL]['value'] !== $oldEmailAddress) {
+ $user->expects($this->once())->method('setEMailAddress')
+ ->with($data[AccountManager::PROPERTY_EMAIL]['value'])
+ ->willReturn(true);
+ } else {
+ $user->expects($this->never())->method('setEMailAddress');
+ }
+
+ if ($data[AccountManager::PROPERTY_DISPLAYNAME]['value'] !== $oldDisplayName) {
+ $user->expects($this->once())->method('setDisplayName')
+ ->with($data[AccountManager::PROPERTY_DISPLAYNAME]['value'])
+ ->willReturn(true);
+ } else {
+ $user->expects($this->never())->method('setDisplayName');
+ }
+
+ $this->accountManager->expects($this->once())->method('updateUser')
+ ->with($user, $data);
+
+ $this->invokePrivate($controller, 'saveUserSettings', [$user, $data]);
+ }
+
+ public function dataTestSaveUserSettings() {
+ return [
+ [
+ [
+ AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'],
+ AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'],
+ ],
+ 'john@example.com',
+ 'john doe'
+ ],
+ [
+ [
+ AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'],
+ AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'],
+ ],
+ 'johnNew@example.com',
+ 'john New doe'
+ ],
+ [
+ [
+ AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'],
+ AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'],
+ ],
+ 'johnNew@example.com',
+ 'john doe'
+ ],
+ [
+ [
+ AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'],
+ AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'],
+ ],
+ 'john@example.com',
+ 'john New doe'
+ ]
+
+ ];
+ }
+
+ /**
+ * @dataProvider dataTestSaveUserSettingsException
+ *
+ * @param array $data
+ * @param string $oldEmailAddress
+ * @param string $oldDisplayName
+ * @param bool $setDisplayNameResult
+ * @param bool $setEmailResult
+ *
+ * @expectedException \OC\ForbiddenException
+ */
+ public function testSaveUserSettingsException($data,
+ $oldEmailAddress,
+ $oldDisplayName,
+ $setDisplayNameResult,
+ $setEmailResult
+ ) {
+ $controller = $this->getController();
+ $user = $this->getMock(IUser::class);
+
+ $user->method('getDisplayName')->willReturn($oldDisplayName);
+ $user->method('getEMailAddress')->willReturn($oldEmailAddress);
+
+ if ($data[AccountManager::PROPERTY_EMAIL]['value'] !== $oldEmailAddress) {
+ $user->method('setEMailAddress')
+ ->with($data[AccountManager::PROPERTY_EMAIL]['value'])
+ ->willReturn($setEmailResult);
+ }
+
+ if ($data[AccountManager::PROPERTY_DISPLAYNAME]['value'] !== $oldDisplayName) {
+ $user->method('setDisplayName')
+ ->with($data[AccountManager::PROPERTY_DISPLAYNAME]['value'])
+ ->willReturn($setDisplayNameResult);
+ }
+
+ $this->invokePrivate($controller, 'saveUserSettings', [$user, $data]);
+ }
+
+
+ public function dataTestSaveUserSettingsException() {
+ return [
+ [
+ [
+ AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'],
+ AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'],
+ ],
+ 'johnNew@example.com',
+ 'john New doe',
+ true,
+ false
+ ],
+ [
+ [
+ AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'],
+ AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'],
+ ],
+ 'johnNew@example.com',
+ 'john New doe',
+ false,
+ true
+ ],
+ [
+ [
+ AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'],
+ AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'],
+ ],
+ 'johnNew@example.com',
+ 'john New doe',
+ false,
+ false
+ ],
+
+ ];
+ }
}