aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav/tests
diff options
context:
space:
mode:
authorChristoph Wurst <ChristophWurst@users.noreply.github.com>2024-03-14 14:05:27 +0100
committerGitHub <noreply@github.com>2024-03-14 14:05:27 +0100
commitd4ac4b81e14d6fb98a5ac19fe0dab3e2f1b97403 (patch)
tree048a8f8d43ee2a97d1aabcad599d0dd7ffff565d /apps/dav/tests
parente3b1a557f000e47f53c7ca681ae2e09f91f75bc6 (diff)
parentf40f962c2e744b2b7ae74b62a4065aee7fc5eff3 (diff)
downloadnextcloud-server-d4ac4b81e14d6fb98a5ac19fe0dab3e2f1b97403.tar.gz
nextcloud-server-d4ac4b81e14d6fb98a5ac19fe0dab3e2f1b97403.zip
Merge pull request #44130 from nextcloud/fix/dav/occ-fix-caldav-sync-tokens
fix(dav): Add occ command to fix missing caldav sync tokens
Diffstat (limited to 'apps/dav/tests')
-rw-r--r--apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php8
-rw-r--r--apps/dav/tests/unit/CalDAV/CalDavBackendTest.php89
2 files changed, 94 insertions, 3 deletions
diff --git a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php
index dbed804ea41..1c125fa9b7f 100644
--- a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php
+++ b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php
@@ -39,6 +39,7 @@ use OCP\App\IAppManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\ICacheFactory;
use OCP\IConfig;
+use OCP\IDBConnection;
use OCP\IGroupManager;
use OCP\IUserManager;
use OCP\IUserSession;
@@ -70,6 +71,7 @@ abstract class AbstractCalDavBackend extends TestCase {
private IConfig|MockObject $config;
private ISecureRandom $random;
protected SharingBackend $sharingBackend;
+ protected IDBConnection $db;
public const UNIT_TEST_USER = 'principals/users/caldav-unit-test';
public const UNIT_TEST_USER1 = 'principals/users/caldav-unit-test1';
public const UNIT_TEST_GROUP = 'principals/groups/caldav-unit-test-group';
@@ -105,7 +107,7 @@ abstract class AbstractCalDavBackend extends TestCase {
->withAnyParameters()
->willReturn([self::UNIT_TEST_GROUP, self::UNIT_TEST_GROUP2]);
- $db = \OC::$server->getDatabaseConnection();
+ $this->db = \OC::$server->getDatabaseConnection();
$this->random = \OC::$server->getSecureRandom();
$this->logger = $this->createMock(LoggerInterface::class);
$this->config = $this->createMock(IConfig::class);
@@ -114,10 +116,10 @@ abstract class AbstractCalDavBackend extends TestCase {
$this->groupManager,
$this->principal,
$this->createMock(ICacheFactory::class),
- new Service(new SharingMapper($db)),
+ new Service(new SharingMapper($this->db)),
$this->logger);
$this->backend = new CalDavBackend(
- $db,
+ $this->db,
$this->principal,
$this->userManager,
$this->random,
diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php
index 112786eb987..c85c13e3f21 100644
--- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php
+++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php
@@ -1502,4 +1502,93 @@ EOD;
}
}
}
+
+ public function testRestoreChanges(): void {
+ $calendarId = $this->createTestCalendar();
+ $uri1 = static::getUniqueID('calobj1') . '.ics';
+ $calData = <<<EOD
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:Nextcloud Calendar
+BEGIN:VEVENT
+CREATED;VALUE=DATE-TIME:20130910T125139Z
+UID:47d15e3ec8
+LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z
+DTSTAMP;VALUE=DATE-TIME:20130910T125139Z
+SUMMARY:Test Event
+DTSTART;VALUE=DATE-TIME:20130912T130000Z
+DTEND;VALUE=DATE-TIME:20130912T140000Z
+CLASS:PUBLIC
+END:VEVENT
+END:VCALENDAR
+EOD;
+ $this->backend->createCalendarObject($calendarId, $uri1, $calData);
+ $calData = <<<EOD
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:Nextcloud Calendar
+BEGIN:VEVENT
+CREATED;VALUE=DATE-TIME:20130910T125139Z
+UID:47d15e3ec8
+LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z
+DTSTAMP;VALUE=DATE-TIME:20130910T125139Z
+SUMMARY:Test Event – UPDATED
+DTSTART;VALUE=DATE-TIME:20130912T130000Z
+DTEND;VALUE=DATE-TIME:20130912T140000Z
+CLASS:PUBLIC
+SEQUENCE:1
+END:VEVENT
+END:VCALENDAR
+EOD;
+ $this->backend->updateCalendarObject($calendarId, $uri1, $calData);
+ $uri2 = static::getUniqueID('calobj2') . '.ics';
+ $calData = <<<EOD
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:Nextcloud Calendar
+BEGIN:VEVENT
+CREATED;VALUE=DATE-TIME:20130910T125139Z
+UID:47d15e3ec9
+LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z
+DTSTAMP;VALUE=DATE-TIME:20130910T125139Z
+SUMMARY:Test Event
+DTSTART;VALUE=DATE-TIME:20130912T130000Z
+DTEND;VALUE=DATE-TIME:20130912T140000Z
+CLASS:PUBLIC
+END:VEVENT
+END:VCALENDAR
+EOD;
+ $this->backend->createCalendarObject($calendarId, $uri2, $calData);
+ $changesBefore = $this->backend->getChangesForCalendar($calendarId, null, 1);
+ $this->backend->deleteCalendarObject($calendarId, $uri2);
+ $uri3 = static::getUniqueID('calobj3') . '.ics';
+ $calData = <<<EOD
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:Nextcloud Calendar
+BEGIN:VEVENT
+CREATED;VALUE=DATE-TIME:20130910T125139Z
+UID:47d15e3e10
+LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z
+DTSTAMP;VALUE=DATE-TIME:20130910T125139Z
+SUMMARY:Test Event
+DTSTART;VALUE=DATE-TIME:20130912T130000Z
+DTEND;VALUE=DATE-TIME:20130912T140000Z
+CLASS:PUBLIC
+END:VEVENT
+END:VCALENDAR
+EOD;
+ $this->backend->createCalendarObject($calendarId, $uri3, $calData);
+ $deleteChanges = $this->db->getQueryBuilder();
+ $deleteChanges->delete('calendarchanges')
+ ->where($deleteChanges->expr()->eq('calendarid', $deleteChanges->createNamedParameter($calendarId)));
+ $deleteChanges->executeStatement();
+
+ $this->backend->restoreChanges($calendarId);
+
+ $changesAfter = $this->backend->getChangesForCalendar($calendarId, $changesBefore['syncToken'], 1);
+ self::assertEquals([], $changesAfter['added']);
+ self::assertEqualsCanonicalizing([$uri1, $uri3], $changesAfter['modified']);
+ self::assertEquals([$uri2], $changesAfter['deleted']);
+ }
}