Add acceptance tests for reshares by link when resharing is disabled

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
Daniel Calviño Sánchez 2020-11-10 22:16:50 +01:00
parent 22d949d9d9
commit b6dec0be99
2 changed files with 111 additions and 0 deletions

View File

@ -166,3 +166,83 @@ Feature: app-files-sharing-link
And I authenticate with password "abcdef" And I authenticate with password "abcdef"
# download starts no page redirection # 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 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!"

View File

@ -326,6 +326,15 @@ class FilesAppSharingContext implements Context, ActorAwareInterface {
describedAs("Password protect by Talk checkbox input in the details view in Files app"); describedAs("Password protect by Talk checkbox input in the details view in Files app");
} }
/**
* @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 * @Given I share the link for :fileName
*/ */
@ -490,6 +499,16 @@ class FilesAppSharingContext implements Context, ActorAwareInterface {
$this->actor->find(self::unshareButton($shareWithName, $shareWithMenuTriggerElement), 2)->click(); $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 * @Then I see that the file is shared with me by :sharedByName
*/ */
@ -528,6 +547,18 @@ class FilesAppSharingContext implements Context, ActorAwareInterface {
$this->actor->find(self::shareWithInput(), 10)->getWrappedElement()->getAttribute("placeholder"), "Resharing is not allowed"); $this->actor->find(self::shareWithInput(), 10)->getWrappedElement()->getAttribute("placeholder"), "Resharing is not allowed");
} }
/**
* @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 * @Then I see that :sharedWithName can not be allowed to edit the share
*/ */