Skip to content

Commit d566877

Browse files
blizzzbackportbot[bot]
authored andcommitted
set the display name of federated sharees from addressbook
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
1 parent 56cee9e commit d566877

10 files changed

Lines changed: 198 additions & 28 deletions

File tree

apps/federatedfilesharing/tests/AddressHandlerTest.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,13 @@
2929

3030
use OC\Federation\CloudIdManager;
3131
use OCA\FederatedFileSharing\AddressHandler;
32+
use OCP\Contacts\IManager;
3233
use OCP\IL10N;
3334
use OCP\IURLGenerator;
3435

3536
class AddressHandlerTest extends \Test\TestCase {
37+
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
38+
protected $contactsManager;
3639

3740
/** @var AddressHandler */
3841
private $addressHandler;
@@ -54,7 +57,9 @@ protected function setUp(): void {
5457
$this->il10n = $this->getMockBuilder(IL10N::class)
5558
->getMock();
5659

57-
$this->cloudIdManager = new CloudIdManager();
60+
$this->contactsManager = $this->createMock(IManager::class);
61+
62+
$this->cloudIdManager = new CloudIdManager($this->contactsManager);
5863

5964
$this->addressHandler = new AddressHandler($this->urlGenerator, $this->il10n, $this->cloudIdManager);
6065
}
@@ -98,6 +103,10 @@ public function dataTestSplitUserRemote() {
98103
* @param string $expectedUrl
99104
*/
100105
public function testSplitUserRemote($remote, $expectedUser, $expectedUrl) {
106+
$this->contactsManager->expects($this->any())
107+
->method('search')
108+
->willReturn([]);
109+
101110
list($remoteUser, $remoteUrl) = $this->addressHandler->splitUserRemote($remote);
102111
$this->assertSame($expectedUser, $remoteUser);
103112
$this->assertSame($expectedUrl, $remoteUrl);

apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
use OCA\FederatedFileSharing\Controller\MountPublicLinkController;
3535
use OCA\FederatedFileSharing\FederatedShareProvider;
3636
use OCP\AppFramework\Http;
37+
use OCP\Contacts\IManager as IContactsManager;
3738
use OCP\Federation\ICloudIdManager;
3839
use OCP\Files\IRootFolder;
3940
use OCP\Http\Client\IClientService;
@@ -46,6 +47,8 @@
4647
use OCP\Share\IShare;
4748

4849
class MountPublicLinkControllerTest extends \Test\TestCase {
50+
/** @var IContactsManager|\PHPUnit\Framework\MockObject\MockObject */
51+
protected $contactsManager;
4952

5053
/** @var MountPublicLinkController */
5154
private $controller;
@@ -102,7 +105,8 @@ protected function setUp(): void {
102105
$this->l10n = $this->getMockBuilder(IL10N::class)->disableOriginalConstructor()->getMock();
103106
$this->userSession = $this->getMockBuilder(IUserSession::class)->disableOriginalConstructor()->getMock();
104107
$this->clientService = $this->getMockBuilder('OCP\Http\Client\IClientService')->disableOriginalConstructor()->getMock();
105-
$this->cloudIdManager = new CloudIdManager();
108+
$this->contactsManager = $this->createMock(IContactsManager::class);
109+
$this->cloudIdManager = new CloudIdManager($this->contactsManager);
106110

107111
$this->controller = new MountPublicLinkController(
108112
'federatedfilesharing', $this->request,

apps/federatedfilesharing/tests/FederatedShareProviderTest.php

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
use OCA\FederatedFileSharing\FederatedShareProvider;
3636
use OCA\FederatedFileSharing\Notifications;
3737
use OCA\FederatedFileSharing\TokenHandler;
38+
use OCP\Contacts\IManager as IContactsManager;
3839
use OCP\Federation\ICloudFederationProviderManager;
3940
use OCP\Federation\ICloudIdManager;
4041
use OCP\Files\File;
@@ -46,6 +47,7 @@
4647
use OCP\IUserManager;
4748
use OCP\Share\IManager;
4849
use OCP\Share\IShare;
50+
use PHPUnit\Framework\MockObject\MockObject;
4951

5052
/**
5153
* Class FederatedShareProviderTest
@@ -80,6 +82,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
8082
protected $shareManager;
8183
/** @var FederatedShareProvider */
8284
protected $provider;
85+
/** @var IContactsManager|\PHPUnit\Framework\MockObject\MockObject */
86+
protected $contactsManager;
8387

8488
/** @var ICloudIdManager */
8589
private $cloudIdManager;
@@ -108,7 +112,8 @@ protected function setUp(): void {
108112
$this->userManager = $this->getMockBuilder(IUserManager::class)->getMock();
109113
//$this->addressHandler = new AddressHandler(\OC::$server->getURLGenerator(), $this->l);
110114
$this->addressHandler = $this->getMockBuilder('OCA\FederatedFileSharing\AddressHandler')->disableOriginalConstructor()->getMock();
111-
$this->cloudIdManager = new CloudIdManager();
115+
$this->contactsManager = $this->createMock(IContactsManager::class);
116+
$this->cloudIdManager = new CloudIdManager($this->contactsManager);
112117
$this->gsConfig = $this->createMock(\OCP\GlobalScale\IConfig::class);
113118

114119
$this->userManager->expects($this->any())->method('userExists')->willReturn(true);
@@ -142,6 +147,7 @@ protected function tearDown(): void {
142147
public function testCreate() {
143148
$share = $this->shareManager->newShare();
144149

150+
/** @var File|MockObject $node */
145151
$node = $this->getMockBuilder(File::class)->getMock();
146152
$node->method('getId')->willReturn(42);
147153
$node->method('getName')->willReturn('myFile');
@@ -171,10 +177,15 @@ public function testCreate() {
171177
'shareOwner@http://localhost/',
172178
'sharedBy',
173179
'sharedBy@http://localhost/'
174-
)->willReturn(true);
180+
)
181+
->willReturn(true);
175182

176183
$this->rootFolder->expects($this->never())->method($this->anything());
177184

185+
$this->contactsManager->expects($this->any())
186+
->method('search')
187+
->willReturn([]);
188+
178189
$share = $this->provider->create($share);
179190

180191
$qb = $this->connection->getQueryBuilder();
@@ -251,6 +262,10 @@ public function testCreateCouldNotFindServer() {
251262
->with('42')
252263
->willReturn([$node]);
253264

265+
$this->contactsManager->expects($this->any())
266+
->method('search')
267+
->willReturn([]);
268+
254269
try {
255270
$share = $this->provider->create($share);
256271
$this->fail();
@@ -308,6 +323,10 @@ public function testCreateException() {
308323
->with('42')
309324
->willReturn([$node]);
310325

326+
$this->contactsManager->expects($this->any())
327+
->method('search')
328+
->willReturn([]);
329+
311330
try {
312331
$share = $this->provider->create($share);
313332
$this->fail();
@@ -345,6 +364,10 @@ public function testCreateShareWithSelf() {
345364
->setPermissions(19)
346365
->setNode($node);
347366

367+
$this->contactsManager->expects($this->any())
368+
->method('search')
369+
->willReturn([]);
370+
348371
$this->rootFolder->expects($this->never())->method($this->anything());
349372

350373
try {
@@ -404,6 +427,10 @@ public function testCreateAlreadyShared() {
404427

405428
$this->rootFolder->expects($this->never())->method($this->anything());
406429

430+
$this->contactsManager->expects($this->any())
431+
->method('search')
432+
->willReturn([]);
433+
407434
$this->provider->create($share);
408435

409436
try {
@@ -442,7 +469,6 @@ public function testUpdate($owner, $sharedBy) {
442469
$node->method('getId')->willReturn(42);
443470
$node->method('getName')->willReturn('myFile');
444471

445-
446472
$this->addressHandler->expects($this->any())->method('splitUserRemote')
447473
->willReturn(['user', 'server.com']);
448474

@@ -478,6 +504,10 @@ public function testUpdate($owner, $sharedBy) {
478504

479505
$this->rootFolder->expects($this->never())->method($this->anything());
480506

507+
$this->contactsManager->expects($this->any())
508+
->method('search')
509+
->willReturn([]);
510+
481511
$share = $this->provider->create($share);
482512

483513
$share->setPermissions(1);
@@ -516,6 +546,10 @@ public function testGetSharedBy() {
516546

517547
$this->rootFolder->expects($this->never())->method($this->anything());
518548

549+
$this->contactsManager->expects($this->any())
550+
->method('search')
551+
->willReturn([]);
552+
519553
$share = $this->shareManager->newShare();
520554
$share->setSharedWith('user@server.com')
521555
->setSharedBy('sharedBy')
@@ -556,6 +590,10 @@ public function testGetSharedByWithNode() {
556590
$this->addressHandler->method('generateRemoteURL')
557591
->willReturn('remoteurl.com');
558592

593+
$this->contactsManager->expects($this->any())
594+
->method('search')
595+
->willReturn([]);
596+
559597
$share = $this->shareManager->newShare();
560598
$share->setSharedWith('user@server.com')
561599
->setSharedBy('sharedBy')
@@ -599,6 +637,10 @@ public function testGetSharedByWithReshares() {
599637
$this->addressHandler->method('generateRemoteURL')
600638
->willReturn('remoteurl.com');
601639

640+
$this->contactsManager->expects($this->any())
641+
->method('search')
642+
->willReturn([]);
643+
602644
$share = $this->shareManager->newShare();
603645
$share->setSharedWith('user@server.com')
604646
->setSharedBy('shareOwner')
@@ -645,6 +687,10 @@ public function testGetSharedByWithLimit() {
645687
$this->addressHandler->method('generateRemoteURL')
646688
->willReturn('remoteurl.com');
647689

690+
$this->contactsManager->expects($this->any())
691+
->method('search')
692+
->willReturn([]);
693+
648694
$share = $this->shareManager->newShare();
649695
$share->setSharedWith('user@server.com')
650696
->setSharedBy('sharedBy')
@@ -845,6 +891,10 @@ public function testGetSharesInFolder() {
845891
$this->addressHandler->method('generateRemoteURL')
846892
->willReturn('remoteurl.com');
847893

894+
$this->contactsManager->expects($this->any())
895+
->method('search')
896+
->willReturn([]);
897+
848898
$share1 = $this->shareManager->newShare();
849899
$share1->setSharedWith('user@server.com')
850900
->setSharedBy($u1->getUID())
@@ -892,6 +942,10 @@ public function testGetAccessList() {
892942
->method('sendRemoteShare')
893943
->willReturn(true);
894944

945+
$this->contactsManager->expects($this->any())
946+
->method('search')
947+
->willReturn([]);
948+
895949
$result = $this->provider->getAccessList([$file1], true);
896950
$this->assertEquals(['remote' => []], $result);
897951

apps/files_sharing/tests/External/CacheTest.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
use OC\Federation\CloudIdManager;
3131
use OCA\Files_Sharing\Tests\TestCase;
32+
use OCP\Contacts\IManager;
3233
use OCP\Federation\ICloudIdManager;
3334

3435
/**
@@ -39,6 +40,8 @@
3940
* @package OCA\Files_Sharing\Tests\External
4041
*/
4142
class CacheTest extends TestCase {
43+
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
44+
protected $contactsManager;
4245

4346
/**
4447
* @var \OC\Files\Storage\Storage
@@ -61,7 +64,9 @@ class CacheTest extends TestCase {
6164
protected function setUp(): void {
6265
parent::setUp();
6366

64-
$this->cloudIdManager = new CloudIdManager();
67+
$this->contactsManager = $this->createMock(IManager::class);
68+
69+
$this->cloudIdManager = new CloudIdManager($this->contactsManager);
6570
$this->remoteUser = $this->getUniqueID('remoteuser');
6671

6772
$this->storage = $this->getMockBuilder('\OCA\Files_Sharing\External\Storage')
@@ -71,6 +76,11 @@ protected function setUp(): void {
7176
->expects($this->any())
7277
->method('getId')
7378
->willReturn('dummystorage::');
79+
80+
$this->contactsManager->expects($this->any())
81+
->method('search')
82+
->willReturn([]);
83+
7484
$this->cache = new \OCA\Files_Sharing\External\Cache(
7585
$this->storage,
7686
$this->cloudIdManager->getCloudId($this->remoteUser, 'http://example.com/owncloud')

apps/files_sharing/tests/External/ManagerTest.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
use OCA\Files_Sharing\External\Manager;
3434
use OCA\Files_Sharing\External\MountProvider;
3535
use OCA\Files_Sharing\Tests\TestCase;
36+
use OCP\Contacts\IManager;
3637
use OCP\EventDispatcher\IEventDispatcher;
3738
use OCP\Federation\ICloudFederationFactory;
3839
use OCP\Federation\ICloudFederationProviderManager;
@@ -53,6 +54,9 @@
5354
class ManagerTest extends TestCase {
5455
use UserTrait;
5556

57+
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
58+
protected $contactsManager;
59+
5660
/** @var Manager|\PHPUnit\Framework\MockObject\MockObject **/
5761
private $manager;
5862

@@ -99,6 +103,12 @@ protected function setUp(): void {
99103
$this->userManager = $this->createMock(IUserManager::class);
100104
$this->eventDispatcher = $this->createMock(IEventDispatcher::class);
101105

106+
$this->contactsManager = $this->createMock(IManager::class);
107+
// needed for MountProvider() initialization
108+
$this->contactsManager->expects($this->any())
109+
->method('search')
110+
->willReturn([]);
111+
102112
$this->manager = $this->getMockBuilder(Manager::class)
103113
->setConstructorArgs(
104114
[
@@ -119,7 +129,7 @@ protected function setUp(): void {
119129

120130
$this->testMountProvider = new MountProvider(\OC::$server->getDatabaseConnection(), function () {
121131
return $this->manager;
122-
}, new CloudIdManager());
132+
}, new CloudIdManager($this->contactsManager));
123133
}
124134

125135
private function setupMounts() {

lib/private/Federation/CloudId.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ class CloudId implements ICloudId {
3636
private $user;
3737
/** @var string */
3838
private $remote;
39+
/** @var string|null */
40+
private $displayName;
3941

4042
/**
4143
* CloudId constructor.
@@ -44,10 +46,11 @@ class CloudId implements ICloudId {
4446
* @param string $user
4547
* @param string $remote
4648
*/
47-
public function __construct(string $id, string $user, string $remote) {
49+
public function __construct(string $id, string $user, string $remote, ?string $displayName = null) {
4850
$this->id = $id;
4951
$this->user = $user;
5052
$this->remote = $remote;
53+
$this->displayName = $displayName;
5154
}
5255

5356
/**
@@ -60,6 +63,11 @@ public function getId(): string {
6063
}
6164

6265
public function getDisplayId(): string {
66+
if ($this->displayName) {
67+
$atPos = strrpos($this->getId(), '@');
68+
$atHost = substr($this->getId(), $atPos);
69+
return $this->displayName . $atHost;
70+
}
6371
return str_replace('https://', '', str_replace('http://', '', $this->getId()));
6472
}
6573

0 commit comments

Comments
 (0)