summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2019-11-21 07:49:49 +0100
committerGitHub <noreply@github.com>2019-11-21 07:49:49 +0100
commit5943283e532defabce3e0d79710e1a7d4f3d503d (patch)
tree25c1694bf72cf92a1ef523e5ab13cdebe4e8079b
parentb9dccf592963aa84d5c145367d5402d6ef114fd7 (diff)
parentf402e234480cd9d18c6c90ef011968eb7abcd5dc (diff)
downloadnextcloud-server-5943283e532defabce3e0d79710e1a7d4f3d503d.tar.gz
nextcloud-server-5943283e532defabce3e0d79710e1a7d4f3d503d.zip
Merge pull request #18039 from nextcloud/accept-incoming-shares-in-acceptance-tests
Accept incoming shares in acceptance tests
-rw-r--r--tests/acceptance/config/behat.yml6
-rw-r--r--tests/acceptance/features/app-comments.feature9
-rw-r--r--tests/acceptance/features/app-files-sharing.feature32
-rw-r--r--tests/acceptance/features/bootstrap/NotificationsContext.php98
-rw-r--r--tests/acceptance/features/bootstrap/ToastContext.php (renamed from tests/acceptance/features/bootstrap/NotificationContext.php)18
-rwxr-xr-xtests/acceptance/run-local.sh5
6 files changed, 139 insertions, 29 deletions
diff --git a/tests/acceptance/config/behat.yml b/tests/acceptance/config/behat.yml
index 182629701e8..dfea50b3c5a 100644
--- a/tests/acceptance/config/behat.yml
+++ b/tests/acceptance/config/behat.yml
@@ -19,12 +19,13 @@ default:
- FilesAppContext
- FilesAppSharingContext
- LoginPageContext
- - NotificationContext
+ - NotificationsContext
- PublicShareContext
- SearchContext
- SettingsContext
- SettingsMenuContext
- ThemingAppContext
+ - ToastContext
- UsersSettingsContext
filters:
tags: "~@apache"
@@ -48,12 +49,13 @@ default:
- FilesAppContext
- FilesAppSharingContext
- LoginPageContext
- - NotificationContext
+ - NotificationsContext
- PublicShareContext
- SearchContext
- SettingsContext
- SettingsMenuContext
- ThemingAppContext
+ - ToastContext
- UsersSettingsContext
filters:
tags: "@apache"
diff --git a/tests/acceptance/features/app-comments.feature b/tests/acceptance/features/app-comments.feature
index b57883d8ba8..001d0967c18 100644
--- a/tests/acceptance/features/app-comments.feature
+++ b/tests/acceptance/features/app-comments.feature
@@ -47,6 +47,7 @@ Feature: app-comments
And I create a new comment with "Hello world" as message
And I see a comment with "Hello world" as message
When I act as Jane
+ And I accept the share for "shared.txt" in the notifications
# The Files app is open again to reload the file list and the comments
And I open the Files app
And I open the details view for "shared.txt"
@@ -63,6 +64,7 @@ Feature: app-comments
And I share "shared.txt" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "shared.txt" in the notifications
# The Files app is open again to reload the file list
And I open the Files app
And I open the details view for "shared.txt"
@@ -92,6 +94,7 @@ Feature: app-comments
And I create a new comment with "Hello world" as message
And I see a comment with "Hello world" as message
When I act as Jane
+ And I accept the share for "shared.txt" in the notifications
# The Files app is open again to reload the file list and the comments
And I open the Files app
Then I see that "shared.txt" has unread comments
@@ -109,6 +112,7 @@ Feature: app-comments
And I share "shared.txt" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "shared.txt" in the notifications
# The Files app is open again to reload the file list
And I open the Files app
And I open the details view for "shared.txt"
@@ -137,6 +141,7 @@ Feature: app-comments
And I create a new comment with "Hello world" as message
And I see a comment with "Hello world" as message
When I act as Jane
+ And I accept the share for "Folder" in the notifications
# The Files app is open again to reload the file list and the comments
And I open the Files app
Then I see that "Folder" has unread comments
@@ -154,6 +159,7 @@ Feature: app-comments
And I share "Folder" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "Folder" in the notifications
# The Files app is open again to reload the file list
And I open the Files app
And I open the details view for "Folder"
@@ -184,6 +190,7 @@ Feature: app-comments
And I create a new comment with "Hello world" as message
And I see a comment with "Hello world" as message
When I act as Jane
+ And I accept the share for "Folder" in the notifications
# The Files app is open again to reload the file list and the comments
And I open the Files app
And I enter in the folder named "Folder"
@@ -202,6 +209,7 @@ Feature: app-comments
And I share "Folder" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "Folder" in the notifications
# The Files app is open again to reload the file list
And I open the Files app
And I enter in the folder named "Folder"
@@ -256,6 +264,7 @@ Feature: app-comments
And I share "shared.txt" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "shared.txt" in the notifications
# The Files app is open again to reload the file list
And I open the Files app
And I open the details view for "shared.txt"
diff --git a/tests/acceptance/features/app-files-sharing.feature b/tests/acceptance/features/app-files-sharing.feature
index 401384816e8..15ed42aba6a 100644
--- a/tests/acceptance/features/app-files-sharing.feature
+++ b/tests/acceptance/features/app-files-sharing.feature
@@ -11,6 +11,7 @@ Feature: app-files-sharing
When I share "farewell.txt" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "farewell.txt" in the notifications
# 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"
@@ -29,6 +30,7 @@ Feature: app-files-sharing
When I share "welcome.txt" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "welcome.txt" in the notifications
# 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"
@@ -38,24 +40,6 @@ Feature: app-files-sharing
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: reshare a file with another user
Given I act as John
And I am logged in as the admin
@@ -69,11 +53,13 @@ Feature: app-files-sharing
And I share "farewell.txt" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "farewell.txt" in the notifications
# The Files app is open again to reload the file list
And I open the Files app
When I share "farewell.txt" with "user1"
And I see that the file is shared with "user1"
And I act as Jim
+ And I accept the share for "farewell.txt" in the notifications
# 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"
@@ -94,6 +80,7 @@ Feature: app-files-sharing
And I share "farewell.txt" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "farewell.txt" in the notifications
# The Files app is open again to reload the file list
And I open the Files app
And I share "farewell.txt" with "user1"
@@ -119,6 +106,7 @@ Feature: app-files-sharing
When I share "Shared folder" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "Shared folder" in the notifications
# 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"
@@ -142,6 +130,7 @@ Feature: app-files-sharing
And I create a new folder named "Subfolder"
And I see that the file list contains a file named "Subfolder"
When I act as Jane
+ And I accept the share for "Shared folder" in the notifications
# 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"
@@ -158,6 +147,7 @@ Feature: app-files-sharing
And I share "Shared folder" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "Shared folder" in the notifications
# 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"
@@ -180,6 +170,7 @@ Feature: app-files-sharing
And I share "Shared folder" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "Shared folder" in the notifications
# The Files app is open again to reload the file list
And I open the Files app
And I share "Shared folder" with "user1"
@@ -188,6 +179,7 @@ Feature: app-files-sharing
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
+ And I accept the share for "Shared folder" in the notifications
# 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"
@@ -206,10 +198,12 @@ Feature: app-files-sharing
And I share "Shared folder" with "user0"
And I see that the file is shared with "user0"
And I act as Jane
+ And I accept the share for "Shared folder" in the notifications
# 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 Jim
+ And I accept the share for "Shared folder" in the notifications
# 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"
@@ -232,6 +226,7 @@ Feature: app-files-sharing
And I set the share with "user0" as not reshareable
And I see that "user0" can not reshare the share
When I act as Jane
+ And I accept the share for "Shared folder" in the notifications
# 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"
@@ -258,6 +253,7 @@ Feature: app-files-sharing
And I create a new folder named "Subfolder"
And I see that the file list contains a file named "Subfolder"
When I act as Jane
+ And I accept the share for "Shared folder" in the notifications
# 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"
diff --git a/tests/acceptance/features/bootstrap/NotificationsContext.php b/tests/acceptance/features/bootstrap/NotificationsContext.php
new file mode 100644
index 00000000000..6f959f0468c
--- /dev/null
+++ b/tests/acceptance/features/bootstrap/NotificationsContext.php
@@ -0,0 +1,98 @@
+<?php
+
+/**
+ *
+ * @copyright Copyright (c) 2019, Daniel Calviño Sánchez (danxuliu@gmail.com)
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+use Behat\Behat\Context\Context;
+
+class NotificationsContext implements Context, ActorAwareInterface {
+
+ use ActorAware;
+
+ /**
+ * @return Locator
+ */
+ public static function notificationsButton() {
+ return Locator::forThe()->css("#header .notifications .notifications-button")->
+ describedAs("Notifications button in the header");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function notificationsContainer() {
+ return Locator::forThe()->css("#header .notifications .notification-container")->
+ describedAs("Notifications container");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function incomingShareNotificationForFile($fileName) {
+ return Locator::forThe()->xpath("//div[contains(concat(' ', normalize-space(@class), ' '), ' notification ') and //div[starts-with(normalize-space(), 'You received $fileName as a share by')]]")->
+ descendantOf(self::notificationsContainer())->
+ describedAs("Notification of incoming share for file $fileName");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function actionsInIncomingShareNotificationForFile($fileName) {
+ return Locator::forThe()->css(".notification-actions")->
+ descendantOf(self::incomingShareNotificationForFile($fileName))->
+ describedAs("Actions in notification of incoming share for file $fileName");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function actionInIncomingShareNotificationForFile($fileName, $action) {
+ return Locator::forThe()->xpath("//button[normalize-space() = '$action']")->
+ descendantOf(self::actionsInIncomingShareNotificationForFile($fileName))->
+ describedAs("$action button in notification of incoming share for file $fileName");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function acceptButtonInIncomingShareNotificationForFile($fileName) {
+ return self::actionInIncomingShareNotificationForFile($fileName, 'Accept');
+ }
+
+ /**
+ * @Given I accept the share for :fileName in the notifications
+ */
+ public function iAcceptTheShareForInTheNotifications($fileName) {
+ $this->actor->find(self::notificationsButton(), 10)->click();
+
+ // Notifications are refreshed every 30 seconds, so wait a bit longer.
+ // As the waiting is long enough already the find timeout multiplier is
+ // capped at 2 when finding notifications.
+ $findTimeoutMultiplier = $this->actor->getFindTimeoutMultiplier();
+ $this->actor->setFindTimeoutMultiplier(max(2, $findTimeoutMultiplier));
+ $this->actor->find(self::acceptButtonInIncomingShareNotificationForFile($fileName), 35)->click();
+ $this->actor->setFindTimeoutMultiplier($findTimeoutMultiplier);
+
+ // Hide the notifications again
+ $this->actor->find(self::notificationsButton(), 10)->click();
+ }
+
+}
diff --git a/tests/acceptance/features/bootstrap/NotificationContext.php b/tests/acceptance/features/bootstrap/ToastContext.php
index 717de4302da..28c81f8c50d 100644
--- a/tests/acceptance/features/bootstrap/NotificationContext.php
+++ b/tests/acceptance/features/bootstrap/ToastContext.php
@@ -23,33 +23,33 @@
use Behat\Behat\Context\Context;
-class NotificationContext implements Context, ActorAwareInterface {
+class ToastContext implements Context, ActorAwareInterface {
use ActorAware;
/**
* @return Locator
*/
- public static function notificationMessage($message) {
+ public static function toastMessage($message) {
return Locator::forThe()->xpath("//*[contains(concat(' ', normalize-space(@class), ' '), ' toastify ') and normalize-space(text()) = '$message']")->
- descendantOf(self::notificationContainer())->
- describedAs("$message notification");
+ descendantOf(self::toastContainer())->
+ describedAs("$message toast");
}
/**
* @return Locator
*/
- private static function notificationContainer() {
+ private static function toastContainer() {
return Locator::forThe()->id("content")->
- describedAs("Notification container");
+ describedAs("Toast container");
}
/**
- * @Then I see that the :message notification is shown
+ * @Then I see that the :message toast is shown
*/
- public function iSeeThatTheNotificationIsShown($message) {
+ public function iSeeThatTheToastIsShown($message) {
PHPUnit_Framework_Assert::assertTrue($this->actor->find(
- self::notificationMessage($message), 10)->isVisible());
+ self::toastMessage($message), 10)->isVisible());
}
}
diff --git a/tests/acceptance/run-local.sh b/tests/acceptance/run-local.sh
index 548e9e9ceae..cd63f287096 100755
--- a/tests/acceptance/run-local.sh
+++ b/tests/acceptance/run-local.sh
@@ -193,6 +193,11 @@ cd ../../
# server to make possible to run the Nextcloud server on Apache if needed.
ln --symbolic $(pwd) /var/www/html
+# Add Notifications app to the "apps" directory (unless it is already there).
+if [ ! -e "apps/notifications" ]; then
+ (cd apps && git clone --depth 1 https://github.com/nextcloud/notifications)
+fi
+
INSTALL_AND_CONFIGURE_SERVER_PARAMETERS=""
if [ "$NEXTCLOUD_SERVER_DOMAIN" != "$DEFAULT_NEXTCLOUD_SERVER_DOMAIN" ]; then
INSTALL_AND_CONFIGURE_SERVER_PARAMETERS+="--nextcloud-server-domain $NEXTCLOUD_SERVER_DOMAIN"