forked from extern/egroupware
109 lines
3.1 KiB
PHP
109 lines
3.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Tests for updating / deleting shares if underlying file is renamed or deleted
|
|
*
|
|
* We create files and delete them through the VFS, then check to see if the share is
|
|
* correctly deleted too.
|
|
*
|
|
* @link http://www.egroupware.org
|
|
* @author Nathan Gray
|
|
* @copyright (c) 2020 Nathan Gray
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
*/
|
|
|
|
namespace EGroupware\Api\Vfs;
|
|
|
|
require_once __DIR__ . '/SharingBase.php';
|
|
|
|
use EGroupware\Api\Vfs;
|
|
|
|
|
|
class SharingHooksTest extends SharingBase
|
|
{
|
|
|
|
/**
|
|
* Test that deleting a file deletes the share
|
|
*/
|
|
public function testDeleteFileDeletesShare()
|
|
{
|
|
$target = Vfs::get_home_dir();
|
|
|
|
$this->files = $this->addFiles($target);
|
|
$test_file = $this->files[0];
|
|
|
|
// Make sure there are no leftover shares
|
|
Sharing::delete(array('share_path' => $test_file));
|
|
|
|
// Create share
|
|
$this->shares[] = $created_share = Sharing::create('', $test_file, Sharing::READONLY, '', '');
|
|
|
|
$this->assertEquals(Vfs::PREFIX . $test_file, $created_share['share_path']);
|
|
|
|
// Now delete the file
|
|
Vfs::remove($test_file);
|
|
|
|
// Check for share for that file
|
|
$read_share = $this->readShare($created_share['share_id']);
|
|
|
|
$this->assertEquals(array(), $read_share, "Expected not to find the share, but something was found");
|
|
}
|
|
|
|
|
|
/**
|
|
* Test that deleting a directory deletes shares on any file in that directory
|
|
*/
|
|
public function testDeleteDirectoryDeletesShare()
|
|
{
|
|
$target = Vfs::get_home_dir();
|
|
|
|
$this->files = $this->addFiles($target);
|
|
$test_file = $target . '/sub_dir/subdir_test_file.txt';
|
|
|
|
// Make sure there are no leftover shares
|
|
Sharing::delete(array('share_path' => $test_file));
|
|
|
|
// Create share
|
|
$this->shares[] = $created_share = Sharing::create('', $test_file, Sharing::READONLY, '', '');
|
|
|
|
$this->assertEquals(Vfs::PREFIX . $test_file, $created_share['share_path']);
|
|
|
|
// Now delete the parent directory
|
|
Vfs::remove($target . '/sub_dir');
|
|
|
|
// Check for share for that file
|
|
$read_share = $this->readShare($created_share['share_id']);
|
|
|
|
$this->assertEquals(array(), $read_share, "Expected not to find the share, but something was found");
|
|
}
|
|
|
|
/**
|
|
* Test renaming a file updates the share
|
|
*/
|
|
public function testRenameFileUpdatesShare()
|
|
{
|
|
$target = Vfs::get_home_dir();
|
|
|
|
$this->files = $this->addFiles($target);
|
|
$test_file = $this->files[0];
|
|
|
|
// Make sure there are no leftover shares
|
|
Sharing::delete(array('share_path' => $test_file));
|
|
|
|
// Create share
|
|
$this->shares[] = $created_share = Sharing::create('', $test_file, Sharing::READONLY, '', '');
|
|
|
|
$this->assertEquals(Vfs::PREFIX . $test_file, $created_share['share_path']);
|
|
|
|
// Now rename the file
|
|
$this->files[] = $moved = $target . '/moved.txt';
|
|
Vfs::rename($test_file, $moved);
|
|
|
|
// Check for share for that file
|
|
$read_share = $this->readShare($created_share['share_id']);
|
|
|
|
$this->assertEquals(Vfs::PREFIX . $moved, $read_share['share_path'], "Expected find the share with a different path");
|
|
$this->assertNotEquals(Vfs::PREFIX . $moved, $created_share['share_path'], "Expected find the share with a different path");
|
|
}
|
|
}
|