Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2020-03-25 10:11:49 +0300
committerGitHub <noreply@github.com>2020-03-25 10:11:49 +0300
commit3427653676e7ef985778794df27a6fd5e2bdaa11 (patch)
tree0150b927fa22c0c0e2b45d4b130af6f8e998cb26 /apps
parentb93e1e300e70bca18f7ba822f6d8dfa09bc86803 (diff)
parentbd1f98cba37ceb6c0d07a1d5764ec4eb22f369ed (diff)
Merge pull request #19986 from nextcloud/bugfix/19980/fix_uid_as_uri
RefreshWebcalService: randomly generate calendar-object uri
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php14
-rw-r--r--apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php12
2 files changed, 20 insertions, 6 deletions
diff --git a/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php b/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php
index beab0271d8f..a057e29eb2c 100644
--- a/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php
+++ b/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php
@@ -47,6 +47,7 @@ use Sabre\VObject\InvalidDataException;
use Sabre\VObject\ParseException;
use Sabre\VObject\Reader;
use Sabre\VObject\Splitter\ICalendar;
+use Sabre\VObject\UUIDUtil;
use function count;
class RefreshWebcalService {
@@ -113,7 +114,6 @@ class RefreshWebcalService {
while ($vObject = $splitter->getNext()) {
/** @var Component $vObject */
- $uid = null;
$compName = null;
foreach ($vObject->getComponents() as $component) {
@@ -121,7 +121,6 @@ class RefreshWebcalService {
continue;
}
- $uid = $component->{'UID'}->getValue();
$compName = $component->name;
if ($stripAlarms) {
@@ -136,7 +135,7 @@ class RefreshWebcalService {
continue;
}
- $uri = $uid . '.ics';
+ $uri = $this->getRandomCalendarObjectUri();
$calendarData = $vObject->serialize();
try {
$this->calDavBackend->createCalendarObject($subscription['id'], $uri, $calendarData, CalDavBackend::CALENDAR_TYPE_SUBSCRIPTION);
@@ -413,4 +412,13 @@ class RefreshWebcalService {
return $cleanURL;
}
+
+ /**
+ * Returns a random uri for a calendar-object
+ *
+ * @return string
+ */
+ public function getRandomCalendarObjectUri():string {
+ return UUIDUtil::getUUID() . '.ics';
+ }
}
diff --git a/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php b/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php
index 01e541ec20e..b1d341c2e4e 100644
--- a/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php
+++ b/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php
@@ -69,8 +69,14 @@ class RefreshWebcalServiceTest extends TestCase {
* @dataProvider runDataProvider
*/
public function testRun(string $body, string $contentType, string $result) {
- $refreshWebcalService = new RefreshWebcalService($this->caldavBackend,
- $this->clientService, $this->config, $this->logger);
+ $refreshWebcalService = $this->getMockBuilder(RefreshWebcalService::class)
+ ->setMethods(['getRandomCalendarObjectUri'])
+ ->setConstructorArgs([$this->caldavBackend, $this->clientService, $this->config, $this->logger])
+ ->getMock();
+
+ $refreshWebcalService
+ ->method('getRandomCalendarObjectUri')
+ ->willReturn('uri-1.ics');
$this->caldavBackend->expects($this->once())
->method('getSubscriptionsForUser')
@@ -130,7 +136,7 @@ class RefreshWebcalServiceTest extends TestCase {
$this->caldavBackend->expects($this->once())
->method('createCalendarObject')
- ->with(42, '12345.ics', $result, 1);
+ ->with(42, 'uri-1.ics', $result, 1);
$refreshWebcalService->refreshSubscription('principals/users/testuser', 'sub123');
}