Add acceptance tests for reshares 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:10 +01:00
parent 3d9597619a
commit a05bcfc4ca
3 changed files with 192 additions and 0 deletions

View File

@ -246,6 +246,110 @@ Feature: app-files-sharing
And I enter in the folder named "Shared folder" And I enter in the folder named "Shared folder"
Then I see that the file list contains a file named "Subfolder" 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 Scenario: sharee can not reshare a folder if the sharer disables it
Given I act as John Given I act as John
And I am logged in as the admin And I am logged in as the admin

View File

@ -163,6 +163,15 @@ class FilesAppSharingContext implements Context, ActorAwareInterface {
return self::permissionCheckboxInputFor($sharedWithName, 'Allow resharing'); return self::permissionCheckboxInputFor($sharedWithName, 'Allow resharing');
} }
/**
* @return Locator
*/
public static function unshareButton($sharedWithName) {
return Locator::forThe()->xpath("//li//button[normalize-space() = 'Unshare']")->
descendantOf(self::shareWithMenu($sharedWithName))->
describedAs("Unshare button in the share with $sharedWithName menu in the details view in Files app");
}
/** /**
* @return Locator * @return Locator
*/ */
@ -433,6 +442,15 @@ class FilesAppSharingContext implements Context, ActorAwareInterface {
$this->actor->find(self::canReshareCheckbox($shareWithName), 2)->click(); $this->actor->find(self::canReshareCheckbox($shareWithName), 2)->click();
} }
/**
* @When I unshare the share with :shareWithName
*/
public function iUnshareTheFileWith($shareWithName) {
$this->showShareWithMenuIfNeeded($shareWithName);
$this->actor->find(self::unshareButton($shareWithName), 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
*/ */
@ -449,6 +467,18 @@ class FilesAppSharingContext implements Context, ActorAwareInterface {
$this->actor->find(self::sharedWithRow($sharedWithName), 10)->isVisible()); $this->actor->find(self::sharedWithRow($sharedWithName), 10)->isVisible());
} }
/**
* @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 * @Then I see that resharing the file is not allowed
*/ */
@ -519,6 +549,20 @@ class FilesAppSharingContext implements Context, ActorAwareInterface {
$this->actor->find(self::canCreateCheckboxInput($sharedWithName), 10)->isChecked()); $this->actor->find(self::canCreateCheckboxInput($sharedWithName), 10)->isChecked());
} }
/**
* @Then I see that resharing for :sharedWithName is not available
*/
public function iSeeThatResharingForIsNotAvailable($sharedWithName) {
$this->showShareWithMenuIfNeeded($sharedWithName);
if (!WaitFor::elementToBeEventuallyNotShown(
$this->actor,
self::canReshareCheckbox($sharedWithName),
$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 * @Then I see that :sharedWithName can reshare the share
*/ */

View File

@ -45,6 +45,25 @@ class SettingsContext implements Context, ActorAwareInterface {
describedAs("Accept shares by default checkbox input in Sharing section in Personal Sharing Settings"); describedAs("Accept shares by default checkbox input in Sharing section in Personal Sharing Settings");
} }
/**
* @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 * @return Locator
*/ */
@ -130,6 +149,15 @@ class SettingsContext implements Context, ActorAwareInterface {
$this->actor->find(self::acceptSharesByDefaultCheckbox(), 2)->click(); $this->actor->find(self::acceptSharesByDefaultCheckbox(), 2)->click();
} }
/**
* @When I disable resharing
*/
public function iDisableResharing() {
$this->iSeeThatResharingIsEnabled();
$this->actor->find(self::allowResharingCheckbox(), 2)->click();
}
/** /**
* @When I enable restricting username autocompletion to groups * @When I enable restricting username autocompletion to groups
*/ */
@ -156,6 +184,22 @@ class SettingsContext implements Context, ActorAwareInterface {
$this->actor->find(self::acceptSharesByDefaultCheckboxInput(), 10)->isChecked()); $this->actor->find(self::acceptSharesByDefaultCheckboxInput(), 10)->isChecked());
} }
/**
* @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 * @Then I see that username autocompletion is restricted to groups
*/ */