Sunil Mohan Adapa 80d67c2054
tests: functional: Merge into main source hierarchy
- Add pytest hooks to ignore all functional tests if pytest_bdd is not
installed.

- Update pytest hooks to skip tests in file named 'test_functional.py' if
--include-functional argument is not provided.

- Move functional_tests/install.py into plinth/tests/functional and update
reference in Vagrantfile.

- Move scenario files into individual app folders. Rename them after the app
they are testing. Merge TODO items listed in todo.org into corresponding feature
files.

- Add test_functional.py in each app to build tests from the features file using
pytest_bdd.

- Move all step_definitions, support and data into plinth/tests/functional/.
Include all step_definitions from conftest.py. Update to relative imports
instead of absolute imports.

Tests performed:

- Run py.test-3 --collect-only shows all functional tests and lists 574 tests.
No errors show that name of feature files are correct. The number says that all
functional test features are included.

- Remove pytest_bdd (or modify the import name) and run py.test-3 --collect-only
skips collecting all functional tests and shows only 300+ tests.

- Run functional tests for a few apps with py.test-3 --include-functional -m
app. For storage, deluge.

- Run unit tests with py.test-3. Functional tests are listed by skipped.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Joseph Nuthalapati <njoseph@riseup.net>
2020-05-22 21:26:05 +05:30

58 lines
2.4 KiB
Gherkin

# SPDX-License-Identifier: AGPL-3.0-or-later
@apps @coquelicot @backups @skip
Feature: Coquelicot File Sharing
Run Coquelicot File Sharing server.
Background:
Given I'm a logged in user
Given the coquelicot application is installed
Scenario: Enable coquelicot application
Given the coquelicot application is disabled
When I enable the coquelicot application
Then the coquelicot service should be running
Scenario: Modify maximum upload size
Given the coquelicot application is enabled
When I modify the maximum file size of coquelicot to 256
Then the maximum file size of coquelicot should be 256
Scenario: Modify upload password
Given the coquelicot application is enabled
When I modify the coquelicot upload password to whatever123
Then I should be able to login to coquelicot with password whatever123
Scenario: Modify maximum upload size in disabled case
Given the coquelicot application is disabled
When I modify the maximum file size of coquelicot to 123
Then the coquelicot service should not be running
Scenario: Upload a file to coquelicot
Given the coquelicot application is enabled
And a sample local file
When I modify the coquelicot upload password to whatever123
And I upload the sample local file to coquelicot with password whatever123
And I download the uploaded file from coquelicot
Then contents of downloaded sample file should be same as sample local file
Scenario: Backup and restore coquelicot
Given the coquelicot application is enabled
When I modify the coquelicot upload password to beforebackup123
And I modify the maximum file size of coquelicot to 128
And I upload the sample local file to coquelicot with password beforebackup123
And I create a backup of the coquelicot app data with name test_coquelicot
And I modify the coquelicot upload password to afterbackup123
And I modify the maximum file size of coquelicot to 64
And I restore the coquelicot app data backup with name test_coquelicot
And I download the uploaded file from coquelicot
Then the coquelicot service should be running
And I should be able to login to coquelicot with password beforebackup123
And the maximum file size of coquelicot should be 128
And contents of downloaded sample file should be same as sample local file
Scenario: Disable coquelicot application
Given the coquelicot application is enabled
When I disable the coquelicot application
Then the coquelicot service should not be running