]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add integration tests for video verification 21143/head
authorDaniel Calviño Sánchez <danxuliu@gmail.com>
Thu, 28 May 2020 18:53:36 +0000 (20:53 +0200)
committerDaniel Calviño Sánchez <danxuliu@gmail.com>
Fri, 29 May 2020 00:50:30 +0000 (02:50 +0200)
Enabling the "send password by Talk" property of shares require that
Talk is installed and enabled, so the Drone step that runs them has to
first clone the Talk repository.

When the integration tests are run on a local development instance,
however, it is not guaranteed that Talk is installed. Due to this the
"@Talk" tag was added, which ensures that any feature or scenario marked
with it will first check if Talk is installed and, if not, skip the
scenario (instead of failing).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
.drone.yml
build/integration/config/behat.yml
build/integration/features/bootstrap/TalkContext.php [new file with mode: 0644]
build/integration/sharing_features/sharing-v1-video-verification.feature [new file with mode: 0644]

index e84918ef6a01f88ba8199cd98316767f89ad4bf2..fbc9570b6e31a7e76f579a7e15892ae965c379a5 100644 (file)
@@ -1359,6 +1359,37 @@ trigger:
     - pull_request
     - push
 
+---
+kind: pipeline
+name: integration-sharing-v1-video-verification
+
+steps:
+- name: submodules
+  image: docker:git
+  commands:
+    - git submodule update --init
+- name: install-talk
+  image: docker:git
+  commands:
+    # JavaScript files are not used in integration tests so it is not needed to
+    # build them.
+    - git clone https://github.com/nextcloud/spreed apps/spreed
+- name: integration-sharing-v1-video-verification
+  image: nextcloudci/integration-php7.3:integration-php7.3-2
+  commands:
+    - bash tests/drone-run-integration-tests.sh || exit 0
+    - ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
+    - cd build/integration
+    - ./run.sh sharing_features/sharing-v1-video-verification.feature
+
+trigger:
+  branch:
+    - master
+    - stable*
+  event:
+    - pull_request
+    - push
+
 ---
 kind: pipeline
 name: integration-setup-features
index 27d7daa481812446904d3558bced699c0c1d203f..79ffe58f6b682e27eb6fa32dc3eaeaadcb7c51a7 100644 (file)
@@ -65,6 +65,7 @@ default:
               - admin
               - admin
             regular_user_password: 123456
+        - TalkContext
     setup:
       paths:
         - "%paths.base%/../setup_features"
