Merge pull request #4224 from nextcloud/dont-list-on-public-calendar-endpoint
Don't list on public calendar endpoints
This commit is contained in:
commit
b084ceec3d
|
@ -21,7 +21,6 @@
|
||||||
namespace OCA\DAV\CalDAV;
|
namespace OCA\DAV\CalDAV;
|
||||||
|
|
||||||
use Sabre\DAV\Collection;
|
use Sabre\DAV\Collection;
|
||||||
use Sabre\DAV\Exception\NotFound;
|
|
||||||
|
|
||||||
class PublicCalendarRoot extends Collection {
|
class PublicCalendarRoot extends Collection {
|
||||||
|
|
||||||
|
@ -48,6 +47,7 @@ class PublicCalendarRoot extends Collection {
|
||||||
*/
|
*/
|
||||||
function getChild($name) {
|
function getChild($name) {
|
||||||
$calendar = $this->caldavBackend->getPublicCalendar($name);
|
$calendar = $this->caldavBackend->getPublicCalendar($name);
|
||||||
|
$calendar['{http://owncloud.org/ns}owner-principal'] = '';
|
||||||
return new Calendar($this->caldavBackend, $calendar, $this->l10n);
|
return new Calendar($this->caldavBackend, $calendar, $this->l10n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,13 +55,6 @@ class PublicCalendarRoot extends Collection {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
function getChildren() {
|
function getChildren() {
|
||||||
$calendars = $this->caldavBackend->getPublicCalendars();
|
return [];
|
||||||
$children = [];
|
|
||||||
foreach ($calendars as $calendar) {
|
|
||||||
// TODO: maybe implement a new class PublicCalendar ???
|
|
||||||
$children[] = new Calendar($this->caldavBackend, $calendar, $this->l10n);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $children;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ use Test\TestCase;
|
||||||
*/
|
*/
|
||||||
class PublicCalendarRootTest extends TestCase {
|
class PublicCalendarRootTest extends TestCase {
|
||||||
|
|
||||||
const UNIT_TEST_USER = 'principals/users/caldav-unit-test';
|
const UNIT_TEST_USER = '';
|
||||||
/** @var CalDavBackend */
|
/** @var CalDavBackend */
|
||||||
private $backend;
|
private $backend;
|
||||||
/** @var PublicCalendarRoot */
|
/** @var PublicCalendarRoot */
|
||||||
|
@ -92,13 +92,8 @@ class PublicCalendarRootTest extends TestCase {
|
||||||
|
|
||||||
public function testGetChildren() {
|
public function testGetChildren() {
|
||||||
$this->createPublicCalendar();
|
$this->createPublicCalendar();
|
||||||
|
|
||||||
$publicCalendars = $this->backend->getPublicCalendars();
|
|
||||||
|
|
||||||
$calendarResults = $this->publicCalendarRoot->getChildren();
|
$calendarResults = $this->publicCalendarRoot->getChildren();
|
||||||
|
$this->assertSame([], $calendarResults);
|
||||||
$this->assertEquals(1, count($calendarResults));
|
|
||||||
$this->assertEquals(new Calendar($this->backend, $publicCalendars[0], $this->l10n), $calendarResults[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -89,7 +89,7 @@ class CalDavContext implements \Behat\Behat\Context\Context {
|
||||||
'auth' => [
|
'auth' => [
|
||||||
$user,
|
$user,
|
||||||
$password,
|
$password,
|
||||||
]
|
],
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
$this->response = $this->client->send($request);
|
$this->response = $this->client->send($request);
|
||||||
|
@ -184,4 +184,51 @@ class CalDavContext implements \Behat\Behat\Context\Context {
|
||||||
$this->response = $this->client->send($request);
|
$this->response = $this->client->send($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Then :user publicly shares the calendar named :name
|
||||||
|
*
|
||||||
|
* @param string $user
|
||||||
|
* @param string $name
|
||||||
|
*/
|
||||||
|
public function publiclySharesTheCalendarNamed($user, $name) {
|
||||||
|
$davUrl = $this->baseUrl . '/remote.php/dav/calendars/'.$user.'/'.$name;
|
||||||
|
$password = ($user === 'admin') ? 'admin' : '123456';
|
||||||
|
|
||||||
|
$request = $this->client->createRequest(
|
||||||
|
'POST',
|
||||||
|
$davUrl,
|
||||||
|
[
|
||||||
|
'body' => '<cs:publish-calendar xmlns:cs="http://calendarserver.org/ns/"/>',
|
||||||
|
'auth' => [
|
||||||
|
$user,
|
||||||
|
$password,
|
||||||
|
],
|
||||||
|
'headers' => [
|
||||||
|
'Content-Type' => 'application/xml; charset=UTF-8',
|
||||||
|
],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->response = $this->client->send($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Then There should be :amount calendars in the response body
|
||||||
|
*
|
||||||
|
* @param string $amount
|
||||||
|
*/
|
||||||
|
public function t($amount) {
|
||||||
|
$jsonEncoded = json_encode($this->responseXml);
|
||||||
|
$arrayElement = json_decode($jsonEncoded, true);
|
||||||
|
$actual = count($arrayElement['value']) - 1;
|
||||||
|
if($actual !== (int)$amount) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
sprintf(
|
||||||
|
'Expected %s got %s',
|
||||||
|
$amount,
|
||||||
|
$actual
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,3 +50,12 @@ Feature: caldav
|
||||||
Then The CalDAV HTTP status code should be "201"
|
Then The CalDAV HTTP status code should be "201"
|
||||||
And "admin" requests calendar "admin/MyCalendar" on the endpoint "/remote.php/dav/calendars/"
|
And "admin" requests calendar "admin/MyCalendar" on the endpoint "/remote.php/dav/calendars/"
|
||||||
Then The CalDAV HTTP status code should be "207"
|
Then The CalDAV HTTP status code should be "207"
|
||||||
|
|
||||||
|
Scenario: Propfind on public calendar endpoint without calendars
|
||||||
|
When "admin" creates a calendar named "MyCalendar"
|
||||||
|
Then The CalDAV HTTP status code should be "201"
|
||||||
|
And "admin" publicly shares the calendar named "MyCalendar"
|
||||||
|
Then The CalDAV HTTP status code should be "202"
|
||||||
|
When "admin" requests calendar "/" on the endpoint "/remote.php/dav/public-calendars"
|
||||||
|
Then The CalDAV HTTP status code should be "207"
|
||||||
|
Then There should be "0" calendars in the response body
|
Loading…
Reference in New Issue