Example #1
0
 protected function tearDown()
 {
     foreach ($this->users as $user) {
         \OC_User::deleteUser($user);
     }
     \OC_Group::deleteGroup('admin');
     parent::tearDown();
 }
Example #2
0
 public function tearDown()
 {
     OC_Mount_Config::$skipTest = false;
     \OC_User::deleteUser(self::TEST_USER2);
     \OC_User::deleteUser(self::TEST_USER1);
     \OC_Group::deleteGroup(self::TEST_GROUP1);
     \OC_Group::deleteGroup(self::TEST_GROUP2);
     @unlink($this->dataDir . '/mount.json');
     OCP\Config::setAppValue('files_external', 'user_mounting_backends', $this->oldAllowedBackends);
 }
Example #3
0
 public static function tearDownAfterClass()
 {
     // cleanup users
     \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER1);
     \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER2);
     \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER3);
     // delete group
     \OC_Group::deleteGroup(self::TEST_FILES_SHARING_API_GROUP1);
     // reset app files_encryption
     if (self::$stateFilesEncryption) {
         \OC_App::enable('files_encryption');
     } else {
         \OC_App::disable('files_encryption');
     }
 }
 function OC_wordpress()
 {
     $this->db_conn = '';
     $this->params = array('wordpress_db_host', 'wordpress_db_user', 'wordpress_db_password', 'wordpress_db_name', 'wordpress_db_prefix', 'wordpress_url', 'wordpress_hash_salt', 'wordpress_have_to_be_logged', 'wordpress_global_group', 'wordpress_restrict_group', 'wordpress_add_button');
     $this->params = $this->getParams();
     if (OC_Appconfig::getValue('user_wordpress', 'clean_groups', 0) == 0 && isset($this->db)) {
         $res = $this->db->query('SELECT `blog_id`,`domain` FROM ' . $this->wordpress_db_prefix . 'blogs WHERE `deleted`=0 AND `spam`=0 ');
         if ($res->num_rows) {
             while ($blog = mysqli_fetch_assoc($res)) {
                 OC_Group::deleteGroup($blog['domain']);
             }
         }
         OC_Appconfig::setValue('user_wordpress', 'clean_groups', '1');
     }
     $this->connectdb();
 }
Example #5
0
 public static function tearDownAfterClass()
 {
     // cleanup users
     \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER1);
     \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER2);
     \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER3);
     // delete group
     \OC_Group::deleteGroup(self::TEST_FILES_SHARING_API_GROUP1);
     \OC_Util::tearDownFS();
     \OC_User::setUserId('');
     Filesystem::tearDown();
     // reset backend
     \OC_User::clearBackends();
     \OC_User::useBackend('database');
     \OC_Group::clearBackends();
     \OC_Group::useBackend(new \OC_Group_Database());
     parent::tearDownAfterClass();
 }
Example #6
0
 public static function deleteGroup($parameters)
 {
     // Check it exists
     if (!OC_Group::groupExists($parameters['groupid'])) {
         return 101;
     } else {
         if ($parameters['groupid'] == 'admin') {
             // Cannot delete admin group
             return 102;
         } else {
             if (OC_Group::deleteGroup($parameters['groupid'])) {
                 return 100;
             } else {
                 return 103;
             }
         }
     }
 }
Example #7
0
 public function testGetSubAdminsOfGroup()
 {
     $user1 = $this->generateUsers();
     $user2 = $this->generateUsers();
     self::loginAsUser($user1);
     \OC_Group::addToGroup($user1, 'admin');
     $group1 = $this->getUniqueID();
     \OC_Group::createGroup($group1);
     \OC_SubAdmin::createSubAdmin($user2, $group1);
     $result = \OCA\provisioning_api\Groups::getSubAdminsOfGroup(array('groupid' => $group1));
     $this->assertInstanceOf('OC_OCS_Result', $result);
     $this->assertTrue($result->succeeded());
     $data = $result->getData();
     $this->assertEquals($user2, reset($data));
     \OC_Group::deleteGroup($group1);
     $user1 = $this->generateUsers();
     self::loginAsUser($user1);
     \OC_Group::addToGroup($user1, 'admin');
     $result = \OCA\provisioning_api\Groups::getSubAdminsOfGroup(array('groupid' => $this->getUniqueID()));
     $this->assertInstanceOf('OC_OCS_Result', $result);
     $this->assertFalse($result->succeeded());
     $this->assertEquals(101, $result->getStatusCode());
 }
