Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1821101
ServerCopyMoveTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
6 KB
Subscribers
None
ServerCopyMoveTest.php
View Options
<?php
namespace
Sabre\DAV
;
use
Sabre\HTTP
;
require_once
'Sabre/HTTP/ResponseMock.php'
;
class
ServerCopyMoveTest
extends
\PHPUnit_Framework_TestCase
{
private
$response
;
/**
* @var Server
*/
private
$server
;
function
setUp
()
{
$this
->
response
=
new
HTTP\ResponseMock
();
$dir
=
new
FS\Directory
(
SABRE_TEMPDIR
);
$tree
=
new
Tree
(
$dir
);
$this
->
server
=
new
Server
(
$tree
);
$this
->
server
->
sapi
=
new
HTTP\SapiMock
();
$this
->
server
->
debugExceptions
=
true
;
$this
->
server
->
httpResponse
=
$this
->
response
;
file_put_contents
(
SABRE_TEMPDIR
.
'/test.txt'
,
'Test contents'
);
file_put_contents
(
SABRE_TEMPDIR
.
'/test2.txt'
,
'Test contents2'
);
mkdir
(
SABRE_TEMPDIR
.
'/col'
);
file_put_contents
(
SABRE_TEMPDIR
.
'col/test.txt'
,
'Test contents'
);
}
function
tearDown
()
{
$cleanUp
=
array
(
'test.txt'
,
'testput.txt'
,
'testcol'
,
'test2.txt'
,
'test3.txt'
,
'col/test.txt'
,
'col'
,
'col2/test.txt'
,
'col2'
);
foreach
(
$cleanUp
as
$file
)
{
$tmpFile
=
SABRE_TEMPDIR
.
'/'
.
$file
;
if
(
file_exists
(
$tmpFile
))
{
if
(
is_dir
(
$tmpFile
))
{
rmdir
(
$tmpFile
);
}
else
{
unlink
(
$tmpFile
);
}
}
}
}
function
testCopyOverWrite
()
{
$serverVars
=
array
(
'REQUEST_URI'
=>
'/test.txt'
,
'REQUEST_METHOD'
=>
'COPY'
,
'HTTP_DESTINATION'
=>
'/test2.txt'
,
);
$request
=
HTTP\Sapi
::
createFromServerArray
(
$serverVars
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
204
,
$this
->
response
->
status
,
'Received an incorrect HTTP status. Full body inspection: '
.
$this
->
response
->
body
);
$this
->
assertEquals
(
array
(
'X-Sabre-Version'
=>
[
Version
::
VERSION
],
'Content-Length'
=>
[
'0'
],
),
$this
->
response
->
getHeaders
()
);
$this
->
assertEquals
(
'Test contents'
,
file_get_contents
(
SABRE_TEMPDIR
.
'/test2.txt'
));
}
function
testCopyToSelf
()
{
$serverVars
=
array
(
'REQUEST_URI'
=>
'/test.txt'
,
'REQUEST_METHOD'
=>
'COPY'
,
'HTTP_DESTINATION'
=>
'/test.txt'
,
);
$request
=
HTTP\Sapi
::
createFromServerArray
(
$serverVars
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
403
,
$this
->
response
->
status
,
'Received an incorrect HTTP status. Full body inspection: '
.
$this
->
response
->
body
);
$this
->
assertEquals
(
'Test contents'
,
file_get_contents
(
SABRE_TEMPDIR
.
'/test.txt'
));
}
function
testNonExistantParent
()
{
$serverVars
=
array
(
'REQUEST_URI'
=>
'/test.txt'
,
'REQUEST_METHOD'
=>
'COPY'
,
'HTTP_DESTINATION'
=>
'/testcol2/test2.txt'
,
'HTTP_OVERWRITE'
=>
'F'
,
);
$request
=
HTTP\Sapi
::
createFromServerArray
(
$serverVars
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
array
(
'X-Sabre-Version'
=>
[
Version
::
VERSION
],
'Content-Type'
=>
[
'application/xml; charset=utf-8'
],
),
$this
->
response
->
getHeaders
()
);
$this
->
assertEquals
(
409
,
$this
->
response
->
status
);
}
function
testRandomOverwriteHeader
()
{
$serverVars
=
array
(
'REQUEST_URI'
=>
'/test.txt'
,
'REQUEST_METHOD'
=>
'COPY'
,
'HTTP_DESTINATION'
=>
'/testcol2/test2.txt'
,
'HTTP_OVERWRITE'
=>
'SURE!'
,
);
$request
=
HTTP\Sapi
::
createFromServerArray
(
$serverVars
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
400
,
$this
->
response
->
status
);
}
function
testCopyDirectory
()
{
$serverVars
=
array
(
'REQUEST_URI'
=>
'/col'
,
'REQUEST_METHOD'
=>
'COPY'
,
'HTTP_DESTINATION'
=>
'/col2'
,
);
$request
=
HTTP\Sapi
::
createFromServerArray
(
$serverVars
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
201
,
$this
->
response
->
status
,
'Full response: '
.
$this
->
response
->
getBody
(
true
));
$this
->
assertEquals
(
array
(
'X-Sabre-Version'
=>
[
Version
::
VERSION
],
'Content-Length'
=>
[
'0'
],
),
$this
->
response
->
getHeaders
()
);
$this
->
assertEquals
(
'Test contents'
,
file_get_contents
(
SABRE_TEMPDIR
.
'/col2/test.txt'
));
}
function
testSimpleCopyFile
()
{
$serverVars
=
array
(
'REQUEST_URI'
=>
'/test.txt'
,
'REQUEST_METHOD'
=>
'COPY'
,
'HTTP_DESTINATION'
=>
'/test3.txt'
,
);
$request
=
HTTP\Sapi
::
createFromServerArray
(
$serverVars
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
array
(
'X-Sabre-Version'
=>
[
Version
::
VERSION
],
'Content-Length'
=>
[
'0'
],
),
$this
->
response
->
getHeaders
()
);
$this
->
assertEquals
(
201
,
$this
->
response
->
status
);
$this
->
assertEquals
(
'Test contents'
,
file_get_contents
(
SABRE_TEMPDIR
.
'/test3.txt'
));
}
function
testSimpleCopyCollection
()
{
$serverVars
=
array
(
'REQUEST_URI'
=>
'/col'
,
'REQUEST_METHOD'
=>
'COPY'
,
'HTTP_DESTINATION'
=>
'/col2'
,
);
$request
=
HTTP\Sapi
::
createFromServerArray
(
$serverVars
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
201
,
$this
->
response
->
status
,
'Incorrect status received. Full response body: '
.
$this
->
response
->
body
);
$this
->
assertEquals
(
array
(
'X-Sabre-Version'
=>
[
Version
::
VERSION
],
'Content-Length'
=>
[
'0'
],
),
$this
->
response
->
getHeaders
()
);
$this
->
assertEquals
(
'Test contents'
,
file_get_contents
(
SABRE_TEMPDIR
.
'/col2/test.txt'
));
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Mon, Dec 23, 3:12 AM (1 d, 44 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
914183
Default Alt Text
ServerCopyMoveTest.php (6 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment