From bb754cb363ef4a7b5f0fd4a8a9c9baf1c699b571 Mon Sep 17 00:00:00 2001
From: Joas Schilling <coding@schilljs.com>
Date: Thu, 12 Mar 2020 11:25:47 +0100
Subject: [PATCH] Always transform the etag and read the data

Signed-off-by: Joas Schilling <coding@schilljs.com>
---
 apps/dav/lib/CardDAV/CardDavBackend.php       |  2 ++
 .../tests/unit/CardDAV/CardDavBackendTest.php | 24 +++++++++----------
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php
index 7abfd64ed70..1f87ca5f7c1 100644
--- a/apps/dav/lib/CardDAV/CardDavBackend.php
+++ b/apps/dav/lib/CardDAV/CardDavBackend.php
@@ -994,6 +994,8 @@ class CardDavBackend implements BackendInterface, SyncSupport {
 		$queryResult->closeCursor();
 
 		if (is_array($contact)) {
+			$contact['etag'] = '"' . $contact['etag'] . '"';
+			$contact['carddata'] = $this->readBlob($contact['carddata']);
 			$result = $contact;
 		}
 
diff --git a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
index 1768acb39e0..5a6339d4261 100644
--- a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
+++ b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
@@ -630,7 +630,7 @@ class CardDavBackendTest extends TestCase {
 			$this->invokePrivate($this->backend, 'getCardId', [1, 'uri']));
 	}
 
-	
+
 	public function testGetCardIdFailed() {
 		$this->expectException(\InvalidArgumentException::class);
 
@@ -690,15 +690,15 @@ class CardDavBackendTest extends TestCase {
 			);
 		$query->execute();
 		$query->insert($this->dbCardsPropertiesTable)
-				->values(
-						[
-							'addressbookid' => $query->createNamedParameter(0),
-							'cardid' => $query->createNamedParameter($vCardIds[0]),
-							'name' => $query->createNamedParameter('CLOUD'),
-							'value' => $query->createNamedParameter('John@nextcloud.com'),
-							'preferred' => $query->createNamedParameter(0)
-						]
-				);
+			->values(
+				[
+					'addressbookid' => $query->createNamedParameter(0),
+					'cardid' => $query->createNamedParameter($vCardIds[0]),
+					'name' => $query->createNamedParameter('CLOUD'),
+					'value' => $query->createNamedParameter('John@nextcloud.com'),
+					'preferred' => $query->createNamedParameter(0)
+				]
+			);
 		$query->execute();
 		$query->insert($this->dbCardsPropertiesTable)
 			->values(
@@ -783,7 +783,7 @@ class CardDavBackendTest extends TestCase {
 		$this->assertSame('uri', $this->backend->getCardUri($id));
 	}
 
-	
+
 	public function testGetCardUriFailed() {
 		$this->expectException(\InvalidArgumentException::class);
 
@@ -812,7 +812,7 @@ class CardDavBackendTest extends TestCase {
 		$this->assertSame(0, (int)$result['addressbookid']);
 		$this->assertSame('uri0', $result['uri']);
 		$this->assertSame(5489543, (int)$result['lastmodified']);
-		$this->assertSame('etag0', $result['etag']);
+		$this->assertSame('"etag0"', $result['etag']);
 		$this->assertSame(120, (int)$result['size']);
 
 		// this shouldn't return any result because 'uri1' is in address book 1
-- 
GitLab