summaryrefslogtreecommitdiffstats
path: root/tests/lib/Session
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2016-05-20 15:38:20 +0200
committerThomas Müller <DeepDiver1975@users.noreply.github.com>2016-05-20 15:38:20 +0200
commit94ad54ec9b96d41a614fbbad4a97b34c41a6901f (patch)
treef3eb7cdda2704aaf0cd59d58efe66bcbd34cb67d /tests/lib/Session
parent2ef751b1ec28f7b5c7113af60ec8c9fa0ae1cf87 (diff)
downloadnextcloud-server-94ad54ec9b96d41a614fbbad4a97b34c41a6901f.tar.gz
nextcloud-server-94ad54ec9b96d41a614fbbad4a97b34c41a6901f.zip
Move tests/ to PSR-4 (#24731)
* Move a-b to PSR-4 * Move c-d to PSR-4 * Move e+g to PSR-4 * Move h-l to PSR-4 * Move m-r to PSR-4 * Move s-u to PSR-4 * Move files/ to PSR-4 * Move remaining tests to PSR-4 * Remove Test\ from old autoloader
Diffstat (limited to 'tests/lib/Session')
-rw-r--r--tests/lib/Session/CryptoSessionDataTest.php53
-rw-r--r--tests/lib/Session/CryptoWrappingTest.php73
-rw-r--r--tests/lib/Session/MemoryTest.php26
-rw-r--r--tests/lib/Session/Session.php67
4 files changed, 219 insertions, 0 deletions
diff --git a/tests/lib/Session/CryptoSessionDataTest.php b/tests/lib/Session/CryptoSessionDataTest.php
new file mode 100644
index 00000000000..ee6bcbf11c1
--- /dev/null
+++ b/tests/lib/Session/CryptoSessionDataTest.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @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 Test\Session;
+
+use OC\Session\CryptoSessionData;
+
+class CryptoSessionDataTest extends Session {
+ /** @var \PHPUnit_Framework_MockObject_MockObject|\OCP\Security\ICrypto */
+ protected $crypto;
+
+ /** @var \OCP\ISession */
+ protected $wrappedSession;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->wrappedSession = new \OC\Session\Memory($this->getUniqueID());
+ $this->crypto = $this->getMockBuilder('OCP\Security\ICrypto')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->crypto->expects($this->any())
+ ->method('encrypt')
+ ->willReturnCallback(function ($input) {
+ return '#' . $input . '#';
+ });
+ $this->crypto->expects($this->any())
+ ->method('decrypt')
+ ->willReturnCallback(function ($input) {
+ return substr($input, 1, -1);
+ });
+
+ $this->instance = new CryptoSessionData($this->wrappedSession, $this->crypto, 'PASS');
+ }
+}
diff --git a/tests/lib/Session/CryptoWrappingTest.php b/tests/lib/Session/CryptoWrappingTest.php
new file mode 100644
index 00000000000..e1fadbf933f
--- /dev/null
+++ b/tests/lib/Session/CryptoWrappingTest.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @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 Test\Session;
+
+use OC\Session\CryptoSessionData;
+use Test\TestCase;
+
+class CryptoWrappingTest extends TestCase {
+ /** @var \PHPUnit_Framework_MockObject_MockObject|\OCP\Security\ICrypto */
+ protected $crypto;
+
+ /** @var \PHPUnit_Framework_MockObject_MockObject|\OCP\ISession */
+ protected $wrappedSession;
+
+ /** @var \OC\Session\CryptoSessionData */
+ protected $instance;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->wrappedSession = $this->getMockBuilder('OCP\ISession')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->crypto = $this->getMockBuilder('OCP\Security\ICrypto')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->crypto->expects($this->any())
+ ->method('encrypt')
+ ->willReturnCallback(function ($input) {
+ return $input;
+ });
+ $this->crypto->expects($this->any())
+ ->method('decrypt')
+ ->willReturnCallback(function ($input) {
+ return substr($input, 1, -1);
+ });
+
+ $this->instance = new CryptoSessionData($this->wrappedSession, $this->crypto, 'PASS');
+ }
+
+ public function testUnwrappingGet() {
+ $unencryptedValue = 'foobar';
+ $encryptedValue = $this->crypto->encrypt($unencryptedValue);
+
+ $this->wrappedSession->expects($this->once())
+ ->method('get')
+ ->with('encrypted_session_data')
+ ->willReturnCallback(function () use ($encryptedValue) {
+ return $encryptedValue;
+ });
+
+ $this->assertSame($unencryptedValue, $this->wrappedSession->get('encrypted_session_data'));
+ }
+}
diff --git a/tests/lib/Session/MemoryTest.php b/tests/lib/Session/MemoryTest.php
new file mode 100644
index 00000000000..d92d7b90e5e
--- /dev/null
+++ b/tests/lib/Session/MemoryTest.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace Test\Session;
+
+class MemoryTest extends Session {
+
+ protected function setUp() {
+ parent::setUp();
+ $this->instance = new \OC\Session\Memory($this->getUniqueID());
+ }
+
+ /**
+ * @expectedException \OCP\Session\Exceptions\SessionNotAvailableException
+ */
+ public function testThrowsExceptionOnGetId() {
+ $this->instance->getId();
+ }
+
+}
diff --git a/tests/lib/Session/Session.php b/tests/lib/Session/Session.php
new file mode 100644
index 00000000000..a1ed01b2ec8
--- /dev/null
+++ b/tests/lib/Session/Session.php
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace Test\Session;
+
+abstract class Session extends \Test\TestCase {
+ /**
+ * @var \OC\Session\Session
+ */
+ protected $instance;
+
+ protected function tearDown() {
+ $this->instance->clear();
+ parent::tearDown();
+ }
+
+ public function testNotExistsEmpty() {
+ $this->assertFalse($this->instance->exists('foo'));
+ }
+
+ public function testExistsAfterSet() {
+ $this->instance->set('foo', 1);
+ $this->assertTrue($this->instance->exists('foo'));
+ }
+
+ public function testNotExistsAfterRemove() {
+ $this->instance->set('foo', 1);
+ $this->instance->remove('foo');
+ $this->assertFalse($this->instance->exists('foo'));
+ }
+
+ public function testGetNonExisting() {
+ $this->assertNull($this->instance->get('foo'));
+ }
+
+ public function testGetAfterSet() {
+ $this->instance->set('foo', 'bar');
+ $this->assertEquals('bar', $this->instance->get(('foo')));
+ }
+
+ public function testRemoveNonExisting() {
+ $this->assertFalse($this->instance->exists('foo'));
+ $this->instance->remove('foo');
+ $this->assertFalse($this->instance->exists('foo'));
+ }
+
+ public function testNotExistsAfterClear() {
+ $this->instance->set('foo', 1);
+ $this->instance->clear();
+ $this->assertFalse($this->instance->exists('foo'));
+ }
+
+ public function testArrayInterface() {
+ $this->assertFalse(isset($this->instance['foo']));
+ $this->instance['foo'] = 'bar';
+ $this->assertTrue(isset($this->instance['foo']));
+ $this->assertEquals('bar', $this->instance['foo']);
+ unset($this->instance['foo']);
+ $this->assertFalse(isset($this->instance['foo']));
+ }
+}