Example #8
0
    exit;
}
if (!OC_User::isAdminUser(OC_User::getUser()) && (!OC_SubAdmin::isUserAccessible(OC_User::getUser(), $username) || !OC_SubAdmin::isGroupAccessible(OC_User::getUser(), $group))) {
    $l = OC_L10N::get('core');
    OC_JSON::error(array('data' => array('message' => $l->t('Authentication error'))));
    exit;
}
if (!OC_Group::groupExists($group)) {
    OC_Group::createGroup($group);
}
$l = OC_L10N::get('settings');
$error = $l->t("Unable to add user to group %s", $group);
$action = "add";
// Toggle group
if (OC_Group::inGroup($username, $group)) {
    $action = "remove";
    $error = $l->t("Unable to remove user from group %s", $group);
    $success = OC_Group::removeFromGroup($username, $group);
    $usersInGroup = OC_Group::usersInGroup($group);
    if (count($usersInGroup) == 0) {
        OC_Group::deleteGroup($group);
    }
} else {
    $success = OC_Group::addToGroup($username, $group);
}
// Return Success story
if ($success) {
    OC_JSON::success(array("data" => array("username" => $username, "action" => $action, "groupname" => $group)));
} else {
    OC_JSON::error(array("data" => array("message" => $error)));
}
Example #9
0
 public static function tearDownAfterClass()
 {
     // cleanup test user
     \OC_User::deleteUser(self::TEST_ENCRYPTION_UTIL_USER1);
     \OC_User::deleteUser(self::TEST_ENCRYPTION_UTIL_USER2);
     \OC_User::deleteUser(self::TEST_ENCRYPTION_UTIL_LEGACY_USER);
     //cleanup groups
     \OC_Group::deleteGroup(self::TEST_ENCRYPTION_UTIL_GROUP1);
     \OC_Group::deleteGroup(self::TEST_ENCRYPTION_UTIL_GROUP2);
     parent::tearDownAfterClass();
 }
Example #10
0
<?php

// Init owncloud
require_once '../../lib/base.php';
OC_JSON::checkAdminUser();
OCP\JSON::callCheck();
$name = $_POST["groupname"];
// Return Success story
if (OC_Group::deleteGroup($name)) {
    OC_JSON::success(array("data" => array("groupname" => $name)));
} else {
    OC_JSON::error(array("data" => array("message" => $l->t("Unable to delete group"))));
}
Example #11
0
 public static function tearDownAfterClass()
 {
     // clean group
     \OC_Group::deleteGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1);
     // cleanup users
     \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1);
     \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2);
     \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3);
     \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4);
 }
