Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1819846
JCalTransformTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
6 KB
Subscribers
None
JCalTransformTest.php
View Options
<?php
namespace
Sabre\CalDAV
;
use
Sabre\HTTP\Request
;
class
JCalTransformTest
extends
\Sabre\DAVServerTest
{
protected
$setupCalDAV
=
true
;
protected
$caldavCalendars
=
[
[
'id'
=>
1
,
'principaluri'
=>
'principals/user1'
,
'uri'
=>
'foo'
,
]
];
protected
$caldavCalendarObjects
=
[
1
=>
[
'bar.ics'
=>
[
'uri'
=>
'bar.ics'
,
'calendarid'
=>
1
,
'calendardata'
=>
"BEGIN:VCALENDAR
\r\n
BEGIN:VEVENT
\r\n
END:VEVENT
\r\n
END:VCALENDAR
\r\n
"
,
'lastmodified'
=>
null
]
],
];
function
testGet
()
{
$headers
=
[
'Accept'
=>
'application/calendar+json'
,
];
$request
=
new
Request
(
'GET'
,
'/calendars/user1/foo/bar.ics'
,
$headers
);
$response
=
$this
->
request
(
$request
);
$body
=
$response
->
getBodyAsString
();
$this
->
assertEquals
(
200
,
$response
->
getStatus
(),
"Incorrect status code: "
.
$body
);
$response
=
json_decode
(
$body
,
true
);
if
(
json_last_error
()
!==
JSON_ERROR_NONE
)
{
$this
->
fail
(
'Json decoding error: '
.
json_last_error_msg
());
}
$this
->
assertEquals
(
[
'vcalendar'
,
[],
[
[
'vevent'
,
[],
[],
],
],
],
$response
);
}
function
testMultiGet
()
{
$xml
=
<<<XML
<?xml version="1.0"?>
<c:calendar-multiget xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
<d:prop>
<c:calendar-data content-type="application/calendar+json" />
</d:prop>
<d:href>/calendars/user1/foo/bar.ics</d:href>
</c:calendar-multiget>
XML;
$headers
=
[];
$request
=
new
Request
(
'REPORT'
,
'/calendars/user1/foo'
,
$headers
,
$xml
);
$response
=
$this
->
request
(
$request
);
$this
->
assertEquals
(
207
,
$response
->
getStatus
(),
'Full rsponse: '
.
$response
->
getBodyAsString
());
$multiStatus
=
$this
->
server
->
xml
->
parse
(
$response
->
getBodyAsString
()
);
$responses
=
$multiStatus
->
getResponses
();
$this
->
assertEquals
(
1
,
count
(
$responses
));
$response
=
$responses
[
0
]->
getResponseProperties
()[
200
][
"{urn:ietf:params:xml:ns:caldav}calendar-data"
];
$jresponse
=
json_decode
(
$response
,
true
);
if
(
json_last_error
())
{
$this
->
fail
(
'Json decoding error: '
.
json_last_error_msg
()
.
'. Full response: '
.
$response
);
}
$this
->
assertEquals
(
[
'vcalendar'
,
[],
[
[
'vevent'
,
[],
[],
],
],
],
$jresponse
);
}
function
testCalendarQueryDepth1
()
{
$xml
=
<<<XML
<?xml version="1.0"?>
<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
<d:prop>
<c:calendar-data content-type="application/calendar+json" />
</d:prop>
<c:filter>
<c:comp-filter name="VCALENDAR" />
</c:filter>
</c:calendar-query>
XML;
$headers
=
[
'Depth'
=>
'1'
,
];
$request
=
new
Request
(
'REPORT'
,
'/calendars/user1/foo'
,
$headers
,
$xml
);
$response
=
$this
->
request
(
$request
);
$this
->
assertEquals
(
207
,
$response
->
getStatus
(),
"Invalid response code. Full body: "
.
$response
->
getBodyAsString
());
$multiStatus
=
$this
->
server
->
xml
->
parse
(
$response
->
getBodyAsString
()
);
$responses
=
$multiStatus
->
getResponses
();
$this
->
assertEquals
(
1
,
count
(
$responses
));
$response
=
$responses
[
0
]->
getResponseProperties
()[
200
][
"{urn:ietf:params:xml:ns:caldav}calendar-data"
];
$response
=
json_decode
(
$response
,
true
);
if
(
json_last_error
())
{
$this
->
fail
(
'Json decoding error: '
.
json_last_error_msg
());
}
$this
->
assertEquals
(
[
'vcalendar'
,
[],
[
[
'vevent'
,
[],
[],
],
],
],
$response
);
}
function
testCalendarQueryDepth0
()
{
$xml
=
<<<XML
<?xml version="1.0"?>
<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
<d:prop>
<c:calendar-data content-type="application/calendar+json" />
</d:prop>
<c:filter>
<c:comp-filter name="VCALENDAR" />
</c:filter>
</c:calendar-query>
XML;
$headers
=
[
'Depth'
=>
'0'
,
];
$request
=
new
Request
(
'REPORT'
,
'/calendars/user1/foo/bar.ics'
,
$headers
,
$xml
);
$response
=
$this
->
request
(
$request
);
$this
->
assertEquals
(
207
,
$response
->
getStatus
(),
"Invalid response code. Full body: "
.
$response
->
getBodyAsString
());
$multiStatus
=
$this
->
server
->
xml
->
parse
(
$response
->
getBodyAsString
()
);
$responses
=
$multiStatus
->
getResponses
();
$this
->
assertEquals
(
1
,
count
(
$responses
));
$response
=
$responses
[
0
]->
getResponseProperties
()[
200
][
"{urn:ietf:params:xml:ns:caldav}calendar-data"
];
$response
=
json_decode
(
$response
,
true
);
if
(
json_last_error
())
{
$this
->
fail
(
'Json decoding error: '
.
json_last_error_msg
());
}
$this
->
assertEquals
(
[
'vcalendar'
,
[],
[
[
'vevent'
,
[],
[],
],
],
],
$response
);
}
function
testValidateICalendar
()
{
$input
=
[
'vcalendar'
,
[],
[
[
'vevent'
,
[
[
'uid'
,
(
object
)[],
'text'
,
'foo'
],
],
[],
],
],
];
$input
=
json_encode
(
$input
);
$this
->
caldavPlugin
->
beforeWriteContent
(
'calendars/user1/foo/bar.ics'
,
$this
->
server
->
tree
->
getNodeForPath
(
'calendars/user1/foo/bar.ics'
),
$input
,
$modified
);
$this
->
assertEquals
(
"BEGIN:VCALENDAR
\r\n
BEGIN:VEVENT
\r\n
UID:foo
\r\n
END:VEVENT
\r\n
END:VCALENDAR
\r\n
"
,
$input
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Dec 21, 1:47 PM (2 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
914852
Default Alt Text
JCalTransformTest.php (6 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment