diff options
author | Bjoern Schiessle <schiessle@owncloud.com> | 2015-04-13 15:56:36 +0200 |
---|---|---|
committer | Bjoern Schiessle <schiessle@owncloud.com> | 2015-04-30 12:04:02 +0200 |
commit | 4ef9df8750553518143a7b1d088ab755db482cf1 (patch) | |
tree | 7f0a4885b29be371126ad81913bb01445c79a45a /apps/encryption/tests | |
parent | d308ec4f0ea54e8cb0c99228a480da8cb7cf30a8 (diff) | |
download | nextcloud-server-4ef9df8750553518143a7b1d088ab755db482cf1.tar.gz nextcloud-server-4ef9df8750553518143a7b1d088ab755db482cf1.zip |
skip user if we don't have a public key
Diffstat (limited to 'apps/encryption/tests')
-rw-r--r-- | apps/encryption/tests/lib/crypto/encryptionTest.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/apps/encryption/tests/lib/crypto/encryptionTest.php b/apps/encryption/tests/lib/crypto/encryptionTest.php index cb4ca2d3a12..70e48a2eab8 100644 --- a/apps/encryption/tests/lib/crypto/encryptionTest.php +++ b/apps/encryption/tests/lib/crypto/encryptionTest.php @@ -21,6 +21,7 @@ namespace OCA\Encryption\Tests\Crypto; +use OCA\Encryption\Exceptions\PublicKeyMissingException; use Test\TestCase; use OCA\Encryption\Crypto\Encryption; @@ -63,6 +64,74 @@ class EncryptionTest extends TestCase { $this->utilMock, $this->loggerMock ); + + } + + /** + * test if public key from one of the recipients is missing + */ + public function testEndUser1() { + $this->instance->begin('/foo/bar', 'user1', 'r', array(), array('users' => array('user1', 'user2', 'user3'))); + $this->endTest(); + } + + /** + * test if public key from owner is missing + * + * @expectedException \OCA\Encryption\Exceptions\PublicKeyMissingException + */ + public function testEndUser2() { + $this->instance->begin('/foo/bar', 'user2', 'r', array(), array('users' => array('user1', 'user2', 'user3'))); + $this->endTest(); + } + + /** + * common part of testEndUser1 and testEndUser2 + * + * @throws PublicKeyMissingException + */ + public function endTest() { + // prepare internal variables + $class = get_class($this->instance); + $module = new \ReflectionClass($class); + $isWriteOperation = $module->getProperty('isWriteOperation'); + $writeCache = $module->getProperty('writeCache'); + $isWriteOperation->setAccessible(true); + $writeCache->setAccessible(true); + $isWriteOperation->setValue($this->instance, true); + $writeCache->setValue($this->instance, ''); + $isWriteOperation->setAccessible(false); + $writeCache->setAccessible(false); + + $this->keyManagerMock->expects($this->any()) + ->method('getPublicKey') + ->will($this->returnCallback([$this, 'getPublicKeyCallback'])); + $this->keyManagerMock->expects($this->any()) + ->method('addSystemKeys') + ->will($this->returnCallback([$this, 'addSystemKeysCallback'])); + $this->cryptMock->expects($this->any()) + ->method('multiKeyEncrypt') + ->willReturn(true); + $this->cryptMock->expects($this->any()) + ->method('setAllFileKeys') + ->willReturn(true); + + $this->instance->end('/foo/bar'); + } + + + public function getPublicKeyCallback($uid) { + if ($uid === 'user2') { + throw new PublicKeyMissingException($uid); + } + return $uid; + } + + public function addSystemKeysCallback($accessList, $publicKeys) { + $this->assertSame(2, count($publicKeys)); + $this->assertArrayHasKey('user1', $publicKeys); + $this->assertArrayHasKey('user3', $publicKeys); + return $publicKeys; } /** |