From 9dbad26f625a1e9dbc7d6fb5a66fe1946d3cd156 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 2 Apr 2024 17:55:16 +0200 Subject: [PATCH] fix(federation): ICloudId->getRemote() should contain the protocol Signed-off-by: Joas Schilling --- lib/private/Federation/CloudIdManager.php | 5 +++-- tests/lib/Federation/CloudIdManagerTest.php | 12 +++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/private/Federation/CloudIdManager.php b/lib/private/Federation/CloudIdManager.php index 70431ce2289..86b5ed621ba 100644 --- a/lib/private/Federation/CloudIdManager.php +++ b/lib/private/Federation/CloudIdManager.php @@ -174,7 +174,6 @@ class CloudIdManager implements ICloudIdManager { // note that for remote id's we don't strip the protocol for the remote we use to construct the CloudId // this way if a user has an explicit non-https cloud id this will be preserved // we do still use the version without protocol for looking up the display name - $remote = $this->removeProtocolFromUrl($remote, true); $remote = $this->fixRemoteURL($remote); $host = $this->removeProtocolFromUrl($remote); @@ -191,7 +190,9 @@ class CloudIdManager implements ICloudIdManager { } else { $displayName = $this->getDisplayNameFromContact($user . '@' . $host); } - $id = $user . '@' . $remote; + + // For the visible cloudID we only strip away https + $id = $user . '@' . $this->removeProtocolFromUrl($remote, true); $data = [ 'id' => $id, diff --git a/tests/lib/Federation/CloudIdManagerTest.php b/tests/lib/Federation/CloudIdManagerTest.php index 748d292e977..a144dbb7800 100644 --- a/tests/lib/Federation/CloudIdManagerTest.php +++ b/tests/lib/Federation/CloudIdManagerTest.php @@ -128,11 +128,11 @@ class CloudIdManagerTest extends TestCase { return [ ['test', 'example.com', 'test@example.com'], ['test', 'http://example.com', 'test@http://example.com', 'test@example.com'], - ['test', null, 'test@http://example.com', 'test@example.com', 'http://example.com'], + ['test', null, 'test@http://example.com', 'test@example.com', 'http://example.com', 'http://example.com'], ['test@example.com', 'example.com', 'test@example.com@example.com'], ['test@example.com', 'https://example.com', 'test@example.com@example.com'], - ['test@example.com', null, 'test@example.com@example.com'], - ['test@example.com', 'https://example.com/index.php/s/shareToken', 'test@example.com@example.com'], + ['test@example.com', null, 'test@example.com@example.com', null, 'https://example.com', 'https://example.com'], + ['test@example.com', 'https://example.com/index.php/s/shareToken', 'test@example.com@example.com', null, 'https://example.com', 'https://example.com'], ]; } @@ -143,7 +143,7 @@ class CloudIdManagerTest extends TestCase { * @param null|string $remote * @param string $id */ - public function testGetCloudId(string $user, ?string $remote, string $id, ?string $searchCloudId = null, ?string $localHost = 'https://example.com'): void { + public function testGetCloudId(string $user, ?string $remote, string $id, ?string $searchCloudId = null, ?string $localHost = 'https://example.com', ?string $expectedRemoteId = null): void { if ($remote !== null) { $this->contactsManager->expects($this->any()) ->method('search') @@ -159,9 +159,11 @@ class CloudIdManagerTest extends TestCase { ->method('getAbsoluteUrl') ->willReturn($localHost); } + $expectedRemoteId ??= $remote; $cloudId = $this->cloudIdManager->getCloudId($user, $remote); - $this->assertEquals($id, $cloudId->getId()); + $this->assertEquals($id, $cloudId->getId(), 'Cloud ID'); + $this->assertEquals($expectedRemoteId, $cloudId->getRemote(), 'Remote URL'); } } -- 2.39.5