You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ConverterTest.php 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. /**
  3. * @author Joas Schilling <nickvergessen@owncloud.com>
  4. * @author Roeland Jago Douma <rullzer@owncloud.com>
  5. * @author Thomas Müller <thomas.mueller@tmit.eu>
  6. *
  7. * @copyright Copyright (c) 2016, ownCloud, Inc.
  8. * @license AGPL-3.0
  9. *
  10. * This code is free software: you can redistribute it and/or modify
  11. * it under the terms of the GNU Affero General Public License, version 3,
  12. * as published by the Free Software Foundation.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU Affero General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Affero General Public License, version 3,
  20. * along with this program. If not, see <http://www.gnu.org/licenses/>
  21. *
  22. */
  23. namespace OCA\DAV\Tests\unit\CardDAV;
  24. use OCA\DAV\CardDAV\Converter;
  25. use Test\TestCase;
  26. class ConverterTest extends TestCase {
  27. /**
  28. * @dataProvider providesNewUsers
  29. */
  30. public function testCreation($expectedVCard, $displayName = null, $eMailAddress = null, $cloudId = null) {
  31. $user = $this->getUserMock($displayName, $eMailAddress, $cloudId);
  32. $converter = new Converter();
  33. $vCard = $converter->createCardFromUser($user);
  34. $cardData = $vCard->serialize();
  35. $this->assertEquals($expectedVCard, $cardData);
  36. }
  37. public function providesNewUsers() {
  38. return [
  39. ["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO;ENCODING=b;TYPE=JPEG:MTIzNDU2Nzg5\r\nEND:VCARD\r\n"],
  40. ["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:Dr. Foo Bar\r\nN:Bar;Dr.;Foo;;\r\nPHOTO;ENCODING=b;TYPE=JPEG:MTIzNDU2Nzg5\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
  41. ["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:Dr. Foo Bar\r\nN:Bar;Dr.;Foo;;\r\nEMAIL;TYPE=OTHER:foo@bar.net\r\nPHOTO;ENCODING=b;TYPE=JPEG:MTIzNDU2Nzg5\r\nEND:VCARD\r\n", "Dr. Foo Bar", "foo@bar.net"],
  42. ["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:Dr. Foo Bar\r\nN:Bar;Dr.;Foo;;\r\nCLOUD:foo@bar.net\r\nPHOTO;ENCODING=b;TYPE=JPEG:MTIzNDU2Nzg5\r\nEND:VCARD\r\n", "Dr. Foo Bar", null, "foo@bar.net"],
  43. ];
  44. }
  45. /**
  46. * @dataProvider providesNewUsers
  47. */
  48. public function testUpdateOfUnchangedUser($expectedVCard, $displayName = null, $eMailAddress = null, $cloudId = null) {
  49. $user = $this->getUserMock($displayName, $eMailAddress, $cloudId);
  50. $converter = new Converter();
  51. $vCard = $converter->createCardFromUser($user);
  52. $updated = $converter->updateCard($vCard, $user);
  53. $this->assertFalse($updated);
  54. $cardData = $vCard->serialize();
  55. $this->assertEquals($expectedVCard, $cardData);
  56. }
  57. /**
  58. * @dataProvider providesUsersForUpdateOfRemovedElement
  59. */
  60. public function testUpdateOfRemovedElement($expectedVCard, $displayName = null, $eMailAddress = null, $cloudId = null) {
  61. $user = $this->getUserMock($displayName, $eMailAddress, $cloudId);
  62. $converter = new Converter();
  63. $vCard = $converter->createCardFromUser($user);
  64. $user1 = $this->getMockBuilder('OCP\IUser')->disableOriginalConstructor()->getMock();
  65. $user1->method('getUID')->willReturn('12345');
  66. $user1->method('getDisplayName')->willReturn(null);
  67. $user1->method('getEMailAddress')->willReturn(null);
  68. $user1->method('getCloudId')->willReturn(null);
  69. $user1->method('getAvatarImage')->willReturn(null);
  70. $updated = $converter->updateCard($vCard, $user1);
  71. $this->assertTrue($updated);
  72. $cardData = $vCard->serialize();
  73. $this->assertEquals($expectedVCard, $cardData);
  74. }
  75. public function providesUsersForUpdateOfRemovedElement() {
  76. return [
  77. ["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nEND:VCARD\r\n", "Dr. Foo Bar"],
  78. ["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nEND:VCARD\r\n", "Dr. Foo Bar", "foo@bar.net"],
  79. ["BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nEND:VCARD\r\n", "Dr. Foo Bar", null, "foo@bar.net"],
  80. ];
  81. }
  82. /**
  83. * @dataProvider providesNames
  84. * @param $expected
  85. * @param $fullName
  86. */
  87. public function testNameSplitter($expected, $fullName) {
  88. $converter = new Converter();
  89. $r = $converter->splitFullName($fullName);
  90. $r = implode(';', $r);
  91. $this->assertEquals($expected, $r);
  92. }
  93. public function providesNames() {
  94. return [
  95. ['Sauron;;;;', 'Sauron'],
  96. ['Baggins;Bilbo;;;', 'Bilbo Baggins'],
  97. ['Tolkien;John;Ronald Reuel;;', 'John Ronald Reuel Tolkien'],
  98. ];
  99. }
  100. /**
  101. * @param $displayName
  102. * @param $eMailAddress
  103. * @param $cloudId
  104. * @return \PHPUnit_Framework_MockObject_MockObject
  105. */
  106. protected function getUserMock($displayName, $eMailAddress, $cloudId) {
  107. $image0 = $this->getMockBuilder('OCP\IImage')->disableOriginalConstructor()->getMock();
  108. $image0->method('mimeType')->willReturn('JPEG');
  109. $image0->method('data')->willReturn('123456789');
  110. $user = $this->getMockBuilder('OCP\IUser')->disableOriginalConstructor()->getMock();
  111. $user->method('getUID')->willReturn('12345');
  112. $user->method('getDisplayName')->willReturn($displayName);
  113. $user->method('getEMailAddress')->willReturn($eMailAddress);
  114. $user->method('getCloudId')->willReturn($cloudId);
  115. $user->method('getAvatarImage')->willReturn($image0);
  116. return $user;
  117. }
  118. }