| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/a/w/e/awebpaca/Dolibarr/htdocs/includes/sabre/sabre/dav/tests/Sabre/DAV/ |
Upload File : |
<?php
namespace Sabre\DAV;
use Sabre\DAVServerTest;
use Sabre\HTTP;
/**
* Tests related to the COPY request.
*
* @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
class HttpCopyTest extends DAVServerTest {
/**
* Sets up the DAV tree.
*
* @return void
*/
function setUpTree() {
$this->tree = new Mock\Collection('root', [
'file1' => 'content1',
'file2' => 'content2',
'coll1' => [
'file3' => 'content3',
'file4' => 'content4',
]
]);
}
function testCopyFile() {
$request = new HTTP\Request('COPY', '/file1', [
'Destination' => '/file5'
]);
$response = $this->request($request);
$this->assertEquals(201, $response->getStatus());
$this->assertEquals('content1', $this->tree->getChild('file5')->get());
}
function testCopyFileToSelf() {
$request = new HTTP\Request('COPY', '/file1', [
'Destination' => '/file1'
]);
$response = $this->request($request);
$this->assertEquals(403, $response->getStatus());
}
function testCopyFileToExisting() {
$request = new HTTP\Request('COPY', '/file1', [
'Destination' => '/file2'
]);
$response = $this->request($request);
$this->assertEquals(204, $response->getStatus());
$this->assertEquals('content1', $this->tree->getChild('file2')->get());
}
function testCopyFileToExistingOverwriteT() {
$request = new HTTP\Request('COPY', '/file1', [
'Destination' => '/file2',
'Overwrite' => 'T',
]);
$response = $this->request($request);
$this->assertEquals(204, $response->getStatus());
$this->assertEquals('content1', $this->tree->getChild('file2')->get());
}
function testCopyFileToExistingOverwriteBadValue() {
$request = new HTTP\Request('COPY', '/file1', [
'Destination' => '/file2',
'Overwrite' => 'B',
]);
$response = $this->request($request);
$this->assertEquals(400, $response->getStatus());
}
function testCopyFileNonExistantParent() {
$request = new HTTP\Request('COPY', '/file1', [
'Destination' => '/notfound/file2',
]);
$response = $this->request($request);
$this->assertEquals(409, $response->getStatus());
}
function testCopyFileToExistingOverwriteF() {
$request = new HTTP\Request('COPY', '/file1', [
'Destination' => '/file2',
'Overwrite' => 'F',
]);
$response = $this->request($request);
$this->assertEquals(412, $response->getStatus());
$this->assertEquals('content2', $this->tree->getChild('file2')->get());
}
function testCopyFileToExistinBlockedCreateDestination() {
$this->server->on('beforeBind', function($path) {
if ($path === 'file2') {
return false;
}
});
$request = new HTTP\Request('COPY', '/file1', [
'Destination' => '/file2',
'Overwrite' => 'T',
]);
$response = $this->request($request);
// This checks if the destination file is intact.
$this->assertEquals('content2', $this->tree->getChild('file2')->get());
}
function testCopyColl() {
$request = new HTTP\Request('COPY', '/coll1', [
'Destination' => '/coll2'
]);
$response = $this->request($request);
$this->assertEquals(201, $response->getStatus());
$this->assertEquals('content3', $this->tree->getChild('coll2')->getChild('file3')->get());
}
function testCopyCollToSelf() {
$request = new HTTP\Request('COPY', '/coll1', [
'Destination' => '/coll1'
]);
$response = $this->request($request);
$this->assertEquals(403, $response->getStatus());
}
function testCopyCollToExisting() {
$request = new HTTP\Request('COPY', '/coll1', [
'Destination' => '/file2'
]);
$response = $this->request($request);
$this->assertEquals(204, $response->getStatus());
$this->assertEquals('content3', $this->tree->getChild('file2')->getChild('file3')->get());
}
function testCopyCollToExistingOverwriteT() {
$request = new HTTP\Request('COPY', '/coll1', [
'Destination' => '/file2',
'Overwrite' => 'T',
]);
$response = $this->request($request);
$this->assertEquals(204, $response->getStatus());
$this->assertEquals('content3', $this->tree->getChild('file2')->getChild('file3')->get());
}
function testCopyCollToExistingOverwriteF() {
$request = new HTTP\Request('COPY', '/coll1', [
'Destination' => '/file2',
'Overwrite' => 'F',
]);
$response = $this->request($request);
$this->assertEquals(412, $response->getStatus());
$this->assertEquals('content2', $this->tree->getChild('file2')->get());
}
function testCopyCollIntoSubtree() {
$request = new HTTP\Request('COPY', '/coll1', [
'Destination' => '/coll1/subcol',
]);
$response = $this->request($request);
$this->assertEquals(409, $response->getStatus());
}
}