[Pkg-owncloud-commits] [owncloud] 116/131: Add unit tests

David Prévot taffit at moszumanska.debian.org
Tue Aug 11 15:58:43 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to annotated tag v8.1.1
in repository owncloud.

commit e0b5bea50f307be8cc27ccb173b139dda0bd6372
Author: Lukas Reschke <lukas at owncloud.com>
Date:   Tue Jul 28 15:12:41 2015 +0200

    Add unit tests
---
 settings/controller/encryptioncontroller.php       |  38 ++++--
 .../controller/EncryptionControllerTest.php        | 151 +++++++++++++++++++++
 2 files changed, 176 insertions(+), 13 deletions(-)

diff --git a/settings/controller/encryptioncontroller.php b/settings/controller/encryptioncontroller.php
index 11640a6..7aaf184 100644
--- a/settings/controller/encryptioncontroller.php
+++ b/settings/controller/encryptioncontroller.php
@@ -82,6 +82,20 @@ class EncryptionController extends Controller {
 	}
 
 	/**
+	 * @param IConfig $config
+	 * @param View $view
+	 * @param Connection $connection
+	 * @param ILogger $logger
+	 * @return Migration
+	 */
+	protected function getMigration(IConfig $config,
+								 View $view,
+								 Connection $connection,
+								 ILogger $logger) {
+		return new Migration($config, $view, $connection, $logger);
+	}
+
+	/**
 	 * start migration
 	 *
 	 * @return array
@@ -92,12 +106,11 @@ class EncryptionController extends Controller {
 
 		try {
 
-			$migration = new Migration($this->config, $this->view, $this->connection, $this->logger);
+			$migration = $this->getMigration($this->config, $this->view, $this->connection, $this->logger);
 			$migration->reorganizeSystemFolderStructure();
 			$migration->updateDB();
 
 			foreach ($this->userManager->getBackends() as $backend) {
-
 				$limit = 500;
 				$offset = 0;
 				do {
@@ -112,21 +125,20 @@ class EncryptionController extends Controller {
 			$migration->finalCleanUp();
 
 		} catch (\Exception $e) {
-			return array(
-				'data' => array(
+			return [
+				'data' => [
 					'message' => (string)$this->l10n->t('A problem occurred, please check your log files (Error: %s)', [$e->getMessage()]),
-				),
+				],
 				'status' => 'error',
-			);
+			];
 		}
 
-		return array('data' =>
-			array('message' =>
-				(string) $this->l10n->t('Migration Completed')
-			),
-			'status' => 'success'
-		);
-
+		return [
+			'data' => [
+				'message' => (string) $this->l10n->t('Migration Completed'),
+				],
+			'status' => 'success',
+		];
 	}
 
 }
diff --git a/tests/settings/controller/EncryptionControllerTest.php b/tests/settings/controller/EncryptionControllerTest.php
new file mode 100644
index 0000000..2446b8c
--- /dev/null
+++ b/tests/settings/controller/EncryptionControllerTest.php
@@ -0,0 +1,151 @@
+<?php
+/**
+ * @author Lukas Reschke <lukas at owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Settings\Controller;
+
+use OC\DB\Connection;
+use OC\Files\View;
+use OCP\IConfig;
+use OCP\IL10N;
+use OCP\ILogger;
+use OCP\IRequest;
+use OCP\IUserManager;
+use Test\TestCase;
+
+/**
+ * Class EncryptionControllerTest
+ *
+ * @package OC\Settings\Controller
+ */
+class EncryptionControllerTest extends TestCase {
+	/** @var IRequest */
+	private $request;
+	/** @var IL10N */
+	private $l10n;
+	/** @var IConfig */
+	private $config;
+	/** @var Connection */
+	private $connection;
+	/** @var IUserManager */
+	private $userManager;
+	/** @var View */
+	private $view;
+	/** @var ILogger */
+	private $logger;
+	/** @var EncryptionController */
+	private $encryptionController;
+
+	public function setUp() {
+		$this->request = $this->getMockBuilder('\\OCP\\IRequest')
+			->disableOriginalConstructor()->getMock();
+		$this->l10n = $this->getMockBuilder('\\OCP\\IL10N')
+			->disableOriginalConstructor()->getMock();
+		$this->l10n->expects($this->any())
+			->method('t')
+			->will($this->returnCallback(function($message, array $replace) {
+				return vsprintf($message, $replace);
+			}));
+		$this->config = $this->getMockBuilder('\\OCP\\IConfig')
+			->disableOriginalConstructor()->getMock();
+		$this->connection = $this->getMockBuilder('\\OC\\DB\\Connection')
+			->disableOriginalConstructor()->getMock();
+		$this->userManager = $this->getMockBuilder('\\OCP\\IUserManager')
+			->disableOriginalConstructor()->getMock();
+		$this->view = $this->getMockBuilder('\\OC\\Files\\View')
+			->disableOriginalConstructor()->getMock();
+		$this->logger = $this->getMockBuilder('\\OCP\\ILogger')
+			->disableOriginalConstructor()->getMock();
+
+		$this->encryptionController = $this->getMockBuilder('\\OC\\Settings\\Controller\\EncryptionController')
+			->setConstructorArgs([
+				'settings',
+				$this->request,
+				$this->l10n,
+				$this->config,
+				$this->connection,
+				$this->userManager,
+				$this->view,
+				$this->logger,
+			])
+			->setMethods(['getMigration'])
+			->getMock();
+	}
+
+	public function testStartMigrationSuccessful() {
+		$migration = $this->getMockBuilder('\\OCA\\Encryption\\Migration')
+			->disableOriginalConstructor()->getMock();
+		$this->encryptionController
+			->expects($this->once())
+			->method('getMigration')
+			->with($this->config, $this->view, $this->connection, $this->logger)
+			->will($this->returnValue($migration));
+		$migration
+			->expects($this->once())
+			->method('reorganizeSystemFolderStructure');
+		$migration
+			->expects($this->once())
+			->method('updateDB');
+		$backend = $this->getMockBuilder('\OCP\UserInterface')
+			->getMock();
+		$this->userManager
+			->expects($this->once())
+			->method('getBackends')
+			->will($this->returnValue([$backend]));
+		$backend
+			->expects($this->once())
+			->method('getUsers')
+			->will($this->returnValue(['User 1', 'User 2']));
+		$migration
+			->expects($this->exactly(2))
+			->method('reorganizeFolderStructureForUser')
+			->withConsecutive(
+				['User 1'],
+				['User 2']
+			);
+		$migration
+			->expects($this->once())
+			->method('finalCleanUp');
+
+		$expected = [
+			'data' => [
+				'message' => 'Migration Completed',
+			],
+			'status' => 'success',
+		];
+		$this->assertSame($expected, $this->encryptionController->startMigration());
+	}
+
+	public function testStartMigrationException() {
+		$this->encryptionController
+			->expects($this->once())
+			->method('getMigration')
+			->with($this->config, $this->view, $this->connection, $this->logger)
+			->will($this->throwException(new \Exception('My error message')));
+
+		$expected = [
+			'data' => [
+				'message' => 'A problem occurred, please check your log files (Error: My error message)',
+			],
+			'status' => 'error',
+		];
+		$this->assertSame($expected, $this->encryptionController->startMigration());
+	}
+}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list