Example #12
0
 public function testMultiBackend()
 {
     $userBackend = new \Test\Util\User\Dummy();
     \OC_User::getManager()->registerBackend($userBackend);
     $backend1 = new OC_Group_Dummy();
     $backend2 = new OC_Group_Dummy();
     OC_Group::useBackend($backend1);
     OC_Group::useBackend($backend2);
     $group1 = $this->getUniqueID();
     $group2 = $this->getUniqueID();
     OC_Group::createGroup($group1);
     //groups should be added to the first registered backend
     $this->assertEquals(array($group1), $backend1->getGroups());
     $this->assertEquals(array(), $backend2->getGroups());
     $this->assertEquals(array($group1), OC_Group::getGroups());
     $this->assertTrue(OC_Group::groupExists($group1));
     $this->assertFalse(OC_Group::groupExists($group2));
     $backend1->createGroup($group2);
     $this->assertEquals(array($group1, $group2), OC_Group::getGroups());
     $this->assertTrue(OC_Group::groupExists($group1));
     $this->assertTrue(OC_Group::groupExists($group2));
     $user1 = $this->getUniqueID();
     $user2 = $this->getUniqueID();
     $userBackend->createUser($user1, '');
     $userBackend->createUser($user2, '');
     $this->assertFalse(OC_Group::inGroup($user1, $group1));
     $this->assertFalse(OC_Group::inGroup($user2, $group1));
     $this->assertTrue(OC_Group::addToGroup($user1, $group1));
     $this->assertTrue(OC_Group::inGroup($user1, $group1));
     $this->assertFalse(OC_Group::inGroup($user2, $group1));
     $this->assertFalse($backend2->inGroup($user1, $group1));
     OC_Group::addToGroup($user1, $group1);
     $this->assertEquals(array($user1), OC_Group::usersInGroup($group1));
     $this->assertEquals(array($group1), OC_Group::getUserGroups($user1));
     $this->assertEquals(array(), OC_Group::getUserGroups($user2));
     OC_Group::deleteGroup($group1);
     $this->assertEquals(array(), OC_Group::getUserGroups($user1));
     $this->assertEquals(array(), OC_Group::usersInGroup($group1));
     $this->assertFalse(OC_Group::inGroup($user1, $group1));
 }
Example #13
0
 public static function tearDownAfterClass()
 {
     // cleanup users
     $user = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER1);
     if ($user !== null) {
         $user->delete();
     }
     $user = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER2);
     if ($user !== null) {
         $user->delete();
     }
     $user = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER3);
     if ($user !== null) {
         $user->delete();
     }
     // delete group
     \OC_Group::deleteGroup(self::TEST_FILES_SHARING_API_GROUP1);
     \OC_Util::tearDownFS();
     \OC_User::setUserId('');
     Filesystem::tearDown();
     // reset backend
     \OC_User::clearBackends();
     \OC_User::useBackend('database');
     \OC_Group::clearBackends();
     \OC_Group::useBackend(new \OC\Group\Database());
     parent::tearDownAfterClass();
 }
Example #14
0
 public function testShareWithGroup()
 {
     // Invalid shares
     $message = 'Sharing test.txt failed, because the group foobar does not exist';
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     $policy = OC_Appconfig::getValue('core', 'shareapi_only_share_with_group_members', 'no');
     OC_Appconfig::setValue('core', 'shareapi_only_share_with_group_members', 'yes');
     $message = 'Sharing test.txt failed, because ' . $this->user1 . ' is not a member of the group ' . $this->group2;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     OC_Appconfig::setValue('core', 'shareapi_only_share_with_group_members', $policy);
     // Valid share
     $this->shareUserOneTestFileWithGroupOne();
     // Attempt to share again
     OC_User::setUserId($this->user1);
     $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->group1;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Attempt to share back to owner of group share
     OC_User::setUserId($this->user2);
     $message = 'Sharing test.txt failed, because the user ' . $this->user1 . ' is the original sharer';
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Attempt to share back to group
     $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->group1;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Attempt to share back to member of group
     $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->user3;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Unshare
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1));
     // Valid share with same person - user then group
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE));
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     OC_User::setUserId($this->user3);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     // Valid reshare
     OC_User::setUserId($this->user2);
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_READ));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Unshare from user only
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Valid share with same person - group then user
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     // Unshare from group only
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     // Attempt user specific target conflict
     OC_User::setUserId($this->user3);
     $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE));
     OC_User::setUserId($this->user2);
     $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET);
     $this->assertEquals(2, count($to_test));
     $this->assertTrue(in_array('test.txt', $to_test));
     $this->assertTrue(in_array('test1.txt', $to_test));
     // Valid reshare
     $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Remove user from group
     OC_Group::removeFromGroup($this->user2, $this->group1);
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Add user to group
     OC_Group::addToGroup($this->user4, $this->group1);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Unshare from self
     $this->assertTrue(OCP\Share::unshareFromSelf('test', 'test.txt'));
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Unshare from self via source
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshareFromSelf('test', 'share.txt', true));
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Remove group
     OC_Group::deleteGroup($this->group1);
     OC_User::setUserId($this->user4);
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     OC_User::setUserId($this->user3);
     $this->assertEquals(array(), OCP\Share::getItemsShared('test'));
 }