diff --git a/build/integration/features/bootstrap/TalkContext.php b/build/integration/features/bootstrap/TalkContext.php
new file mode 100644 (file)
index 0000000..bc61c87
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+/**
+ * @copyright Copyright (c) 2020, Daniel Calviño Sánchez (danxuliu@gmail.com)
+ *
+ * @author 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 TalkContext implements Context {
+
+       /**
+        * @BeforeFeature @Talk
+        * @BeforeScenario @Talk
+        */
+       public static function skipTestsIfTalkIsNotInstalled() {
+               if (!TalkContext::isTalkInstalled()) {
+                       throw new Exception('Talk needs to be installed to run features or scenarios tagged with @Talk');
+               }
+       }
+
+       /**
+        * @AfterScenario @Talk
+        */
+       public static function disableTalk() {
+               TalkContext::runOcc(['app:disable', 'spreed']);
+       }
+
+       private static function isTalkInstalled(): bool {
+               $appList = TalkContext::runOcc(['app:list']);
+
+               return strpos($appList, 'spreed') !== false;
+       }
+
+       private static function runOcc(array $args): string {
+               // Based on "runOcc" from CommandLine trait (which can not be used due
+               // to not being static and being already used in other sibling
+               // contexts).
+               $args = array_map(function ($arg) {
+                       return escapeshellarg($arg);
+               }, $args);
+               $args[] = '--no-ansi --no-warnings';
+               $args = implode(' ', $args);
+
+               $descriptor = [
+                       0 => ['pipe', 'r'],
+                       1 => ['pipe', 'w'],
+                       2 => ['pipe', 'w'],
+               ];
+               $process = proc_open('php console.php ' . $args, $descriptor, $pipes, $ocPath = '../..');
+               $lastStdOut = stream_get_contents($pipes[1]);
+               proc_close($process);
+
+               return $lastStdOut;
+       }
+}
diff --git a/build/integration/sharing_features/sharing-v1-video-verification.feature b/build/integration/sharing_features/sharing-v1-video-verification.feature
new file mode 100644 (file)
index 0000000..e57ec9a
--- /dev/null
@@ -0,0 +1,504 @@
+@Talk
+Feature: sharing
+  Background:
+    Given using api version "1"
+    Given using old dav path
+    Given invoking occ with "app:enable spreed"
+
+  Scenario: Creating a link share with send password by Talk
+    Given user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+      | password | secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk in a link share
+    Given user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk with different password in a link share
+    Given user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+      | password | secret |
+    And Updating last share with
+      | password | another secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "another secret" can be downloaded
+
+  Scenario: Enabling send password by Talk with different password set after creation in a link share
+    Given user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And Updating last share with
+      | password | secret |
+    And Updating last share with
+      | password | another secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "another secret" can be downloaded
+
+  Scenario: Enabling send password by Talk with same password in a link share
+    Given user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+      | password | secret |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk with same password set after creation in a link share
+    Given user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And Updating last share with
+      | password | secret |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk without updating password in a link share
+    Given user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+      | password | secret |
+    And Updating last share with
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk without updating password set after creation in a link share
+    Given user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And Updating last share with
+      | password | secret |
+    And Updating last share with
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk with no password in a link share
+    Given user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And Updating last share with
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share can be downloaded
+
+  Scenario: Enabling send password by Talk with no password removed after creation in a link share
+    Given user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+      | password | secret |
+    And Updating last share with
+      | password | |
+    And Updating last share with
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share can be downloaded
+
+  Scenario: Disabling send password by Talk without setting new password in a link share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Disabling send password by Talk without setting new password set after creation in a link share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Disabling send password by Talk setting same password in a link share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Disabling send password by Talk setting same password set after creation in a link share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Disabling send password by Talk setting new password in a link share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | password | another secret |
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "another secret" can be downloaded
+
+  Scenario: Disabling send password by Talk setting new password set after creation in a link share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | password | another secret |
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "another secret" can be downloaded
+
+
+
+
+
+  Scenario: Creating a mail share with send password by Talk
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+      | password | secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk with different password in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+      | password | secret |
+    And Updating last share with
+      | password | another secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "another secret" can be downloaded
+
+  Scenario: Enabling send password by Talk with different password set after creation in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+    And Updating last share with
+      | password | secret |
+    And Updating last share with
+      | password | another secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "another secret" can be downloaded
+
+  Scenario: Enabling send password by Talk with same password in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+      | password | secret |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk with same password set after creation in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+    And Updating last share with
+      | password | secret |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk without updating password in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+      | password | secret |
+    And Updating last share with
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk without updating password set after creation in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+    And Updating last share with
+      | password | secret |
+    And Updating last share with
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Enabling send password by Talk with no password in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+    And Updating last share with
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share can be downloaded
+
+  Scenario: Enabling send password by Talk with no password removed after creation in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+      | password | secret |
+    And Updating last share with
+      | password | |
+    And Updating last share with
+      | sendPasswordByTalk | true |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share can be downloaded
+
+  Scenario: Disabling send password by Talk without setting new password in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Disabling send password by Talk without setting new password set after creation in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Disabling send password by Talk setting same password in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Disabling send password by Talk setting same password set after creation in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "400"
+    And the HTTP status code should be "200"
+    And last share with password "secret" can be downloaded
+
+  Scenario: Disabling send password by Talk setting new password in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | password | another secret |
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "another secret" can be downloaded
+
+  Scenario: Disabling send password by Talk setting new password set after creation in a mail share
+    Given dummy mail server is listening
+    And user "user0" exists
+    And As an "user0"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 4 |
+      | shareWith | dummy@test.com |
+    And Updating last share with
+      | password | secret |
+      | sendPasswordByTalk | true |
+    And Updating last share with
+      | password | another secret |
+      | sendPasswordByTalk | false |
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And last share with password "another secret" can be downloaded