diff options
author | Daniel Calviño Sánchez <danxuliu@gmail.com> | 2018-11-22 18:56:15 +0100 |
---|---|---|
committer | Backportbot <backportbot-noreply@rullzer.com> | 2018-11-27 21:08:58 +0000 |
commit | 6ca82176a4071632d47fbb2c894393fa217a5ebe (patch) | |
tree | 9348bc215d8024d8b326fe0336d141ae51e648fc /tests | |
parent | 5ea9932b59ef90a74430a846bf8bd1a70dfd69b5 (diff) | |
download | nextcloud-server-6ca82176a4071632d47fbb2c894393fa217a5ebe.tar.gz nextcloud-server-6ca82176a4071632d47fbb2c894393fa217a5ebe.zip |
Add acceptance tests for sharing a file with another user
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/acceptance/features/app-files.feature | 56 | ||||
-rw-r--r-- | tests/acceptance/features/bootstrap/FilesAppContext.php | 87 |
2 files changed, 143 insertions, 0 deletions
diff --git a/tests/acceptance/features/app-files.feature b/tests/acceptance/features/app-files.feature index 61b7678e843..a76b41151c6 100644 --- a/tests/acceptance/features/app-files.feature +++ b/tests/acceptance/features/app-files.feature @@ -295,6 +295,62 @@ Feature: app-files # 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: share a file with another user + 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" + When 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 + 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" + + Scenario: share a file with another user who already has a file with that name + 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 + When I share "welcome.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 + Then I see that the file list contains a file named "welcome (2).txt" + And I open the details view for "welcome (2).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" + + Scenario: share a skeleton file with another user before first login + # If a file is shared with a user before her first login the skeleton would + # not have been created, so if the shared file has the same name as one from + # the skeleton the shared file will take its place and the skeleton file + # will not be added. + Given I act as John + And I am logged in as the admin + When I share "welcome.txt" with "user0" + And I see that the file is shared with "user0" + And I act as Jane + And I am logged in + Then I see that the file list contains a file named "welcome.txt" + And I open the details view for "welcome.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" + Scenario: marking a file as favorite causes the file list to be sorted again Given I am logged in And I create a new folder named "A name alphabetically lower than welcome.txt" diff --git a/tests/acceptance/features/bootstrap/FilesAppContext.php b/tests/acceptance/features/bootstrap/FilesAppContext.php index a5d2c636f3e..a0d877a1aa9 100644 --- a/tests/acceptance/features/bootstrap/FilesAppContext.php +++ b/tests/acceptance/features/bootstrap/FilesAppContext.php @@ -45,6 +45,23 @@ class FilesAppContext implements Context, ActorAwareInterface { /** * @return Locator */ + private static function appMenu() { + return Locator::forThe()->id("appmenu")-> + describedAs("App menu in header"); + } + + /** + * @return Locator + */ + public static function filesItemInAppMenu() { + return Locator::forThe()->xpath("/li[@data-id = 'files']")-> + descendantOf(self::appMenu())-> + describedAs("Files item in app menu in header"); + } + + /** + * @return Locator + */ public static function mainViewForSection($section) { $sectionId = self::sections()[$section]; @@ -214,6 +231,44 @@ class FilesAppContext implements Context, ActorAwareInterface { /** * @return Locator */ + public static function sharedByLabel() { + return Locator::forThe()->css(".reshare")-> + descendantOf(self::detailsView())-> + describedAs("Shared by label in the details view in Files app"); + } + + /** + * @return Locator + */ + public static function shareWithInput() { + return Locator::forThe()->css(".shareWithField")-> + descendantOf(self::detailsView())-> + describedAs("Share with input in the details view in Files app"); + } + + /** + * @return Locator + */ + public static function shareeList() { + return Locator::forThe()->css(".shareeListView")-> + descendantOf(self::detailsView())-> + describedAs("Sharee list in the details view in Files app"); + } + + /** + * @return Locator + */ + public static function sharedWithRow($sharedWithName) { + // "username" class is used for any type of share, not only for shares + // with users. + return Locator::forThe()->xpath("//span[contains(concat(' ', normalize-space(@class), ' '), ' username ') and normalize-space() = '$sharedWithName']/ancestor::li")-> + descendantOf(self::shareeList())-> + describedAs("Shared with $sharedWithName row in the details view in Files app"); + } + + /** + * @return Locator + */ public static function shareLinkRow() { return Locator::forThe()->css(".linkShareView .shareWithList:first-child")-> descendantOf(self::detailsView())-> @@ -350,6 +405,13 @@ class FilesAppContext implements Context, ActorAwareInterface { } /** + * @Given I open the Files app + */ + public function iOpenTheFilesApp() { + $this->actor->find(self::filesItemInAppMenu(), 10)->click(); + } + + /** * @Given I close the details view */ public function iCloseTheDetailsView() { @@ -388,6 +450,15 @@ class FilesAppContext implements Context, ActorAwareInterface { } /** + * @Given I share :fileName with :shareWithName + */ + public function iShareWith($fileName, $shareWithName) { + $this->actor->find(FileListContext::shareActionForFile(self::currentSectionMainView(), $fileName), 10)->click(); + + $this->actor->find(self::shareWithInput(), 5)->setValue($shareWithName . "\r"); + } + + /** * @Given I write down the shared link */ public function iWriteDownTheSharedLink() { @@ -622,6 +693,22 @@ class FilesAppContext implements Context, ActorAwareInterface { } /** + * @Then I see that the file is shared with me by :sharedByName + */ + public function iSeeThatTheFileIsSharedWithMeBy($sharedByName) { + PHPUnit_Framework_Assert::assertEquals( + $this->actor->find(self::sharedByLabel(), 10)->getText(), "Shared with you by $sharedByName"); + } + + /** + * @Then I see that the file is shared with :sharedWithName + */ + public function iSeeThatTheFileIsSharedWith($sharedWithName) { + PHPUnit_Framework_Assert::assertTrue( + $this->actor->find(self::sharedWithRow($sharedWithName), 10)->isVisible()); + } + + /** * @Then I see that the download of the link share is hidden */ public function iSeeThatTheDownloadOfTheLinkShareIsHidden() { |