Example #15
0
 public static function tearDownAfterClass()
 {
     // cleanup test user
     \OC_User::deleteUser(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1);
     \OC_User::deleteUser(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER2);
     \OC_User::deleteUser(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER);
     //cleanup groups
     \OC_Group::deleteGroup(self::TEST_ENCRYPTION_UTIL_GROUP1);
     \OC_Group::deleteGroup(self::TEST_ENCRYPTION_UTIL_GROUP2);
     \OC_Hook::clear();
     \OC_FileProxy::clearProxies();
     // Delete keys in /data/
     $view = new \OC\Files\View('/');
     $view->rmdir('public-keys');
     $view->rmdir('owncloud_private_key');
 }
Example #16
0
 public static function tearDownAfterClass()
 {
     // clean group
     \OC_Group::deleteGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1);
     // cleanup users
     \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1);
     \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2);
     \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3);
     \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4);
     \OC_Hook::clear();
     \OC_FileProxy::clearProxies();
     // Delete keys in /data/
     $view = new \OC\Files\View('/');
     $view->rmdir('public-keys');
     $view->rmdir('owncloud_private_key');
 }
Example #17
0
 public function testShareWithGroup()
 {
     // Invalid shares
     $message = 'Sharing test.txt failed, because the group foobar does not exist';
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     $policy = \OC::$server->getAppConfig()->getValue('core', 'shareapi_only_share_with_group_members', 'no');
     \OC::$server->getAppConfig()->setValue('core', 'shareapi_only_share_with_group_members', 'yes');
     $message = 'Sharing test.txt failed, because ' . $this->user1 . ' is not a member of the group ' . $this->group2;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     \OC::$server->getAppConfig()->setValue('core', 'shareapi_only_share_with_group_members', $policy);
     // Valid share
     $this->shareUserOneTestFileWithGroupOne();
     // check if only the group share was created and not a single db-entry for each user
     $statement = \OCP\DB::prepare('select `id` from `*PREFIX*share`');
     $query = $statement->execute();
     $result = $query->fetchAll();
     $this->assertSame(1, count($result));
     // Attempt to share again
     OC_User::setUserId($this->user1);
     $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->group1;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Attempt to share back to owner of group share
     OC_User::setUserId($this->user2);
     $message = 'Sharing test.txt failed, because the user ' . $this->user1 . ' is the original sharer';
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Attempt to share back to group
     $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->group1;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Attempt to share back to member of group
     $message = 'Sharing test.txt failed, because this item is already shared with ' . $this->user3;
     try {
         OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ);
         $this->fail('Exception was expected: ' . $message);
     } catch (Exception $exception) {
         $this->assertEquals($message, $exception->getMessage());
     }
     // Unshare
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1));
     // Valid share with same person - user then group
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE));
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     OC_User::setUserId($this->user3);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     // Valid reshare
     OC_User::setUserId($this->user2);
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_READ));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Unshare from user only
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Valid share with same person - group then user
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     // Unshare from group only
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS));
     // Attempt user specific target conflict
     OC_User::setUserId($this->user3);
     \OCP\Util::connectHook('OCP\\Share', 'post_shared', 'DummyHookListener', 'listen');
     $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE));
     $this->assertEquals(OCP\Share::SHARE_TYPE_GROUP, DummyHookListener::$shareType);
     OC_User::setUserId($this->user2);
     $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET);
     $this->assertEquals(2, count($to_test));
     $this->assertTrue(in_array('test.txt', $to_test));
     $this->assertTrue(in_array('test1.txt', $to_test));
     // Valid reshare
     $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Remove user from group
     OC_Group::removeFromGroup($this->user2, $this->group1);
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     OC_User::setUserId($this->user4);
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Add user to group
     OC_Group::addToGroup($this->user4, $this->group1);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Unshare from self
     $this->assertTrue(OCP\Share::unshareFromSelf('test', 'test.txt'));
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     OC_User::setUserId($this->user2);
     $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Unshare from self via source
     OC_User::setUserId($this->user1);
     $this->assertTrue(OCP\Share::unshareFromSelf('test', 'share.txt', true));
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     // Remove group
     OC_Group::deleteGroup($this->group1);
     OC_User::setUserId($this->user4);
     $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
     OC_User::setUserId($this->user3);
     $this->assertEquals(array(), OCP\Share::getItemsShared('test'));
 }
