aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2024-10-12 17:51:56 +0200
committerFerdinand Thiessen <opensource@fthiessen.de>2024-10-15 16:56:59 +0200
commit00d3e37e6dd356e6cd1c6e473f3c206b6a133725 (patch)
treea9f030f6929f2987aa63f47addaed19e3829bab6 /tests
parenta776044281e45df2cae757500122760bab3d9aaf (diff)
downloadnextcloud-server-00d3e37e6dd356e6cd1c6e473f3c206b6a133725.tar.gz
nextcloud-server-00d3e37e6dd356e6cd1c6e473f3c206b6a133725.zip
fix(share): Return empty string if no label is setbackport/48673/stable29
* Resolves: https://github.com/nextcloud/server/issues/48629 While the database supports NULL, the typing has always said it only returns *string*. So to not break any apps that might trust the typings we should return `''` if the database is set to `NULL`. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/Share20/DefaultShareProviderTest.php34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/lib/Share20/DefaultShareProviderTest.php b/tests/lib/Share20/DefaultShareProviderTest.php
index d7d13b27f12..f578bc313aa 100644
--- a/tests/lib/Share20/DefaultShareProviderTest.php
+++ b/tests/lib/Share20/DefaultShareProviderTest.php
@@ -891,6 +891,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
'file_target' => $qb->expr()->literal('myTarget'),
'permissions' => $qb->expr()->literal(13),
'token' => $qb->expr()->literal('secrettoken'),
+ 'label' => $qb->expr()->literal('the label'),
]);
$qb->execute();
$id = $qb->getLastInsertId();
@@ -906,10 +907,43 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame('sharedBy', $share->getSharedBy());
$this->assertSame('secrettoken', $share->getToken());
$this->assertSame('password', $share->getPassword());
+ $this->assertSame('the label', $share->getLabel());
$this->assertSame(true, $share->getSendPasswordByTalk());
$this->assertSame(null, $share->getSharedWith());
}
+ /**
+ * Assert that if no label is provided the label is correctly,
+ * as types on IShare, a string and not null
+ */
+ public function testGetShareByTokenNullLabel(): void {
+ $qb = $this->dbConn->getQueryBuilder();
+
+ $qb->insert('share')
+ ->values([
+ 'share_type' => $qb->expr()->literal(IShare::TYPE_LINK),
+ 'password' => $qb->expr()->literal('password'),
+ 'password_by_talk' => $qb->expr()->literal(true),
+ 'uid_owner' => $qb->expr()->literal('shareOwner'),
+ 'uid_initiator' => $qb->expr()->literal('sharedBy'),
+ 'item_type' => $qb->expr()->literal('file'),
+ 'file_source' => $qb->expr()->literal(42),
+ 'file_target' => $qb->expr()->literal('myTarget'),
+ 'permissions' => $qb->expr()->literal(13),
+ 'token' => $qb->expr()->literal('secrettoken'),
+ ]);
+ $qb->executeStatement();
+ $id = $qb->getLastInsertId();
+
+ $file = $this->createMock(File::class);
+
+ $this->rootFolder->method('getUserFolder')->with('shareOwner')->willReturnSelf();
+ $this->rootFolder->method('getFirstNodeById')->with(42)->willReturn($file);
+
+ $share = $this->provider->getShareByToken('secrettoken');
+ $this->assertEquals($id, $share->getId());
+ $this->assertSame('', $share->getLabel());
+ }
public function testGetShareByTokenNotFound() {
$this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);