Browse Source

fix(federation): ICloudId->getRemote() should contain the protocol

Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/44625/head
Joas Schilling 2 months ago
parent
commit
575e7d8dba
No account linked to committer's email address

+ 3
- 2
lib/private/Federation/CloudIdManager.php View File

@@ -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,

+ 7
- 5
tests/lib/Federation/CloudIdManagerTest.php View File

@@ -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');
}
}

Loading…
Cancel
Save