summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2018-11-22 18:56:15 +0100
committerBackportbot <backportbot-noreply@rullzer.com>2018-11-27 21:08:58 +0000
commit6ca82176a4071632d47fbb2c894393fa217a5ebe (patch)
tree9348bc215d8024d8b326fe0336d141ae51e648fc /tests
parent5ea9932b59ef90a74430a846bf8bd1a70dfd69b5 (diff)
downloadnextcloud-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.feature56
-rw-r--r--tests/acceptance/features/bootstrap/FilesAppContext.php87
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() {