From d6b9b37ddb8c5442895f1c9d6e45a8d0a4422747 Mon Sep 17 00:00:00 2001
From: Robin McCorkell <rmccorkell@karoshi.org.uk>
Date: Mon, 2 Mar 2015 14:37:42 +0000
Subject: [PATCH] Use dummy storages instead of real storages in files_external
 unit tests

We were using the SMB and SFTP backends, which since Icewind's new SMB library
results in an actual attempted connection just by constructing the storage.
This commit replaces all references to real storages (except when necessary)
with a dummy storage class.
---
 apps/files_external/tests/mountconfig.php | 120 +++++++++++++++-------
 1 file changed, 81 insertions(+), 39 deletions(-)

diff --git a/apps/files_external/tests/mountconfig.php b/apps/files_external/tests/mountconfig.php
index f288d02705..f00812c567 100644
--- a/apps/files_external/tests/mountconfig.php
+++ b/apps/files_external/tests/mountconfig.php
@@ -3,6 +3,7 @@
  * ownCloud
  *
  * @author Vincent Petry
+ * @author Robin McCorkell
  * Copyright (c) 2013 Vincent Petry <pvince81@owncloud.com>
  *
  * This library is free software; you can redistribute it and/or
@@ -20,18 +21,61 @@
  *
  */
 
-class Test_Mount_Config_Dummy_Storage {
+class Test_Mount_Config_Dummy_Storage extends \OC\Files\Storage\Common {
 	public function __construct($params) {
 		if (isset($params['simulateFail']) && $params['simulateFail'] == true) {
 			throw new \Exception('Simulated config validation fail');
 		}
 	}
 
+	public function getId() {
+		return 'dummy_storage';
+	}
+
+	public function mkdir($path) {
+		return false;
+	}
+
+	public function rmdir($path) {
+		return false;
+	}
+
+	public function opendir($path) {
+		return false;
+	}
+
+	public function filetype($path) {
+		return false;
+	}
+
+	public function file_exists($path) {
+		return false;
+	}
+
+	public function unlink($path) {
+		return false;
+	}
+
+	public function fopen($path, $mode) {
+		return false;
+	}
+
+	public function touch($path, $mtime = null) {
+		return false;
+	}
+
+	public function stat($path) {
+		return false;
+	}
+
 	public function test() {
 		return true;
 	}
 }
 
+class Test_Mount_Config_Storage_No_Personal extends Test_Mount_Config_Dummy_Storage {
+}
+
 class Test_Mount_Config_Hook_Test {
 	static $signal;
 	static $params;
@@ -94,6 +138,12 @@ class Test_Mount_Config extends \Test\TestCase {
 				'configuration' => array()
 			)
 		);
+		OC_Mount_Config::registerBackend('Test_Mount_Config_Storage_No_Personal', array(
+				'backend' => 'dummy no personal',
+				'priority' => 150,
+				'configuration' => array()
+			)
+		);
 
 		\OC_User::createUser(self::TEST_USER1, self::TEST_USER1);
 		\OC_User::createUser(self::TEST_USER2, self::TEST_USER2);
@@ -120,11 +170,10 @@ class Test_Mount_Config extends \Test\TestCase {
 			'user_mounting_backends',
 			''
 		);
-		$this->allBackends = OC_Mount_Config::getBackends();
 		OCP\Config::setAppValue(
 			'files_external',
 			'user_mounting_backends',
-			implode(',', array_keys($this->allBackends))
+			'Test_Mount_Config_Dummy_Storage'
 		);
 
 		OC_Mount_Config::$skipTest = true;
@@ -203,7 +252,7 @@ class Test_Mount_Config extends \Test\TestCase {
 			'password' => '12345',
 		);
 
-		$this->assertEquals(true, OC_Mount_Config::addMountPoint('/ext', '\OC\Files\Storage\SFTP', $storageOptions, $mountType, $applicable, $isPersonal));
+		$this->assertEquals(true, OC_Mount_Config::addMountPoint('/ext', 'Test_Mount_Config_Dummy_Storage', $storageOptions, $mountType, $applicable, $isPersonal));
 
 		$config = $this->readGlobalConfig();
 		$this->assertEquals(1, count($config));
@@ -211,7 +260,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(isset($config[$mountType][$applicable]));
 		$this->assertTrue(isset($config[$mountType][$applicable]['/$user/files/ext']));
 		$this->assertEquals(
-			'\OC\Files\Storage\SFTP',
+			'Test_Mount_Config_Dummy_Storage',
 			$config[$mountType][$applicable]['/$user/files/ext']['class']
 		);
 	}
