aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClark Tomlinson <fallen013@gmail.com>2015-03-31 12:17:01 -0400
committerThomas Müller <thomas.mueller@tmit.eu>2015-04-07 13:30:29 +0200
commit48e3864c779a6ac6a8222a5d7afbb91a1a84996d (patch)
tree204c0f93b67f5bc64a91ab263f6cd4edc9944c52
parent1358d07d3516ffb6ecedc451bd1a0ad60d3cb673 (diff)
downloadnextcloud-server-48e3864c779a6ac6a8222a5d7afbb91a1a84996d.tar.gz
nextcloud-server-48e3864c779a6ac6a8222a5d7afbb91a1a84996d.zip
:100:% coverage for session class
-rw-r--r--apps/encryption/lib/session.php9
-rw-r--r--apps/encryption/tests/lib/SessionTest.php140
2 files changed, 145 insertions, 4 deletions
diff --git a/apps/encryption/lib/session.php b/apps/encryption/lib/session.php
index 8da11e522ce..785991ec2e0 100644
--- a/apps/encryption/lib/session.php
+++ b/apps/encryption/lib/session.php
@@ -54,7 +54,7 @@ class Session {
*/
public function getStatus() {
$status = $this->session->get('encryptionInitialized');
- if (is_null($status)) {
+ if (!$status) {
$status = self::NOT_INITIALIZED;
}
@@ -69,7 +69,8 @@ class Session {
*/
public function getPrivateKey() {
$key = $this->session->get('privateKey');
- if (is_null($key)) {
+
+ if (!$key) {
throw new Exceptions\PrivateKeyMissingException('no private key stored in session');
}
return $key;
@@ -82,7 +83,7 @@ class Session {
*/
public function isPrivateKeySet() {
$key = $this->session->get('privateKey');
- if (is_null($key)) {
+ if (!$key) {
return false;
}
@@ -111,4 +112,4 @@ class Session {
}
-} \ No newline at end of file
+}
diff --git a/apps/encryption/tests/lib/SessionTest.php b/apps/encryption/tests/lib/SessionTest.php
new file mode 100644
index 00000000000..ea7ddf37a4b
--- /dev/null
+++ b/apps/encryption/tests/lib/SessionTest.php
@@ -0,0 +1,140 @@
+<?php
+/**
+ * @author Clark Tomlinson <clark@owncloud.com>
+ * @since 3/31/15, 10:19 AM
+ * @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 OCA\Encryption\Tests;
+
+
+use OCA\Encryption\Session;
+use Test\TestCase;
+
+class SessionTest extends TestCase {
+ private static $tempStorage = [];
+ /**
+ * @var Session
+ */
+ private $instance;
+ private $sessionMock;
+
+ /**
+ * @throws \OCA\Encryption\Exceptions\PrivateKeyMissingException
+ */
+ public function testThatGetPrivateKeyThrowsExceptionWhenNotSet() {
+ $this->setExpectedException('OCA\Encryption\Exceptions\PrivateKeyMissingException', 'no private key stored in session');
+ $this->instance->getPrivateKey();
+ }
+
+ /**
+ * @depends testThatGetPrivateKeyThrowsExceptionWhenNotSet
+ */
+ public function testSetAndGetPrivateKey() {
+ $this->instance->setPrivateKey('dummyPrivateKey');
+ $this->assertEquals('dummyPrivateKey', $this->instance->getPrivateKey());
+
+ }
+
+ /**
+ * @depends testSetAndGetPrivateKey
+ */
+ public function testIsPrivateKeySet() {
+ $this->assertTrue($this->instance->isPrivateKeySet());
+
+ unset(self::$tempStorage['privateKey']);
+ $this->assertFalse($this->instance->isPrivateKeySet());
+
+ // Set private key back so we can test clear method
+ self::$tempStorage['privateKey'] = 'dummyPrivateKey';
+ }
+
+ /**
+ *
+ */
+ public function testSetAndGetStatusWillSetAndReturn() {
+ // Check if get status will return 0 if it has not been set before
+ $this->assertEquals(0, $this->instance->getStatus());
+
+ $this->instance->setStatus(Session::NOT_INITIALIZED);
+ $this->assertEquals(0, $this->instance->getStatus());
+
+ $this->instance->setStatus(Session::INIT_EXECUTED);
+ $this->assertEquals(1, $this->instance->getStatus());
+
+ $this->instance->setStatus(Session::INIT_SUCCESSFUL);
+ $this->assertEquals(2, $this->instance->getStatus());
+ }
+
+ /**
+ * @param $key
+ * @param $value
+ */
+ public function setValueTester($key, $value) {
+ self::$tempStorage[$key] = $value;
+ }
+
+ /**
+ * @param $key
+ */
+ public function removeValueTester($key) {
+ unset(self::$tempStorage[$key]);
+ }
+
+ /**
+ * @param $key
+ * @return mixed
+ */
+ public function getValueTester($key) {
+ if (!empty(self::$tempStorage[$key])) {
+ return self::$tempStorage[$key];
+ }
+ return false;
+ }
+
+ /**
+ *
+ */
+ public function testClearWillRemoveValues() {
+ $this->instance->clear();
+ $this->assertEmpty(self::$tempStorage);
+ }
+
+ /**
+ *
+ */
+ protected function setUp() {
+ parent::setUp();
+ $this->sessionMock = $this->getMock('OCP\ISession');
+
+ $this->sessionMock->expects($this->any())
+ ->method('set')
+ ->will($this->returnCallback([$this, "setValueTester"]));
+
+ $this->sessionMock->expects($this->any())
+ ->method('get')
+ ->will($this->returnCallback([$this, "getValueTester"]));
+
+ $this->sessionMock->expects($this->any())
+ ->method('remove')
+ ->will($this->returnCallback([$this, "removeValueTester"]));
+
+
+ $this->instance = new Session($this->sessionMock);
+ }
+}