Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1842019
TemporaryFileFilterTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
6 KB
Subscribers
None
TemporaryFileFilterTest.php
View Options
<?php
namespace
Sabre\DAV
;
use
Sabre\HTTP
;
class
TemporaryFileFilterTest
extends
AbstractServer
{
function
setUp
()
{
parent
::
setUp
();
$plugin
=
new
TemporaryFileFilterPlugin
(
SABRE_TEMPDIR
.
'/tff'
);
$this
->
server
->
addPlugin
(
$plugin
);
}
function
testPutNormal
()
{
$request
=
new
HTTP\Request
(
'PUT'
,
'/testput.txt'
,
[],
'Testing new file'
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
''
,
$this
->
response
->
body
);
$this
->
assertEquals
(
201
,
$this
->
response
->
status
);
$this
->
assertEquals
(
'0'
,
$this
->
response
->
getHeader
(
'Content-Length'
));
$this
->
assertEquals
(
'Testing new file'
,
file_get_contents
(
SABRE_TEMPDIR
.
'/testput.txt'
));
}
function
testPutTemp
()
{
// mimicking an OS/X resource fork
$request
=
new
HTTP\Request
(
'PUT'
,
'/._testput.txt'
,
[],
'Testing new file'
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
''
,
$this
->
response
->
body
);
$this
->
assertEquals
(
201
,
$this
->
response
->
status
);
$this
->
assertEquals
(
array
(
'X-Sabre-Temp'
=>
[
'true'
],
),
$this
->
response
->
getHeaders
());
$this
->
assertFalse
(
file_exists
(
SABRE_TEMPDIR
.
'/._testput.txt'
),
'._testput.txt should not exist in the regular file structure.'
);
}
function
testPutTempIfNoneMatch
()
{
// mimicking an OS/X resource fork
$request
=
new
HTTP\Request
(
'PUT'
,
'/._testput.txt'
,
[
'If-None-Match'
=>
'*'
],
'Testing new file'
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
''
,
$this
->
response
->
body
);
$this
->
assertEquals
(
201
,
$this
->
response
->
status
);
$this
->
assertEquals
(
array
(
'X-Sabre-Temp'
=>
[
'true'
],
),
$this
->
response
->
getHeaders
());
$this
->
assertFalse
(
file_exists
(
SABRE_TEMPDIR
.
'/._testput.txt'
),
'._testput.txt should not exist in the regular file structure.'
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
412
,
$this
->
response
->
status
);
$this
->
assertEquals
(
array
(
'X-Sabre-Temp'
=>
[
'true'
],
'Content-Type'
=>
[
'application/xml; charset=utf-8'
],
),
$this
->
response
->
getHeaders
());
}
function
testPutGet
()
{
// mimicking an OS/X resource fork
$request
=
new
HTTP\Request
(
'PUT'
,
'/._testput.txt'
,
[],
'Testing new file'
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
''
,
$this
->
response
->
body
);
$this
->
assertEquals
(
201
,
$this
->
response
->
status
);
$this
->
assertEquals
(
array
(
'X-Sabre-Temp'
=>
[
'true'
],
),
$this
->
response
->
getHeaders
());
$request
=
new
HTTP\Request
(
'GET'
,
'/._testput.txt'
);
$this
->
server
->
httpRequest
=
$request
;
$this
->
server
->
exec
();
$this
->
assertEquals
(
200
,
$this
->
response
->
status
);
$this
->
assertEquals
(
array
(
'X-Sabre-Temp'
=>
[
'true'
],
'Content-Length'
=>
[
16
],
'Content-Type'
=>
[
'application/octet-stream'
],
),
$this
->
response
->
getHeaders
());
$this
->
assertEquals
(
'Testing new file'
,
stream_get_contents
(
$this
->
response
->
body
));
}
function
testLockNonExistant
()
{
mkdir
(
SABRE_TEMPDIR
.
'/locksdir'
);
$locksBackend
=
new
Locks\Backend\File
(
SABRE_TEMPDIR
.
'/locks'
);
$locksPlugin
=
new
Locks\Plugin
(
$locksBackend
);
$this
->
server
->
addPlugin
(
$locksPlugin
);
// mimicking an OS/X resource fork
$request
=
new
HTTP\Request
(
'LOCK'
,
'/._testput.txt'
);
$request
->
setBody
(
'<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
<D:owner>
<D:href>http://example.org/~ejw/contact.html</D:href>
</D:owner>
</D:lockinfo>'
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
201
,
$this
->
response
->
status
);
$this
->
assertEquals
(
'application/xml; charset=utf-8'
,
$this
->
response
->
getHeader
(
'Content-Type'
));
$this
->
assertTrue
(
preg_match
(
'/^<opaquelocktoken:(.*)>$/'
,
$this
->
response
->
getHeader
(
'Lock-Token'
))===
1
,
'We did not get a valid Locktoken back ('
.
$this
->
response
->
getHeader
(
'Lock-Token'
)
.
')'
);
$this
->
assertEquals
(
'true'
,
$this
->
response
->
getHeader
(
'X-Sabre-Temp'
));
$this
->
assertFalse
(
file_exists
(
SABRE_TEMPDIR
.
'/._testlock.txt'
),
'._testlock.txt should not exist in the regular file structure.'
);
}
function
testPutDelete
()
{
// mimicking an OS/X resource fork
$request
=
new
HTTP\Request
(
'PUT'
,
'/._testput.txt'
,
[],
'Testing new file'
);
$this
->
server
->
httpRequest
=
$request
;
$this
->
server
->
exec
();
$this
->
assertEquals
(
''
,
$this
->
response
->
body
);
$this
->
assertEquals
(
201
,
$this
->
response
->
status
);
$this
->
assertEquals
(
array
(
'X-Sabre-Temp'
=>
[
'true'
],
),
$this
->
response
->
getHeaders
());
$request
=
new
HTTP\Request
(
'DELETE'
,
'/._testput.txt'
);
$this
->
server
->
httpRequest
=
$request
;
$this
->
server
->
exec
();
$this
->
assertEquals
(
204
,
$this
->
response
->
status
,
"Incorrect status code received. Full body:
\n
"
.
$this
->
response
->
body
);
$this
->
assertEquals
(
array
(
'X-Sabre-Temp'
=>
[
'true'
],
),
$this
->
response
->
getHeaders
());
$this
->
assertEquals
(
''
,
$this
->
response
->
body
);
}
function
testPutPropfind
()
{
// mimicking an OS/X resource fork
$request
=
new
HTTP\Request
(
'PUT'
,
'/._testput.txt'
,
[],
'Testing new file'
);
$this
->
server
->
httpRequest
=
$request
;
$this
->
server
->
exec
();
$this
->
assertEquals
(
''
,
$this
->
response
->
body
);
$this
->
assertEquals
(
201
,
$this
->
response
->
status
);
$this
->
assertEquals
(
array
(
'X-Sabre-Temp'
=>
[
'true'
],
),
$this
->
response
->
getHeaders
());
$request
=
new
HTTP\Request
(
'PROPFIND'
,
'/._testput.txt'
);
$this
->
server
->
httpRequest
=
(
$request
);
$this
->
server
->
exec
();
$this
->
assertEquals
(
207
,
$this
->
response
->
status
,
'Incorrect status code returned. Body: '
.
$this
->
response
->
body
);
$this
->
assertEquals
(
array
(
'X-Sabre-Temp'
=>
[
'true'
],
'Content-Type'
=>
[
'application/xml; charset=utf-8'
],
),
$this
->
response
->
getHeaders
());
$body
=
preg_replace
(
"/xmlns(:[A-Za-z0-9_])?=(
\"
|
\'
)DAV:(
\"
|
\'
)/"
,
"xmlns
\\
1=
\"
urn:DAV
\"
"
,
$this
->
response
->
body
);
$xml
=
simplexml_load_string
(
$body
);
$xml
->
registerXPathNamespace
(
'd'
,
'urn:DAV'
);
list
(
$data
)
=
$xml
->
xpath
(
'/d:multistatus/d:response/d:href'
);
$this
->
assertEquals
(
'/._testput.txt'
,(
string
)
$data
,
'href element should have been /._testput.txt'
);
$data
=
$xml
->
xpath
(
'/d:multistatus/d:response/d:propstat/d:prop/d:resourcetype'
);
$this
->
assertEquals
(
1
,
count
(
$data
));
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Tue, Jan 7, 10:47 PM (1 d, 20 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
913733
Default Alt Text
TemporaryFileFilterTest.php (6 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment