diff options
author | Lucas Azevedo <lhs_azevedo@hotmail.com> | 2023-08-28 12:25:01 -0300 |
---|---|---|
committer | Lucas Azevedo <lhs_azevedo@hotmail.com> | 2023-08-28 12:25:01 -0300 |
commit | 79bc6ba06cc19793c8bb1cf3b3dc231ae0dc1969 (patch) | |
tree | 91226f2f6fa52e506f9ba957946e15ff4906739b /tests | |
parent | cc912c3b51be06a7034c397a2b77d7968a28a7bd (diff) | |
parent | fc3eef9d2f0210729d3203ad857980cd621e0427 (diff) | |
download | nextcloud-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.yml | 2 | ||||
-rw-r--r-- | tests/acceptance/features/bootstrap/FilePickerContext.php | 125 | ||||
-rw-r--r-- | tests/lib/Share20/ManagerTest.php | 90 |
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(); |