diff options
author | Morris Jobke <hey@morrisjobke.de> | 2020-11-11 13:45:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-11 13:45:46 +0100 |
commit | bcb6a71548ea9a846810e032a95a8367c08bc935 (patch) | |
tree | 6b25b6f040d2b8c012ff2d3b08527f87be25b180 /tests | |
parent | 60ca39bb531e3d2e3d0e77ec013e11b3166ec084 (diff) | |
parent | 487c603f957682454d6059124176bfa73623e3fc (diff) | |
download | nextcloud-server-bcb6a71548ea9a846810e032a95a8367c08bc935.tar.gz nextcloud-server-bcb6a71548ea9a846810e032a95a8367c08bc935.zip |
Merge pull request #24044 from nextcloud/backport/24042/stable20
[stable20] Fix sharing tab state not matching resharing admin settings
Diffstat (limited to 'tests')
4 files changed, 305 insertions, 0 deletions
diff --git a/tests/acceptance/features/app-files-sharing-link.feature b/tests/acceptance/features/app-files-sharing-link.feature index 38680f110d4..d89c7b4289d 100644 --- a/tests/acceptance/features/app-files-sharing-link.feature +++ b/tests/acceptance/features/app-files-sharing-link.feature @@ -166,3 +166,83 @@ Feature: app-files-sharing-link And I authenticate with password "abcdef" # download starts no page redirection And I see that the current page is the Authenticate page for the direct download shared link I wrote down + + Scenario: sharee can not reshare by link if resharing is disabled in the settings after the share is created + Given I act as John + And I am logged in as the admin + And I act as Jane + And I am logged in + And I act as John + And I rename "welcome.txt" to "farewell.txt" + And I see that the file list contains a file named "farewell.txt" + And I share "farewell.txt" with "user0" + And I see that the file is shared with "user0" + And I visit the settings page + And I open the "Sharing" section of the "Administration" group + And I disable resharing + And I see that resharing is disabled + When I act as Jane + # The Files app is open again to reload the file list + And I open the Files app + Then I see that the file list contains a file named "farewell.txt" + And I open the details view for "farewell.txt" + And I see that the details view is open + And I open the "Sharing" tab in the details view + And I see that the "Sharing" tab in the details view is eventually loaded + And I see that the file is shared with me by "admin" + And I see that resharing the file by link is not available + + Scenario: sharee can unshare a reshare by link if resharing is disabled in the settings after the reshare is created + Given I act as John + And I am logged in as the admin + And I act as Jane + And I am logged in + And I act as John + And I rename "welcome.txt" to "farewell.txt" + And I see that the file list contains a file named "farewell.txt" + And I share "farewell.txt" with "user0" + And I see that the file is shared with "user0" + And I act as Jane + # The Files app is open again to reload the file list + And I open the Files app + And I share the link for "farewell.txt" + And I write down the shared link + And I act as John + And I visit the settings page + And I open the "Sharing" section of the "Administration" group + And I disable resharing + And I see that resharing is disabled + When I act as Jane + # The Files app is open again to reload the file list + And I open the Files app + And I open the details view for "farewell.txt" + And I see that the details view is open + And I open the "Sharing" tab in the details view + And I see that the "Sharing" tab in the details view is eventually loaded + And I unshare the link share + Then I see that resharing the file by link is not available + + Scenario: reshare by link can be accessed if resharing is disabled in the settings after the reshare is created + Given I act as John + And I am logged in as the admin + And I act as Jane + And I am logged in + And I act as John + And I rename "welcome.txt" to "farewell.txt" + And I see that the file list contains a file named "farewell.txt" + And I share "farewell.txt" with "user0" + And I see that the file is shared with "user0" + And I act as Jane + # The Files app is open again to reload the file list + And I open the Files app + And I share the link for "farewell.txt" + And I write down the shared link + And I act as John + And I visit the settings page + And I open the "Sharing" section of the "Administration" group + And I disable resharing + And I see that resharing is disabled + When I act as Jim + And I visit the shared link I wrote down + Then I see that the current page is the shared link I wrote down + And I see that the shared file preview shows the text "Welcome to your Nextcloud account!" diff --git a/tests/acceptance/features/app-files-sharing.feature b/tests/acceptance/features/app-files-sharing.feature index b6cde94455c..4f58d1d17ff 100644 --- a/tests/acceptance/features/app-files-sharing.feature +++ b/tests/acceptance/features/app-files-sharing.feature @@ -246,6 +246,110 @@ Feature: app-files-sharing And I enter in the folder named "Shared folder" Then I see that the file list contains a file named "Subfolder" + Scenario: sharer does not see resharing option for a folder if resharing is disabled in the settings after the share is created + Given I am logged in as the admin + And I create a new folder named "Shared folder" + And I see that the file list contains a file named "Shared folder" + And I share "Shared folder" with "user0" + And I see that the file is shared with "user0" + When I visit the settings page + And I open the "Sharing" section of the "Administration" group + And I disable resharing + And I see that resharing is disabled + Then I open the Files app + And I open the details view for "Shared folder" + And I see that the details view is open + And I open the "Sharing" tab in the details view + And I see that the "Sharing" tab in the details view is eventually loaded + And I see that resharing for "user0" is not available + + Scenario: sharee can not reshare a folder if resharing is disabled in the settings after the share is created + Given I act as John + And I am logged in as the admin + And I act as Jane + And I am logged in + And I act as John + And I create a new folder named "Shared folder" + And I see that the file list contains a file named "Shared folder" + And I share "Shared folder" with "user0" + And I see that the file is shared with "user0" + And I visit the settings page + And I open the "Sharing" section of the "Administration" group + And I disable resharing + And I see that resharing is disabled + When I act as Jane + # The Files app is open again to reload the file list + And I open the Files app + Then I see that the file list contains a file named "Shared folder" + And I open the details view for "Shared folder" + And I see that the details view is open + And I open the "Sharing" tab in the details view + And I see that the "Sharing" tab in the details view is eventually loaded + And I see that the file is shared with me by "admin" + And I see that resharing the file is not allowed + + Scenario: sharee can unshare a folder if resharing is disabled in the settings after the share is created + Given I act as John + And I am logged in as the admin + And I act as Jane + And I am logged in + And I act as John + And I create a new folder named "Shared folder" + And I see that the file list contains a file named "Shared folder" + And I share "Shared folder" with "user0" + And I see that the file is shared with "user0" + And I act as Jane + # The Files app is open again to reload the file list + And I open the Files app + And I share "Shared folder" with "user1" + And I act as John + And I visit the settings page + And I open the "Sharing" section of the "Administration" group + And I disable resharing + And I see that resharing is disabled + When I act as Jane + # The Files app is open again to reload the file list + And I open the Files app + Then I see that the file list contains a file named "Shared folder" + And I open the details view for "Shared folder" + And I see that the details view is open + And I open the "Sharing" tab in the details view + And I see that the "Sharing" tab in the details view is eventually loaded + And I see that the file is shared with me by "admin" + And I unshare the share with "user1" + And I see that the file is not shared with "user1" + + Scenario: resharee sees a folder created by the owner in a shared folder if resharing is disabled in the settings after the share is created + Given I act as John + And I am logged in as the admin + And I act as Jane + And I am logged in + And I act as Jim + And I am logged in as "user1" + And I act as John + And I create a new folder named "Shared folder" + And I see that the file list contains a file named "Shared folder" + And I share "Shared folder" with "user0" + And I see that the file is shared with "user0" + And I act as Jane + # The Files app is open again to reload the file list + And I open the Files app + And I share "Shared folder" with "user1" + And I act as John + And I visit the settings page + And I open the "Sharing" section of the "Administration" group + And I disable resharing + And I see that resharing is disabled + And I open the Files app + And I enter in the folder named "Shared folder" + And I create a new folder named "Subfolder" + And I see that the file list contains a file named "Subfolder" + When I act as Jim + # The Files app is open again to reload the file list + And I open the Files app + And I enter in the folder named "Shared folder" + Then I see that the file list contains a file named "Subfolder" + Scenario: sharee can not reshare a folder if the sharer disables it Given I act as John And I am logged in as the admin diff --git a/tests/acceptance/features/bootstrap/FilesAppSharingContext.php b/tests/acceptance/features/bootstrap/FilesAppSharingContext.php index 24ab36548eb..07ebbba1a36 100644 --- a/tests/acceptance/features/bootstrap/FilesAppSharingContext.php +++ b/tests/acceptance/features/bootstrap/FilesAppSharingContext.php @@ -174,6 +174,15 @@ class FilesAppSharingContext implements Context, ActorAwareInterface { /** * @return Locator */ + public static function unshareButton($sharedWithName, $shareWithMenuTriggerElement) { + return Locator::forThe()->xpath("//li[contains(concat(' ', normalize-space(@class), ' '), ' action ')]//button[normalize-space() = 'Unshare']")-> + descendantOf(self::shareWithMenu($sharedWithName, $shareWithMenuTriggerElement))-> + describedAs("Unshare button in the share with $sharedWithName menu in the details view in Files app"); + } + + /** + * @return Locator + */ public static function shareLinkRow() { return Locator::forThe()->css(".sharing-link-list .sharing-entry__link:first-child")-> descendantOf(FilesAppContext::detailsView())-> @@ -318,6 +327,15 @@ class FilesAppSharingContext implements Context, ActorAwareInterface { } /** + * @return Locator + */ + public static function unshareLinkButton($shareLinkMenuTriggerElement) { + return Locator::forThe()->xpath("//li[contains(concat(' ', normalize-space(@class), ' '), ' action ')]//button[normalize-space() = 'Unshare']")-> + descendantOf(self::shareLinkMenu($shareLinkMenuTriggerElement))-> + describedAs("Unshare link button in the details view in Files app"); + } + + /** * @Given I share the link for :fileName */ public function iShareTheLinkFor($fileName) { @@ -472,6 +490,26 @@ class FilesAppSharingContext implements Context, ActorAwareInterface { } /** + * @When I unshare the share with :shareWithName + */ + public function iUnshareTheFileWith($shareWithName) { + $this->showShareWithMenuIfNeeded($shareWithName); + + $shareWithMenuTriggerElement = $this->actor->find(self::shareWithMenuTrigger($shareWithName), 2); + $this->actor->find(self::unshareButton($shareWithName, $shareWithMenuTriggerElement), 2)->click(); + } + + /** + * @When I unshare the link share + */ + public function iUnshareTheLink() { + $this->showShareLinkMenuIfNeeded(); + + $shareLinkMenuTriggerElement = $this->actor->find(self::shareLinkMenuTrigger(), 2); + $this->actor->find(self::unshareLinkButton($shareLinkMenuTriggerElement), 2)->click(); + } + + /** * @Then I see that the file is shared with me by :sharedByName */ public function iSeeThatTheFileIsSharedWithMeBy($sharedByName) { @@ -488,6 +526,18 @@ class FilesAppSharingContext implements Context, ActorAwareInterface { } /** + * @Then I see that the file is not shared with :sharedWithName + */ + public function iSeeThatTheFileIsNotSharedWith($sharedWithName) { + if (!WaitFor::elementToBeEventuallyNotShown( + $this->actor, + self::sharedWithRow($sharedWithName), + $timeout = 10 * $this->actor->getFindTimeoutMultiplier())) { + PHPUnit_Framework_Assert::fail("The shared with $sharedWithName row is still shown after $timeout seconds"); + } + } + + /** * @Then I see that resharing the file is not allowed */ public function iSeeThatResharingTheFileIsNotAllowed() { @@ -498,6 +548,18 @@ class FilesAppSharingContext implements Context, ActorAwareInterface { } /** + * @Then I see that resharing the file by link is not available + */ + public function iSeeThatResharingTheFileByLinkIsNotAvailable() { + if (!WaitFor::elementToBeEventuallyNotShown( + $this->actor, + self::shareLinkAddNewButton(), + $timeout = 10 * $this->actor->getFindTimeoutMultiplier())) { + PHPUnit_Framework_Assert::fail("The add new share link button is still shown after $timeout seconds"); + } + } + + /** * @Then I see that :sharedWithName can not be allowed to edit the share */ public function iSeeThatCanNotBeAllowedToEditTheShare($sharedWithName) { @@ -564,6 +626,21 @@ class FilesAppSharingContext implements Context, ActorAwareInterface { } /** + * @Then I see that resharing for :sharedWithName is not available + */ + public function iSeeThatResharingForIsNotAvailable($sharedWithName) { + $this->showShareWithMenuIfNeeded($sharedWithName); + + $shareWithMenuTriggerElement = $this->actor->find(self::shareWithMenuTrigger($sharedWithName), 10); + if (!WaitFor::elementToBeEventuallyNotShown( + $this->actor, + self::canReshareCheckbox($sharedWithName, $shareWithMenuTriggerElement), + $timeout = 10 * $this->actor->getFindTimeoutMultiplier())) { + PHPUnit_Framework_Assert::fail("The resharing checkbox for $sharedWithName is still shown after $timeout seconds"); + } + } + + /** * @Then I see that :sharedWithName can reshare the share */ public function iSeeThatCanReshareTheShare($sharedWithName) { diff --git a/tests/acceptance/features/bootstrap/SettingsContext.php b/tests/acceptance/features/bootstrap/SettingsContext.php index 60499c96bd1..2a3aeff2f2e 100644 --- a/tests/acceptance/features/bootstrap/SettingsContext.php +++ b/tests/acceptance/features/bootstrap/SettingsContext.php @@ -48,6 +48,25 @@ class SettingsContext implements Context, ActorAwareInterface { /** * @return Locator */ + public static function allowResharingCheckbox() { + // forThe()->checkbox("Allow resharing") can not be used here; that + // would return the checkbox itself, but the element that the user + // interacts with is the label. + return Locator::forThe()->xpath("//label[normalize-space() = 'Allow resharing']")-> + describedAs("Allow resharing checkbox in Sharing section in Administration Sharing Settings"); + } + + /** + * @return Locator + */ + public static function allowResharingCheckboxInput() { + return Locator::forThe()->checkbox("Allow resharing")-> + describedAs("Allow resharing checkbox input in Sharing section in Administration Sharing Settings"); + } + + /** + * @return Locator + */ public static function restrictUsernameAutocompletionToGroupsCheckbox() { // forThe()->checkbox("Restrict username...") can not be used here; that // would return the checkbox itself, but the element that the user @@ -131,6 +150,15 @@ class SettingsContext implements Context, ActorAwareInterface { } /** + * @When I disable resharing + */ + public function iDisableResharing() { + $this->iSeeThatResharingIsEnabled(); + + $this->actor->find(self::allowResharingCheckbox(), 2)->click(); + } + + /** * @When I enable restricting username autocompletion to groups */ public function iEnableRestrictingUsernameAutocompletionToGroups() { @@ -157,6 +185,22 @@ class SettingsContext implements Context, ActorAwareInterface { } /** + * @Then I see that resharing is enabled + */ + public function iSeeThatResharingIsEnabled() { + PHPUnit_Framework_Assert::assertTrue( + $this->actor->find(self::allowResharingCheckboxInput(), 10)->isChecked()); + } + + /** + * @Then I see that resharing is disabled + */ + public function iSeeThatResharingIsDisabled() { + PHPUnit_Framework_Assert::assertFalse( + $this->actor->find(self::allowResharingCheckboxInput(), 10)->isChecked()); + } + + /** * @Then I see that username autocompletion is restricted to groups */ public function iSeeThatUsernameAutocompletionIsRestrictedToGroups() { |