From e507dc11a044bacde23e4b97970a3c78895b64bc Mon Sep 17 00:00:00 2001 From: Clark Tomlinson Date: Wed, 1 Apr 2015 13:07:54 -0400 Subject: [PATCH] adding util test and reducing keymanager instances to one in test --- apps/encryption/tests/lib/KeyManagerTest.php | 141 +++++-------------- apps/encryption/tests/lib/UtilTest.php | 128 +++++++++++++++++ 2 files changed, 161 insertions(+), 108 deletions(-) create mode 100644 apps/encryption/tests/lib/UtilTest.php diff --git a/apps/encryption/tests/lib/KeyManagerTest.php b/apps/encryption/tests/lib/KeyManagerTest.php index b4c19f5ec8..040390e827 100644 --- a/apps/encryption/tests/lib/KeyManagerTest.php +++ b/apps/encryption/tests/lib/KeyManagerTest.php @@ -68,6 +68,7 @@ class KeyManagerTest extends TestCase { \OC_App::disable('files_trashbin'); $userManager = \OC::$server->getUserManager(); + $userManager->get(self::$testUser)->delete(); $userManager->createUser(self::$testUser, self::$testUser); @@ -95,14 +96,8 @@ class KeyManagerTest extends TestCase { $this->utilMock = $this->getMockBuilder('OCA\Encryption\Util') ->disableOriginalConstructor() ->getMock(); - } - - public function testDeleteShareKey() { - $this->keyStorageMock->expects($this->any()) - ->method('deleteFileKey') - ->with($this->equalTo('/path'), $this->equalTo('keyId.shareKey')) - ->willReturn(true); - $keymanager = new KeyManager( + + $this->instance = new KeyManager( $this->keyStorageMock, $this->cryptMock, $this->configMock, @@ -110,9 +105,16 @@ class KeyManagerTest extends TestCase { $this->sessionMock, $this->logMock, $this->utilMock); + } + public function testDeleteShareKey() { + $this->keyStorageMock->expects($this->any()) + ->method('deleteFileKey') + ->with($this->equalTo('/path'), $this->equalTo('keyId.shareKey')) + ->willReturn(true); + $this->assertTrue( - $keymanager->deleteShareKey('/path', 'keyId') + $this->instance->deleteShareKey('/path', 'keyId') ); } @@ -122,17 +124,10 @@ class KeyManagerTest extends TestCase { ->method('getUserKey') ->with($this->equalTo($this->userId), $this->equalTo('privateKey')) ->willReturn('privateKey'); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + $this->assertSame('privateKey', - $keymanager->getPrivateKey($this->userId) + $this->instance->getPrivateKey($this->userId) ); } @@ -141,17 +136,10 @@ class KeyManagerTest extends TestCase { ->method('getUserKey') ->with($this->equalTo($this->userId), $this->equalTo('publicKey')) ->willReturn('publicKey'); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + $this->assertSame('publicKey', - $keymanager->getPublicKey($this->userId) + $this->instance->getPublicKey($this->userId) ); } @@ -160,16 +148,9 @@ class KeyManagerTest extends TestCase { ->method('getSystemUserKey') ->with($this->equalTo($this->systemKeyId . '.publicKey')) ->willReturn('recoveryKey'); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + - $this->assertTrue($keymanager->recoveryKeyExists()); + $this->assertTrue($this->instance->recoveryKeyExists()); } /** @@ -184,16 +165,9 @@ class KeyManagerTest extends TestCase { ->method('decryptPrivateKey') ->with($this->equalTo('recoveryKey'), $this->equalTo('pass')) ->willReturn('decryptedRecoveryKey'); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + - $this->assertTrue($keymanager->checkRecoveryPassword('pass')); + $this->assertTrue($this->instance->checkRecoveryPassword('pass')); } @@ -205,17 +179,10 @@ class KeyManagerTest extends TestCase { $this->equalTo('publicKey'), $this->equalTo('key')) ->willReturn(true); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + $this->assertTrue( - $keymanager->setPublicKey($this->userId, 'key') + $this->instance->setPublicKey($this->userId, 'key') ); } @@ -228,17 +195,10 @@ class KeyManagerTest extends TestCase { $this->equalTo('privateKey'), $this->equalTo('key')) ->willReturn(true); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + $this->assertTrue( - $keymanager->setPrivateKey($this->userId, 'key') + $this->instance->setPrivateKey($this->userId, 'key') ); } @@ -247,17 +207,10 @@ class KeyManagerTest extends TestCase { ->method('getUserKey') ->with($this->equalTo($this->userId), $this->anything()) ->willReturn('key'); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + $this->assertTrue( - $keymanager->userHasKeys($this->userId) + $this->instance->userHasKeys($this->userId) ); } @@ -273,17 +226,10 @@ class KeyManagerTest extends TestCase { ->method('decryptPrivateKey') ->with($this->equalTo('privateKey'), $this->equalTo('pass')) ->willReturn('decryptedPrivateKey'); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + $this->assertTrue( - $keymanager->init($this->userId, 'pass') + $this->instance->init($this->userId, 'pass') ); } @@ -296,17 +242,10 @@ class KeyManagerTest extends TestCase { ->method('symmetricEncryptFileContent') ->with($this->equalTo('privateKey'), $this->equalTo('pass')) ->willReturn('decryptedPrivateKey'); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + $this->assertTrue( - $keymanager->setRecoveryKey('pass', array('publicKey' => 'publicKey', 'privateKey' => 'privateKey')) + $this->instance->setRecoveryKey('pass', array('publicKey' => 'publicKey', 'privateKey' => 'privateKey')) ); } @@ -315,17 +254,10 @@ class KeyManagerTest extends TestCase { ->method('setSystemUserKey') ->with($this->equalTo('keyId.privateKey'), $this->equalTo('key')) ->willReturn(true); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + $this->assertTrue( - $keymanager->setSystemPrivateKey('keyId', 'key') + $this->instance->setSystemPrivateKey('keyId', 'key') ); } @@ -334,17 +266,10 @@ class KeyManagerTest extends TestCase { ->method('setSystemUserKey') ->with($this->equalTo('keyId.privateKey')) ->willReturn('systemPrivateKey'); - $keymanager = new KeyManager( - $this->keyStorageMock, - $this->cryptMock, - $this->configMock, - $this->userMock, - $this->sessionMock, - $this->logMock, - $this->utilMock); + $this->assertSame('systemPrivateKey', - $keymanager->getSystemPrivateKey('keyId') + $this->instance->getSystemPrivateKey('keyId') ); } diff --git a/apps/encryption/tests/lib/UtilTest.php b/apps/encryption/tests/lib/UtilTest.php new file mode 100644 index 0000000000..fa87a629f2 --- /dev/null +++ b/apps/encryption/tests/lib/UtilTest.php @@ -0,0 +1,128 @@ + + * @since 3/31/15, 3:49 PM + * @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 + * + */ + + +namespace OCA\Encryption\Tests; + + +use OCA\Encryption\Util; +use Test\TestCase; + +class UtilTest extends TestCase { + private static $tempStorage = []; + private $configMock; + private $filesMock; + /** + * @var Util + */ + private $instance; + + public function testSetRecoveryForUser() { + $this->instance->setRecoveryForUser('1'); + $this->assertArrayHasKey('recoveryEnabled', self::$tempStorage); + } + + /** + * + */ + public function testIsRecoveryEnabledForUser() { + $this->assertTrue($this->instance->isRecoveryEnabledForUser()); + + // Assert recovery will return default value if not set + unset(self::$tempStorage['recoveryEnabled']); + $this->assertEquals(0, $this->instance->isRecoveryEnabledForUser()); + } + + public function testUserHasFiles() { + $this->filesMock->expects($this->once()) + ->method('file_exists') + ->will($this->returnValue(true)); + + $this->assertTrue($this->instance->userHasFiles('admin')); + } + + protected function setUp() { + parent::setUp(); + $this->filesMock = $this->getMock('OC\Files\View'); + + $cryptMock = $this->getMockBuilder('OCA\Encryption\Crypto\Crypt') + ->disableOriginalConstructor() + ->getMock(); + $loggerMock = $this->getMock('OCP\ILogger'); + $userSessionMock = $this->getMockBuilder('OCP\IUserSession') + ->disableOriginalConstructor() + ->setMethods([ + 'isLoggedIn', + 'getUID', + 'login', + 'logout', + 'setUser', + 'getUser' + ]) + ->getMock(); + + $userSessionMock->method('isLoggedIn')->will($this->returnValue(true)); + + $userSessionMock->method('getUID')->will($this->returnValue('admin')); + + $userSessionMock->expects($this->any()) + ->method($this->anything()) + ->will($this->returnSelf()); + + + $this->configMock = $configMock = $this->getMock('OCP\IConfig'); + + $this->configMock->expects($this->any()) + ->method('getUserValue') + ->will($this->returnCallback([$this, 'getValueTester'])); + + $this->configMock->expects($this->any()) + ->method('setUserValue') + ->will($this->returnCallback([$this, 'setValueTester'])); + + $this->instance = new Util($this->filesMock, $cryptMock, $loggerMock, $userSessionMock, $configMock); + } + + /** + * @param $userId + * @param $app + * @param $key + * @param $value + */ + public function setValueTester($userId, $app, $key, $value) { + self::$tempStorage[$key] = $value; + } + + /** + * @param $userId + * @param $app + * @param $key + * @param $default + * @return mixed + */ + public function getValueTester($userId, $app, $key, $default) { + if (!empty(self::$tempStorage[$key])) { + return self::$tempStorage[$key]; + } + return $default ?: null; + } + +}