]> source.dussan.org Git - nextcloud-server.git/commitdiff
:100:% coverage for session class
authorClark Tomlinson <fallen013@gmail.com>
Tue, 31 Mar 2015 16:17:01 +0000 (12:17 -0400)
committerThomas Müller <thomas.mueller@tmit.eu>
Tue, 7 Apr 2015 11:30:29 +0000 (13:30 +0200)
apps/encryption/lib/session.php
apps/encryption/tests/lib/SessionTest.php [new file with mode: 0644]

index 8da11e522cedbf2a2b169c6497ec78626610f95a..785991ec2e04e60cca090bbff8a63644264d52f5 100644 (file)
@@ -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 (file)
index 0000000..ea7ddf3
--- /dev/null
@@ -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);
+       }
+}