Add integration tests for video verification

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>
This commit is contained in:
Daniel Calviño Sánchez 2020-05-28 20:53:36 +02:00
parent 125481a660
commit fcafad2111
4 changed files with 608 additions and 0 deletions

View File

@ -1359,6 +1359,37 @@ trigger:
- pull_request - pull_request
- push - 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 --branch stable19 --depth 1 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 kind: pipeline
name: integration-setup-features name: integration-setup-features

View File

@ -65,6 +65,7 @@ default:
- admin - admin
- admin - admin
regular_user_password: 123456 regular_user_password: 123456
- TalkContext
setup: setup:
paths: paths:
- "%paths.base%/../setup_features" - "%paths.base%/../setup_features"

View File

@ -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;
}
}

View File

@ -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