Example #18
0
 function testUnshareFromSelf()
 {
     \OC_Group::createGroup('testGroup');
     \OC_Group::addToGroup(self::TEST_FILES_SHARING_API_USER2, 'testGroup');
     \OC_Group::addToGroup(self::TEST_FILES_SHARING_API_USER3, 'testGroup');
     $fileinfo = $this->view->getFileInfo($this->filename);
     $pathinfo = pathinfo($this->filename);
     $duplicate = '/' . $pathinfo['filename'] . ' (2).' . $pathinfo['extension'];
     $result = \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Files_Sharing::TEST_FILES_SHARING_API_USER2, 31);
     $this->assertTrue($result);
     $result = \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'testGroup', 31);
     $this->assertTrue($result);
     self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
     $this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
     $this->assertTrue(\OC\Files\Filesystem::file_exists($duplicate));
     self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
     $this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
     $this->assertFalse(\OC\Files\Filesystem::file_exists($duplicate));
     self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
     \OC\Files\Filesystem::unlink($this->filename);
     self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
     $this->assertFalse(\OC\Files\Filesystem::file_exists($this->filename));
     $this->assertTrue(\OC\Files\Filesystem::file_exists($duplicate));
     // for user3 nothing should change
     self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
     $this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
     $this->assertFalse(\OC\Files\Filesystem::file_exists($duplicate));
     self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
     \OC\Files\Filesystem::unlink($duplicate);
     self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
     $this->assertFalse(\OC\Files\Filesystem::file_exists($this->filename));
     $this->assertFalse(\OC\Files\Filesystem::file_exists($duplicate));
     // for user3 nothing should change
     self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
     $this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
     $this->assertFalse(\OC\Files\Filesystem::file_exists($duplicate));
     //cleanup
     self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
     \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'testGroup');
     \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2);
     \OC_Group::removeFromGroup(self::TEST_FILES_SHARING_API_USER2, 'testGroup');
     \OC_Group::removeFromGroup(self::TEST_FILES_SHARING_API_USER2, 'testGroup');
     \OC_Group::deleteGroup('testGroup');
 }
Example #19
0
 /**
  * @dataProvider dataProviderForTestIsSharingDisabledForUser
  * @param array $groups existing groups
  * @param array $membership groups the user belong to
  * @param array $excludedGroups groups which should be excluded from sharing
  * @param bool $expected expected result
  */
 function testIsSharingDisabledForUser($groups, $membership, $excludedGroups, $expected)
 {
     $uid = "user1";
     \OC_User::setUserId($uid);
     \OC_User::createUser($uid, "passwd");
     foreach ($groups as $group) {
         \OC_Group::createGroup($group);
     }
     foreach ($membership as $group) {
         \OC_Group::addToGroup($uid, $group);
     }
     $appConfig = \OC::$server->getAppConfig();
     $appConfig->setValue('core', 'shareapi_exclude_groups_list', implode(',', $excludedGroups));
     $appConfig->setValue('core', 'shareapi_exclude_groups', 'yes');
     $result = \OCP\Util::isSharingDisabledForUser();
     $this->assertSame($expected, $result);
     // cleanup
     \OC_User::deleteUser($uid);
     \OC_User::setUserId('');
     foreach ($groups as $group) {
         \OC_Group::deleteGroup($group);
     }
     $appConfig->setValue('core', 'shareapi_exclude_groups_list', '');
     $appConfig->setValue('core', 'shareapi_exclude_groups', 'no');
 }
