get only vcard which match both the address book id and the vcard uri

pull/350/head
Bjoern Schiessle 9 years ago
parent b6397ef73a
commit 5f6944954b
  1. 2
      apps/dav/lib/CardDAV/CardDavBackend.php
  2. 5
      apps/dav/tests/unit/CardDAV/CardDavBackendTest.php

@ -848,7 +848,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
$query = $this->db->getQueryBuilder();
$query->select('*')->from($this->dbCardsTable)
->where($query->expr()->eq('uri', $query->createNamedParameter($uri)))
->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId)));
->andWhere($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId)));
$queryResult = $query->execute();
$contact = $queryResult->fetch();
$queryResult->closeCursor();

@ -606,6 +606,11 @@ class CardDavBackendTest extends TestCase {
$this->assertSame(5489543, (int)$result['lastmodified']);
$this->assertSame('etag0', $result['etag']);
$this->assertSame(120, (int)$result['size']);
// this shouldn't return any result because 'uri1' is in address book 1
// see https://github.com/nextcloud/server/issues/229
$result = $this->backend->getContact(0, 'uri1');
$this->assertEmpty($result);
}
public function testGetContactFail() {

Loading…
Cancel
Save