summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2016-11-22 21:26:49 +0100
committerRoeland Jago Douma <roeland@famdouma.nl>2016-11-23 13:30:32 +0100
commite9f98fd5a99dfd6c845ca5d4d8e48946de37cc59 (patch)
treec5189c03a97be79b9d22d998f284e7549efa586e /apps
parentf692ea34f1f1ce128ad40e3bf248c6342260c6c1 (diff)
downloadnextcloud-server-e9f98fd5a99dfd6c845ca5d4d8e48946de37cc59.tar.gz
nextcloud-server-e9f98fd5a99dfd6c845ca5d4d8e48946de37cc59.zip
VCARDS don't hold binary data
* We need to base64 encode the avatar! * Switched to vcard v4 * User proper data uri Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/lib/CardDAV/Converter.php2
-rw-r--r--apps/dav/tests/unit/CardDAV/ConverterTest.php46
2 files changed, 41 insertions, 7 deletions
diff --git a/apps/dav/lib/CardDAV/Converter.php b/apps/dav/lib/CardDAV/Converter.php
index 065c5494ec3..ba0c4c2a2d5 100644
--- a/apps/dav/lib/CardDAV/Converter.php
+++ b/apps/dav/lib/CardDAV/Converter.php
@@ -71,7 +71,7 @@ class Converter {
break;
case AccountManager::PROPERTY_AVATAR:
if ($image !== null) {
- $vCard->add('PHOTO', $image->data(), ['ENCODING' => 'b', 'TYPE' => $image->mimeType()]);
+ $vCard->add('PHOTO', 'data:'.$image->mimeType().';base64,' . base64_encode($image->data()));
}
break;
case AccountManager::PROPERTY_EMAIL:
diff --git a/apps/dav/tests/unit/CardDAV/ConverterTest.php b/apps/dav/tests/unit/CardDAV/ConverterTest.php
index 737bbd96aaa..528b3aa9ef4 100644
--- a/apps/dav/tests/unit/CardDAV/ConverterTest.php
+++ b/apps/dav/tests/unit/CardDAV/ConverterTest.php
@@ -134,11 +134,45 @@ class ConverterTest extends TestCase {
public function providesNewUsers() {
return [
- [null],
- [null, null, 'foo@bar.net'],
- [['cloud' => 'foo@cloud.net', 'email' => 'foo@bar.net'], null, 'foo@bar.net', 'foo@cloud.net'],
- [['cloud' => 'foo@cloud.net', 'email' => 'foo@bar.net', 'fn' => 'Dr. Foo Bar'], "Dr. Foo Bar", "foo@bar.net", 'foo@cloud.net'],
- [['cloud' => 'foo@cloud.net', 'fn' => 'Dr. Foo Bar'], "Dr. Foo Bar", null, "foo@cloud.net"],
+ [
+ null
+ ],
+ [
+ null,
+ null,
+ 'foo@bar.net'
+ ],
+ [
+ [
+ 'cloud' => 'foo@cloud.net',
+ 'email' => 'foo@bar.net',
+ 'photo' => 'data:image/jpeg;base64,MTIzNDU2Nzg5',
+ ],
+ null,
+ 'foo@bar.net',
+ 'foo@cloud.net'
+ ],
+ [
+ [
+ 'cloud' => 'foo@cloud.net',
+ 'email' => 'foo@bar.net',
+ 'fn' => 'Dr. Foo Bar',
+ 'photo' => 'data:image/jpeg;base64,MTIzNDU2Nzg5',
+ ],
+ "Dr. Foo Bar",
+ "foo@bar.net",
+ 'foo@cloud.net'
+ ],
+ [
+ [
+ 'cloud' => 'foo@cloud.net',
+ 'fn' => 'Dr. Foo Bar',
+ 'photo' => 'data:image/jpeg;base64,MTIzNDU2Nzg5',
+ ],
+ "Dr. Foo Bar",
+ null,
+ "foo@cloud.net"
+ ],
];
}
@@ -171,7 +205,7 @@ class ConverterTest extends TestCase {
*/
protected function getUserMock($displayName, $eMailAddress, $cloudId) {
$image0 = $this->getMockBuilder(IImage::class)->disableOriginalConstructor()->getMock();
- $image0->method('mimeType')->willReturn('JPEG');
+ $image0->method('mimeType')->willReturn('image/jpeg');
$image0->method('data')->willReturn('123456789');
$user = $this->getMockBuilder(IUser::class)->disableOriginalConstructor()->getMock();
$user->method('getUID')->willReturn('12345');