diff options
author | Georg Ehrke <developer@georgehrke.com> | 2020-07-27 16:14:15 +0200 |
---|---|---|
committer | Georg Ehrke <developer@georgehrke.com> | 2020-08-04 16:01:59 +0200 |
commit | 900617e7d7260804ec89a03ca0201340d7585c8b (patch) | |
tree | 9311f493a11016e247f2378368b46e42a14e35b8 /apps/dav/tests/unit/CalDAV | |
parent | c124b485f123fb24cb1d305e5ea62cbb6ae077c9 (diff) | |
download | nextcloud-server-900617e7d7260804ec89a03ca0201340d7585c8b.tar.gz nextcloud-server-900617e7d7260804ec89a03ca0201340d7585c8b.zip |
Add Event and Task Backends for Unified Search
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
Diffstat (limited to 'apps/dav/tests/unit/CalDAV')
-rw-r--r-- | apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php | 9 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/CalDavBackendTest.php | 298 |
2 files changed, 295 insertions, 12 deletions
diff --git a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php index 4c6c8549055..79da92148af 100644 --- a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php +++ b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php @@ -121,7 +121,12 @@ abstract class AbstractCalDavBackend extends TestCase { $this->principal->expects($this->any())->method('getGroupMembership') ->withAnyParameters() ->willReturn([self::UNIT_TEST_GROUP, self::UNIT_TEST_GROUP2]); - $calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); + $this->cleanupForPrincipal(self::UNIT_TEST_USER); + $this->cleanupForPrincipal(self::UNIT_TEST_USER1); + } + + private function cleanupForPrincipal($principal): void { + $calendars = $this->backend->getCalendarsForUser($principal); foreach ($calendars as $calendar) { $this->dispatcher->expects($this->at(0)) ->method('dispatch') @@ -129,7 +134,7 @@ abstract class AbstractCalDavBackend extends TestCase { $this->backend->deleteCalendar($calendar['id']); } - $subscriptions = $this->backend->getSubscriptionsForUser(self::UNIT_TEST_USER); + $subscriptions = $this->backend->getSubscriptionsForUser($principal); foreach ($subscriptions as $subscription) { $this->backend->deleteSubscription($subscription['id']); } diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php index bd6a8856d51..4e343340f25 100644 --- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php @@ -605,21 +605,21 @@ DTSTART;TZID=Europe/Warsaw:20170325T150000 DTEND;TZID=Europe/Warsaw:20170325T160000 TRANSP:OPAQUE DESCRIPTION:Magiczna treść uzyskana za pomocą magicznego proszku.\n\nę - żźćńłóÓŻŹĆŁĘ€śśśŚŚ\n \,\,))))))))\;\,\n + żźćńłóÓŻŹĆŁĘ€śśśŚŚ\n \,\,))))))))\;\,\n __))))))))))))))\,\n \\|/ -\\(((((''''((((((((.\n -*-==/// - ///(('' . `))))))\,\n /|\\ ))| o \;-. '((((( - \,(\,\n ( `| / ) \;))))' + ///(('' . `))))))\,\n /|\\ ))| o \;-. '((((( + \,(\,\n ( `| / ) \;))))' \,_))^\;(~\n | | | \,))((((_ _____- -----~~~-. %\,\;(\;(>'\;'~\n o_)\; \; )))(((` ~--- ~ `:: \\ %%~~)(v\;(`('~\n \; ''''```` - `: `:::|\\\,__\,%% )\;`'\; ~\n | _ - ) / `:|`----' `-'\n ______/\\/~ | + `: `:::|\\\,__\,%% )\;`'\; ~\n | _ + ) / `:|`----' `-'\n ______/\\/~ | / /\n /~\;\;.____/\;\;' / ___--\ - ,-( `\;\;\;/\n / // _\;______\;'------~~~~~ /\;\;/\\ /\n - // | | / \; \\\;\;\,\\\n (<_ | \; - /'\,/-----' _>\n \\_| ||_ - //~\;~~~~~~~~~\n `\\_| (\,~~ -Tua Xiong\n - \\~\\\n + ,-( `\;\;\;/\n / // _\;______\;'------~~~~~ /\;\;/\\ /\n + // | | / \; \\\;\;\,\\\n (<_ | \; + /'\,/-----' _>\n \\_| ||_ + //~\;~~~~~~~~~\n `\\_| (\,~~ -Tua Xiong\n + \\~\\\n ~~\n\n SEQUENCE:1 X-MOZ-GENERATION:1 @@ -999,4 +999,282 @@ EOD; $this->assertEquals($calendarInfoUser['id'], $calendarInfoUser1['id']); $this->assertEquals($calendarInfoUser['uri'], $calendarInfoUser1['uri']); } + + public function testSearchPrincipal(): void { + $myPublic = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//dmfs.org//mimedir.icalendar//EN +BEGIN:VTIMEZONE +TZID:Europe/Berlin +X-LIC-LOCATION:Europe/Berlin +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19700329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19701025T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTART;TZID=Europe/Berlin:20160419T130000 +SUMMARY:My Test (public) +CLASS:PUBLIC +TRANSP:OPAQUE +STATUS:CONFIRMED +DTEND;TZID=Europe/Berlin:20160419T140000 +LAST-MODIFIED:20160419T074202Z +DTSTAMP:20160419T074202Z +CREATED:20160419T074202Z +UID:2e468c48-7860-492e-bc52-92fa0daeeccf.1461051722310-1 +END:VEVENT +END:VCALENDAR +EOD; + $myPrivate = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//dmfs.org//mimedir.icalendar//EN +BEGIN:VTIMEZONE +TZID:Europe/Berlin +X-LIC-LOCATION:Europe/Berlin +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19700329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19701025T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTART;TZID=Europe/Berlin:20160419T130000 +SUMMARY:My Test (private) +CLASS:PRIVATE +TRANSP:OPAQUE +STATUS:CONFIRMED +DTEND;TZID=Europe/Berlin:20160419T140000 +LAST-MODIFIED:20160419T074202Z +DTSTAMP:20160419T074202Z +CREATED:20160419T074202Z +UID:2e468c48-7860-492e-bc52-92fa0daeeccf.1461051722310-2 +END:VEVENT +END:VCALENDAR +EOD; + $myConfidential = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//dmfs.org//mimedir.icalendar//EN +BEGIN:VTIMEZONE +TZID:Europe/Berlin +X-LIC-LOCATION:Europe/Berlin +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19700329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19701025T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTART;TZID=Europe/Berlin:20160419T130000 +SUMMARY:My Test (confidential) +CLASS:CONFIDENTIAL +TRANSP:OPAQUE +STATUS:CONFIRMED +DTEND;TZID=Europe/Berlin:20160419T140000 +LAST-MODIFIED:20160419T074202Z +DTSTAMP:20160419T074202Z +CREATED:20160419T074202Z +UID:2e468c48-7860-492e-bc52-92fa0daeeccf.1461051722310-3 +END:VEVENT +END:VCALENDAR +EOD; + + $sharerPublic = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//dmfs.org//mimedir.icalendar//EN +BEGIN:VTIMEZONE +TZID:Europe/Berlin +X-LIC-LOCATION:Europe/Berlin +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19700329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19701025T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTART;TZID=Europe/Berlin:20160419T130000 +SUMMARY:Sharer Test (public) +CLASS:PUBLIC +TRANSP:OPAQUE +STATUS:CONFIRMED +DTEND;TZID=Europe/Berlin:20160419T140000 +LAST-MODIFIED:20160419T074202Z +DTSTAMP:20160419T074202Z +CREATED:20160419T074202Z +UID:2e468c48-7860-492e-bc52-92fa0daeeccf.1461051722310-4 +END:VEVENT +END:VCALENDAR +EOD; + $sharerPrivate = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//dmfs.org//mimedir.icalendar//EN +BEGIN:VTIMEZONE +TZID:Europe/Berlin +X-LIC-LOCATION:Europe/Berlin +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19700329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19701025T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTART;TZID=Europe/Berlin:20160419T130000 +SUMMARY:Sharer Test (private) +CLASS:PRIVATE +TRANSP:OPAQUE +STATUS:CONFIRMED +DTEND;TZID=Europe/Berlin:20160419T140000 +LAST-MODIFIED:20160419T074202Z +DTSTAMP:20160419T074202Z +CREATED:20160419T074202Z +UID:2e468c48-7860-492e-bc52-92fa0daeeccf.1461051722310-5 +END:VEVENT +END:VCALENDAR +EOD; + $sharerConfidential = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//dmfs.org//mimedir.icalendar//EN +BEGIN:VTIMEZONE +TZID:Europe/Berlin +X-LIC-LOCATION:Europe/Berlin +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19700329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19701025T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTART;TZID=Europe/Berlin:20160419T130000 +SUMMARY:Sharer Test (confidential) +CLASS:CONFIDENTIAL +TRANSP:OPAQUE +STATUS:CONFIRMED +DTEND;TZID=Europe/Berlin:20160419T140000 +LAST-MODIFIED:20160419T074202Z +DTSTAMP:20160419T074202Z +CREATED:20160419T074202Z +UID:2e468c48-7860-492e-bc52-92fa0daeeccf.1461051722310-6 +END:VEVENT +END:VCALENDAR +EOD; + + $l10n = $this->createMock(IL10N::class); + $l10n + ->expects($this->any()) + ->method('t') + ->willReturnCallback(function ($text, $parameters = []) { + return vsprintf($text, $parameters); + }); + $config = $this->createMock(IConfig::class); + $this->userManager->expects($this->any()) + ->method('userExists') + ->willReturn(true); + $this->groupManager->expects($this->any()) + ->method('groupExists') + ->willReturn(true); + + $me = self::UNIT_TEST_USER; + $sharer = self::UNIT_TEST_USER1; + $this->backend->createCalendar($me, 'calendar-uri-me', []); + $this->backend->createCalendar($sharer, 'calendar-uri-sharer', []); + + $myCalendars = $this->backend->getCalendarsForUser($me); + $this->assertCount(1, $myCalendars); + + $sharerCalendars = $this->backend->getCalendarsForUser($sharer); + $this->assertCount(1, $sharerCalendars); + $sharerCalendar = new Calendar($this->backend, $sharerCalendars[0], $l10n, $config); + $this->backend->updateShares($sharerCalendar, [ + [ + 'href' => 'principal:' . $me, + 'readOnly' => false, + ], + ], []); + + $this->assertCount(2, $this->backend->getCalendarsForUser($me)); + + $this->backend->createCalendarObject($myCalendars[0]['id'], 'event0.ics', $myPublic); + $this->backend->createCalendarObject($myCalendars[0]['id'], 'event1.ics', $myPrivate); + $this->backend->createCalendarObject($myCalendars[0]['id'], 'event2.ics', $myConfidential); + + $this->backend->createCalendarObject($sharerCalendars[0]['id'], 'event3.ics', $sharerPublic); + $this->backend->createCalendarObject($sharerCalendars[0]['id'], 'event4.ics', $sharerPrivate); + $this->backend->createCalendarObject($sharerCalendars[0]['id'], 'event5.ics', $sharerConfidential); + + $mySearchResults = $this->backend->searchPrincipalUri($me, 'Test', ['VEVENT'], ['SUMMARY'], []); + $sharerSearchResults = $this->backend->searchPrincipalUri($sharer, 'Test', ['VEVENT'], ['SUMMARY'], []); + + $this->assertCount(4, $mySearchResults); + $this->assertCount(3, $sharerSearchResults); + + $this->assertEquals($myPublic, $mySearchResults[0]['calendardata']); + $this->assertEquals($myPrivate, $mySearchResults[1]['calendardata']); + $this->assertEquals($myConfidential, $mySearchResults[2]['calendardata']); + $this->assertEquals($sharerPublic, $mySearchResults[3]['calendardata']); + + $this->assertEquals($sharerPublic, $sharerSearchResults[0]['calendardata']); + $this->assertEquals($sharerPrivate, $sharerSearchResults[1]['calendardata']); + $this->assertEquals($sharerConfidential, $sharerSearchResults[2]['calendardata']); + } } |