aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLucas Azevedo <lhs_azevedo@hotmail.com>2023-08-28 12:25:01 -0300
committerLucas Azevedo <lhs_azevedo@hotmail.com>2023-08-28 12:25:01 -0300
commit79bc6ba06cc19793c8bb1cf3b3dc231ae0dc1969 (patch)
tree91226f2f6fa52e506f9ba957946e15ff4906739b /tests
parentcc912c3b51be06a7034c397a2b77d7968a28a7bd (diff)
parentfc3eef9d2f0210729d3203ad857980cd621e0427 (diff)
downloadnextcloud-server-79bc6ba06cc19793c8bb1cf3b3dc231ae0dc1969.tar.gz
nextcloud-server-79bc6ba06cc19793c8bb1cf3b3dc231ae0dc1969.zip
Merge branch 'master' into auth-token-commands
Diffstat (limited to 'tests')
-rw-r--r--tests/acceptance/config/behat.yml2
-rw-r--r--tests/acceptance/features/bootstrap/FilePickerContext.php125
-rw-r--r--tests/lib/Share20/ManagerTest.php90
3 files changed, 77 insertions, 140 deletions
diff --git a/tests/acceptance/config/behat.yml b/tests/acceptance/config/behat.yml
index eb5c7d61f8c..a0aff969bae 100644
--- a/tests/acceptance/config/behat.yml
+++ b/tests/acceptance/config/behat.yml
@@ -15,7 +15,6 @@ default:
- DialogContext
- FeatureContext
- FileListContext
- - FilePickerContext
- FilesAppContext
- FilesAppSharingContext
- LoginPageContext
@@ -45,7 +44,6 @@ default:
- DialogContext
- FeatureContext
- FileListContext
- - FilePickerContext
- FilesAppContext
- FilesAppSharingContext
- LoginPageContext
diff --git a/tests/acceptance/features/bootstrap/FilePickerContext.php b/tests/acceptance/features/bootstrap/FilePickerContext.php
deleted file mode 100644
index b9d82090eaa..00000000000
--- a/tests/acceptance/features/bootstrap/FilePickerContext.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/**
- *
- * @copyright Copyright (c) 2018, Daniel Calviño Sánchez (danxuliu@gmail.com)
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-use Behat\Behat\Context\Context;
-
-class FilePickerContext implements Context, ActorAwareInterface {
- use ActorAware;
-
- /**
- * @return Locator
- */
- public static function dialog() {
- return Locator::forThe()->css(".oc-dialog")->
- describedAs("File picker dialog");
- }
-
- /**
- * @return Locator
- */
- public static function fileListContainer() {
- return Locator::forThe()->css("#oc-dialog-filepicker-content")->
- descendantOf(self::dialog())->
- describedAs("File list container in the file picker dialog");
- }
-
- /**
- * @return Locator
- */
- public static function rowForFile($fileName) {
- // File names in the file picker are split in two span elements, so
- // their texts need to be concatenated to get the full file name.
- return Locator::forThe()->xpath("//*[@id = 'picker-filestable']//*[contains(concat(' ', normalize-space(@class), ' '), ' filename-parts ') and concat(span[1], span[2]) = '$fileName']/ancestor::tr")->
- descendantOf(self::fileListContainer())->
- describedAs("Row for file $fileName in the file picker dialog");
- }
-
- /**
- * @return Locator
- */
- public static function buttonRow() {
- return Locator::forThe()->css(".oc-dialog-buttonrow")->
- descendantOf(self::dialog())->
- describedAs("Button row in the file picker dialog");
- }
-
- /**
- * @return Locator
- */
- private static function buttonFor($buttonText) {
- // "Copy" and "Move" buttons text is set to "Copy to XXX" and "Move to
- // XXX" when a folder is selected.
- return Locator::forThe()->xpath("//button[starts-with(normalize-space(), '$buttonText')]")->
- descendantOf(self::buttonRow())->
- describedAs($buttonText . " button in the file picker dialog");
- }
-
- /**
- * @return Locator
- */
- public static function copyButton() {
- return self::buttonFor("Copy");
- }
-
- /**
- * @return Locator
- */
- public static function moveButton() {
- return self::buttonFor("Move");
- }
-
- /**
- * @return Locator
- */
- public static function chooseButton() {
- return self::buttonFor("Choose");
- }
-
- /**
- * @When I select :fileName in the file picker
- */
- public function iSelectInTheFilePicker($fileName) {
- $this->actor->find(self::rowForFile($fileName), 10)->click();
- }
-
- /**
- * @When I copy to the last selected folder in the file picker
- */
- public function iCopyToTheLastSelectedFolderInTheFilePicker() {
- $this->actor->find(self::copyButton(), 10)->click();
- }
-
- /**
- * @When I move to the last selected folder in the file picker
- */
- public function iMoveToTheLastSelectedFolderInTheFilePicker() {
- $this->actor->find(self::moveButton(), 10)->click();
- }
-
- /**
- * @When I choose the last selected file in the file picker
- */
- public function iChooseTheLastSelectedFileInTheFilePicker() {
- $this->actor->find(self::chooseButton(), 10)->click();
- }
-}
diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php
index e8704600e2a..1f3bcd405a1 100644
--- a/tests/lib/Share20/ManagerTest.php
+++ b/tests/lib/Share20/ManagerTest.php
@@ -2729,10 +2729,12 @@ class ManagerTest extends \Test\TestCase {
public function testGetShareByToken() {
$this->config
- ->expects($this->once())
+ ->expects($this->exactly(2))
->method('getAppValue')
- ->with('core', 'shareapi_allow_links', 'yes')
- ->willReturn('yes');
+ ->willReturnMap([
+ ['core', 'shareapi_allow_links', 'yes', 'yes'],
+ ['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
+ ]);
$factory = $this->createMock(IProviderFactory::class);
@@ -2774,10 +2776,12 @@ class ManagerTest extends \Test\TestCase {
public function testGetShareByTokenRoom() {
$this->config
- ->expects($this->once())
+ ->expects($this->exactly(2))
->method('getAppValue')
- ->with('core', 'shareapi_allow_links', 'yes')
- ->willReturn('no');
+ ->willReturnMap([
+ ['core', 'shareapi_allow_links', 'yes', 'no'],
+ ['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
+ ]);
$factory = $this->createMock(IProviderFactory::class);
@@ -2826,10 +2830,12 @@ class ManagerTest extends \Test\TestCase {
public function testGetShareByTokenWithException() {
$this->config
- ->expects($this->once())
+ ->expects($this->exactly(2))
->method('getAppValue')
- ->with('core', 'shareapi_allow_links', 'yes')
- ->willReturn('yes');
+ ->willReturnMap([
+ ['core', 'shareapi_allow_links', 'yes', 'yes'],
+ ['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
+ ]);
$factory = $this->createMock(IProviderFactory::class);
@@ -2876,6 +2882,61 @@ class ManagerTest extends \Test\TestCase {
}
+ public function testGetShareByTokenHideDisabledUser() {
+ $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
+ $this->expectExceptionMessage('The requested share comes from a disabled user');
+
+ $this->config
+ ->expects($this->exactly(2))
+ ->method('getAppValue')
+ ->willReturnMap([
+ ['core', 'shareapi_allow_links', 'yes', 'yes'],
+ ['files_sharing', 'hide_disabled_user_shares', 'no', 'yes'],
+ ]);
+
+ $this->l->expects($this->once())
+ ->method('t')
+ ->willReturnArgument(0);
+
+ $manager = $this->createManagerMock()
+ ->setMethods(['deleteShare'])
+ ->getMock();
+
+ $date = new \DateTime();
+ $date->setTime(0, 0, 0);
+ $date->add(new \DateInterval('P2D'));
+ $share = $this->manager->newShare();
+ $share->setExpirationDate($date);
+ $share->setShareOwner('owner');
+ $share->setSharedBy('sharedBy');
+
+ $sharedBy = $this->createMock(IUser::class);
+ $owner = $this->createMock(IUser::class);
+
+ $this->userManager->method('get')->willReturnMap([
+ ['sharedBy', $sharedBy],
+ ['owner', $owner],
+ ]);
+
+ $owner->expects($this->once())
+ ->method('isEnabled')
+ ->willReturn(true);
+ $sharedBy->expects($this->once())
+ ->method('isEnabled')
+ ->willReturn(false);
+
+ $this->defaultProvider->expects($this->once())
+ ->method('getShareByToken')
+ ->with('expiredToken')
+ ->willReturn($share);
+
+ $manager->expects($this->never())
+ ->method('deleteShare');
+
+ $manager->getShareByToken('expiredToken');
+ }
+
+
public function testGetShareByTokenExpired() {
$this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
$this->expectExceptionMessage('The requested share does not exist anymore');
@@ -2913,10 +2974,12 @@ class ManagerTest extends \Test\TestCase {
public function testGetShareByTokenNotExpired() {
$this->config
- ->expects($this->once())
+ ->expects($this->exactly(2))
->method('getAppValue')
- ->with('core', 'shareapi_allow_links', 'yes')
- ->willReturn('yes');
+ ->willReturnMap([
+ ['core', 'shareapi_allow_links', 'yes', 'yes'],
+ ['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
+ ]);
$date = new \DateTime();
$date->setTime(0, 0, 0);
@@ -2948,11 +3011,12 @@ class ManagerTest extends \Test\TestCase {
public function testGetShareByTokenPublicUploadDisabled() {
$this->config
- ->expects($this->exactly(2))
+ ->expects($this->exactly(3))
->method('getAppValue')
->willReturnMap([
['core', 'shareapi_allow_links', 'yes', 'yes'],
['core', 'shareapi_allow_public_upload', 'yes', 'no'],
+ ['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
]);
$share = $this->manager->newShare();