summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/tests/LockingTest.php
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@owncloud.com>2016-05-17 11:42:03 +0200
committerJoas Schilling <nickvergessen@owncloud.com>2016-05-25 15:00:00 +0200
commit3f0b2d148d875a2a4961a5b27309d379b9de1329 (patch)
tree8f28fbc44579568bef4c429d6422a87a5c45c8ca /apps/files_sharing/tests/LockingTest.php
parentb72706b450dd483bc25b0fd95266a8ac6c635ae6 (diff)
downloadnextcloud-server-3f0b2d148d875a2a4961a5b27309d379b9de1329.tar.gz
nextcloud-server-3f0b2d148d875a2a4961a5b27309d379b9de1329.zip
Move tests to PSR-4
Diffstat (limited to 'apps/files_sharing/tests/LockingTest.php')
-rw-r--r--apps/files_sharing/tests/LockingTest.php113
1 files changed, 113 insertions, 0 deletions
diff --git a/apps/files_sharing/tests/LockingTest.php b/apps/files_sharing/tests/LockingTest.php
new file mode 100644
index 00000000000..be6fa04437a
--- /dev/null
+++ b/apps/files_sharing/tests/LockingTest.php
@@ -0,0 +1,113 @@
+<?php
+/**
+ * @author Lukas Reschke <lukas@owncloud.com>
+ * @author Robin Appelman <icewind@owncloud.com>
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @copyright Copyright (c) 2016, 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\Files_Sharing\Tests;
+
+use OC\Files\Filesystem;
+use OC\Files\View;
+use OCP\Lock\ILockingProvider;
+
+/**
+ * Class LockingTest
+ *
+ * @group DB
+ *
+ * @package OCA\Files_Sharing\Tests
+ */
+class LockingTest extends TestCase {
+ /**
+ * @var \Test\Util\User\Dummy
+ */
+ private $userBackend;
+
+ private $ownerUid;
+ private $recipientUid;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->userBackend = new \Test\Util\User\Dummy();
+ \OC::$server->getUserManager()->registerBackend($this->userBackend);
+
+ $this->ownerUid = $this->getUniqueID('owner_');
+ $this->recipientUid = $this->getUniqueID('recipient_');
+ $this->userBackend->createUser($this->ownerUid, '');
+ $this->userBackend->createUser($this->recipientUid, '');
+
+ $this->loginAsUser($this->ownerUid);
+ Filesystem::mkdir('/foo');
+ Filesystem::file_put_contents('/foo/bar.txt', 'asd');
+ $fileId = Filesystem::getFileInfo('/foo/bar.txt')->getId();
+
+ $this->share(
+ \OCP\Share::SHARE_TYPE_USER,
+ '/foo/bar.txt',
+ $this->ownerUid,
+ $this->recipientUid,
+ \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_SHARE
+ );
+
+ $this->loginAsUser($this->recipientUid);
+ $this->assertTrue(Filesystem::file_exists('bar.txt'));
+ }
+
+ public function tearDown() {
+ \OC::$server->getUserManager()->removeBackend($this->userBackend);
+ parent::tearDown();
+ }
+
+ /**
+ * @expectedException \OCP\Lock\LockedException
+ */
+ public function testLockAsRecipient() {
+ $this->loginAsUser($this->ownerUid);
+
+ Filesystem::initMountPoints($this->recipientUid);
+ $recipientView = new View('/' . $this->recipientUid . '/files');
+ $recipientView->lockFile('bar.txt', ILockingProvider::LOCK_EXCLUSIVE);
+
+ Filesystem::rename('/foo', '/asd');
+ }
+
+ public function testUnLockAsRecipient() {
+ $this->loginAsUser($this->ownerUid);
+
+ Filesystem::initMountPoints($this->recipientUid);
+ $recipientView = new View('/' . $this->recipientUid . '/files');
+ $recipientView->lockFile('bar.txt', ILockingProvider::LOCK_EXCLUSIVE);
+ $recipientView->unlockFile('bar.txt', ILockingProvider::LOCK_EXCLUSIVE);
+
+ $this->assertTrue(Filesystem::rename('/foo', '/asd'));
+ }
+
+ public function testChangeLock() {
+
+ Filesystem::initMountPoints($this->recipientUid);
+ $recipientView = new View('/' . $this->recipientUid . '/files');
+ $recipientView->lockFile('bar.txt', ILockingProvider::LOCK_SHARED);
+ $recipientView->changeLock('bar.txt', ILockingProvider::LOCK_EXCLUSIVE);
+ $recipientView->unlockFile('bar.txt', ILockingProvider::LOCK_EXCLUSIVE);
+
+ $this->assertTrue(true);
+ }
+}