Example #20
0
 public static function tearDownAfterClass()
 {
     // clean group
     \OC_Group::deleteGroup(self::TEST_ENCRYPTION_SHARE_GROUP1);
     // cleanup users
     \OC_User::deleteUser(self::TEST_ENCRYPTION_SHARE_USER1);
     \OC_User::deleteUser(self::TEST_ENCRYPTION_SHARE_USER2);
     \OC_User::deleteUser(self::TEST_ENCRYPTION_SHARE_USER3);
     \OC_User::deleteUser(self::TEST_ENCRYPTION_SHARE_USER4);
     parent::tearDownAfterClass();
 }
Example #21
0
 protected function tearDown()
 {
     $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `item_type` = ?');
     $query->execute(array('test'));
     \OC::$server->getAppConfig()->setValue('core', 'shareapi_allow_resharing', $this->resharing);
     $user = \OC::$server->getUserManager()->get($this->user1);
     if ($user !== null) {
         $user->delete();
     }
     $user = \OC::$server->getUserManager()->get($this->user2);
     if ($user !== null) {
         $user->delete();
     }
     $user = \OC::$server->getUserManager()->get($this->user3);
     if ($user !== null) {
         $user->delete();
     }
     $user = \OC::$server->getUserManager()->get($this->user4);
     if ($user !== null) {
         $user->delete();
     }
     $user = \OC::$server->getUserManager()->get($this->user5);
     if ($user !== null) {
         $user->delete();
     }
     $user = \OC::$server->getUserManager()->get($this->user6);
     if ($user !== null) {
         $user->delete();
     }
     $user = \OC::$server->getUserManager()->get($this->groupAndUser);
     if ($user !== null) {
         $user->delete();
     }
     \OC_Group::deleteGroup($this->group1);
     \OC_Group::deleteGroup($this->group2);
     \OC_Group::deleteGroup($this->groupAndUser);
     $this->logout();
     parent::tearDown();
 }
Example #22
0
 function testMultiBackend()
 {
     $backend1 = new OC_Group_Dummy();
     $backend2 = new OC_Group_Dummy();
     OC_Group::useBackend($backend1);
     OC_Group::useBackend($backend2);
     $group1 = uniqid();
     $group2 = uniqid();
     OC_Group::createGroup($group1);
     //groups should be added to the first registered backend
     $this->assertEqual(array($group1), $backend1->getGroups());
     $this->assertEqual(array(), $backend2->getGroups());
     $this->assertEqual(array($group1), OC_Group::getGroups());
     $this->assertTrue(OC_Group::groupExists($group1));
     $this->assertFalse(OC_Group::groupExists($group2));
     $backend1->createGroup($group2);
     $this->assertEqual(array($group1, $group2), OC_Group::getGroups());
     $this->assertTrue(OC_Group::groupExists($group1));
     $this->assertTrue(OC_Group::groupExists($group2));
     $user1 = uniqid();
     $user2 = uniqid();
     $this->assertFalse(OC_Group::inGroup($user1, $group1));
     $this->assertFalse(OC_Group::inGroup($user2, $group1));
     $this->assertTrue(OC_Group::addToGroup($user1, $group1));
     $this->assertTrue(OC_Group::inGroup($user1, $group1));
     $this->assertFalse(OC_Group::inGroup($user2, $group1));
     $this->assertFalse($backend2->inGroup($user1, $group1));
     $this->assertFalse(OC_Group::addToGroup($user1, $group1));
     $this->assertEqual(array($user1), OC_Group::usersInGroup($group1));
     $this->assertEqual(array($group1), OC_Group::getUserGroups($user1));
     $this->assertEqual(array(), OC_Group::getUserGroups($user2));
     OC_Group::deleteGroup($group1);
     $this->assertEqual(array(), OC_Group::getUserGroups($user1));
     $this->assertEqual(array(), OC_Group::usersInGroup($group1));
     $this->assertFalse(OC_Group::inGroup($user1, $group1));
 }