From f42d1e25e8129397bc50fe7db81253abf055805c Mon Sep 17 00:00:00 2001 From: Josh Date: Tue, 27 Oct 2026 10:18:02 -0400 Subject: [PATCH] test(dav): make principal search assertions order-independent CalDAV principal search does not guarantee result ordering, but testSearchPrincipal compared returned calendar data by array index. Compare normalized payloads canonically instead, so the test verifies the expected results without depending on database row order. Cover both the user's results and the sharer's results. Resolves #37321 Assisted-by: Copilot:gpt-6-luna Signed-off-by: Josh --- .../tests/unit/CalDAV/CalDavBackendTest.php | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php index 0694795433756..8a74f6313e1eb 100644 --- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php @@ -1543,14 +1543,17 @@ public function testSearchPrincipal(): void { $this->assertCount(4, $mySearchResults); $this->assertCount(3, $sharerSearchResults); - $this->assertStringEqualsStringIgnoringLineEndingsWithTrim($myPublic, $mySearchResults[0]['calendardata']); - $this->assertStringEqualsStringIgnoringLineEndingsWithTrim($myPrivate, $mySearchResults[1]['calendardata']); - $this->assertStringEqualsStringIgnoringLineEndingsWithTrim($myConfidential, $mySearchResults[2]['calendardata']); - $this->assertStringEqualsStringIgnoringLineEndingsWithTrim($sharerPublic, $mySearchResults[3]['calendardata']); - - $this->assertStringEqualsStringIgnoringLineEndingsWithTrim($sharerPublic, $sharerSearchResults[0]['calendardata']); - $this->assertStringEqualsStringIgnoringLineEndingsWithTrim($sharerPrivate, $sharerSearchResults[1]['calendardata']); - $this->assertStringEqualsStringIgnoringLineEndingsWithTrim($sharerConfidential, $sharerSearchResults[2]['calendardata']); + $normalizeCalendarData = static fn (string $data): string => + trim(str_replace(["\r\n", "\r"], "\n", $data)); + + $this->assertEqualsCanonicalizing( + array_map($normalizeCalendarData, [$myPublic, $myPrivate, $myConfidential, $sharerPublic]), + array_map($normalizeCalendarData, array_column($mySearchResults, 'calendardata')), + ); + $this->assertEqualsCanonicalizing( + array_map($normalizeCalendarData, [$sharerPublic, $sharerPrivate, $sharerConfidential]), + array_map($normalizeCalendarData, array_column($sharerSearchResults, 'calendardata')), + ); } /**