Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>tags/v21.0.0beta1
@@ -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 |
@@ -171,6 +171,15 @@ class FilesAppSharingContext implements Context, ActorAwareInterface { | |||
return self::permissionCheckboxInputFor($sharedWithName, $shareWithMenuTriggerElement, 'Allow resharing'); | |||
} | |||
/** | |||
* @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 | |||
*/ | |||
@@ -471,6 +480,16 @@ class FilesAppSharingContext implements Context, ActorAwareInterface { | |||
$this->actor->find(self::canReshareCheckbox($shareWithName, $shareWithMenuTriggerElement), 2)->click(); | |||
} | |||
/** | |||
* @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(); | |||
} | |||
/** | |||
* @Then I see that the file is shared with me by :sharedByName | |||
*/ | |||
@@ -487,6 +506,18 @@ class FilesAppSharingContext implements Context, ActorAwareInterface { | |||
$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 | |||
*/ | |||
@@ -563,6 +594,21 @@ class FilesAppSharingContext implements Context, ActorAwareInterface { | |||
$this->actor->find(self::canCreateCheckboxInput($sharedWithName, $shareWithMenuTriggerElement), 10)->isChecked()); | |||
} | |||
/** | |||
* @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 | |||
*/ |
@@ -45,6 +45,25 @@ class SettingsContext implements Context, ActorAwareInterface { | |||
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 | |||
*/ | |||
@@ -130,6 +149,15 @@ class SettingsContext implements Context, ActorAwareInterface { | |||
$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 | |||
*/ | |||
@@ -156,6 +184,22 @@ class SettingsContext implements Context, ActorAwareInterface { | |||
$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 | |||
*/ |