@@ -230,7 +279,7 @@ class Test_Mount_Config extends \Test\TestCase {
 			'password' => '12345',
 		);
 
-		$this->assertEquals(true, OC_Mount_Config::addMountPoint('/ext', '\OC\Files\Storage\SFTP', $storageOptions, $mountType, $applicable, $isPersonal));
+		$this->assertEquals(true, OC_Mount_Config::addMountPoint('/ext', 'Test_Mount_Config_Dummy_Storage', $storageOptions, $mountType, $applicable, $isPersonal));
 
 		$config = $this->readUserConfig();
 		$this->assertEquals(1, count($config));
@@ -238,7 +287,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(isset($config[$mountType][$applicable]));
 		$this->assertTrue(isset($config[$mountType][$applicable]['/' . self::TEST_USER1 . '/files/ext']));
 		$this->assertEquals(
-			'\OC\Files\Storage\SFTP',
+			'Test_Mount_Config_Dummy_Storage',
 			$config[$mountType][$applicable]['/' . self::TEST_USER1 . '/files/ext']['class']
 		);
 	}
@@ -252,14 +301,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$isPersonal = true;
 
 		// local
-		$this->assertFalse(OC_Mount_Config::addMountPoint('/ext', '\OC\Files\storage\local', array(), $mountType, $applicable, $isPersonal));
-
-		unset($this->allBackends['\OC\Files\Storage\SFTP']);
-		OCP\Config::setAppValue(
-			'files_external',
-			'user_mounting_backends',
-			implode(',', array_keys($this->allBackends))
-		);
+		$this->assertFalse(OC_Mount_Config::addMountPoint('/ext', '\OC\Files\Storage\Local', array(), $mountType, $applicable, $isPersonal));
 
 		$storageOptions = array(
 			'host' => 'localhost',
@@ -268,7 +310,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		);
 
 		// non-local but forbidden
-		$this->assertFalse(OC_Mount_Config::addMountPoint('/ext', '\OC\Files\Storage\SFTP', $storageOptions, $mountType, $applicable, $isPersonal));
+		$this->assertFalse(OC_Mount_Config::addMountPoint('/ext', 'Test_Mount_Config_Storage_No_Personal', $storageOptions, $mountType, $applicable, $isPersonal));
 
 		$this->assertFalse(file_exists($this->userHome . '/mount.json'));
 	}
@@ -343,7 +385,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$options,
 				$mountType,
 				$applicable,
@@ -354,7 +396,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		// re-read config
 		$config = OC_Mount_Config::getSystemMountPoints();
 		$this->assertEquals(1, count($config));
-		$this->assertEquals('\OC\Files\Storage\SMB', $config[0]['class']);
+		$this->assertEquals('Test_Mount_Config_Dummy_Storage', $config[0]['class']);
 		$this->assertEquals('ext', $config[0]['mountpoint']);
 		$this->assertEquals($expectApplicableArray, $config[0]['applicable']);
 		$savedOptions = $config[0]['options'];
@@ -383,7 +425,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$options,
 				$mountType,
 				$applicable,
@@ -394,7 +436,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		// re-read config
 		$config = OC_Mount_Config::getPersonalMountPoints();
 		$this->assertEquals(1, count($config));
-		$this->assertEquals('\OC\Files\Storage\SMB', $config[0]['class']);
+		$this->assertEquals('Test_Mount_Config_Dummy_Storage', $config[0]['class']);
 		$this->assertEquals('ext', $config[0]['mountpoint']);
 		$savedOptions = $config[0]['options'];
 		$this->assertEquals($options, $savedOptions);
@@ -420,7 +462,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				$mountPoint,
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$mountConfig,
 				$mountType,
 				$applicable,
@@ -453,7 +495,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				$mountPoint,
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$mountConfig,
 				$mountType,
 				$applicable,
@@ -518,7 +560,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$mountConfig,
 				$mountType,
 				$applicable,
@@ -559,7 +601,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$mountConfig,
 				$mountType,
 				$applicable,
@@ -668,7 +710,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$mountConfig,
 				$mountType,
 				$applicable,
@@ -683,7 +725,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		if ($expectVisible) {
 			$this->assertEquals(1, count($mountPoints));
 			$this->assertTrue(isset($mountPoints['/' . self::TEST_USER1 . '/files/ext']));
-			$this->assertEquals('\OC\Files\Storage\SMB', $mountPoints['/' . self::TEST_USER1 . '/files/ext']['class']);
+			$this->assertEquals('Test_Mount_Config_Dummy_Storage', $mountPoints['/' . self::TEST_USER1 . '/files/ext']['class']);
 			$this->assertEquals($mountConfig, $mountPoints['/' . self::TEST_USER1 . '/files/ext']['options']);
 		}
 		else {
@@ -711,7 +753,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$options,
 				OC_Mount_Config::MOUNT_TYPE_USER,
 				self::TEST_USER1,
@@ -722,7 +764,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$options,
 				OC_Mount_Config::MOUNT_TYPE_USER,
 				self::TEST_USER2,
@@ -733,7 +775,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$options,
 				OC_Mount_Config::MOUNT_TYPE_GROUP,
 				self::TEST_GROUP2,
@@ -744,7 +786,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$options,
 				OC_Mount_Config::MOUNT_TYPE_GROUP,
 				self::TEST_GROUP1,
@@ -755,7 +797,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		// re-read config
 		$config = OC_Mount_Config::getSystemMountPoints();
 		$this->assertEquals(1, count($config));
-		$this->assertEquals('\OC\Files\Storage\SMB', $config[0]['class']);
+		$this->assertEquals('Test_Mount_Config_Dummy_Storage', $config[0]['class']);
 		$this->assertEquals('ext', $config[0]['mountpoint']);
 		$this->assertEquals($options, $config[0]['options']);
 		$this->assertEquals(array(self::TEST_USER1, self::TEST_USER2), $config[0]['applicable']['users']);
@@ -782,7 +824,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$options1,
 				$mountType,
 				self::TEST_USER1,
@@ -800,7 +842,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$options2,
 				$mountType,
 				self::TEST_USER2,
@@ -811,10 +853,10 @@ class Test_Mount_Config extends \Test\TestCase {
 		// re-read config
 		$config = OC_Mount_Config::getSystemMountPoints();
 		$this->assertEquals(2, count($config));
-		$this->assertEquals('\OC\Files\Storage\SMB', $config[0]['class']);
+		$this->assertEquals('Test_Mount_Config_Dummy_Storage', $config[0]['class']);
 		$this->assertEquals('ext', $config[0]['mountpoint']);
 		$this->assertEquals($options1, $config[0]['options']);
-		$this->assertEquals('\OC\Files\Storage\SMB', $config[1]['class']);
+		$this->assertEquals('Test_Mount_Config_Dummy_Storage', $config[1]['class']);
 		$this->assertEquals('ext', $config[1]['mountpoint']);
 		$this->assertEquals($options2, $config[1]['options']);
 	}
@@ -913,7 +955,7 @@ class Test_Mount_Config extends \Test\TestCase {
 			$this->assertTrue(
 				OC_Mount_Config::addMountPoint(
 					'/ext',
-					'\OC\Files\Storage\SMB',
+					'Test_Mount_Config_Dummy_Storage',
 					$mountConfig + array('id' => $i),
 					$mount['mountType'],
 					$mount['applicable'],
@@ -935,7 +977,7 @@ class Test_Mount_Config extends \Test\TestCase {
 	 */
 	public function testPriorityPersistence() {
 
-		$class = '\OC\Files\Storage\SMB';
+		$class = 'Test_Mount_Config_Dummy_Storage';
 		$priority = 123;
 		$mountConfig = array(
 			'host' => 'somehost',
@@ -996,7 +1038,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertTrue(
 			OC_Mount_Config::addMountPoint(
 				'/ext',
-				'\OC\Files\Storage\SMB',
+				'Test_Mount_Config_Dummy_Storage',
 				$mountConfig,
 				OC_Mount_Config::MOUNT_TYPE_USER,
 				self::TEST_USER1,
@@ -1012,7 +1054,7 @@ class Test_Mount_Config extends \Test\TestCase {
 		$this->assertEquals(0, count($mountPointsMe));
 		$this->assertEquals(1, count($mountPointsOther));
 		$this->assertTrue(isset($mountPointsOther['/'.self::TEST_USER1.'/files/ext']));
-		$this->assertEquals('\OC\Files\Storage\SMB',
+		$this->assertEquals('Test_Mount_Config_Dummy_Storage',
 			$mountPointsOther['/'.self::TEST_USER1.'/files/ext']['class']);
 		$this->assertEquals($mountConfig,
 			$mountPointsOther['/'.self::TEST_USER1.'/files/ext']['options']);
-- 
GitLab