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

54 lines
2.0 KiB
Gherkin

# SPDX-License-Identifier: AGPL-3.0-or-later
# TODO: When tahoe-lafs is restarted, it leaves a .gnupg folder in
# /var/lib/tahoe-lafs and failes to start in the next run. Enable tests after
# this is fixed.
@apps @tahoe @skip
Feature: Tahoe-LAFS distribute file storage
Run the Tahoe distribute file storage server
Background:
Given I'm a logged in user
And advanced mode is on
And the domain name is set to mydomain.example
And the tahoe application is installed
And the domain name for tahoe is set to mydomain.example
Scenario: Enable tahoe application
Given the tahoe application is disabled
When I enable the tahoe application
Then the tahoe service should be running
Scenario: Default tahoe introducers
Given the tahoe application is enabled
Then mydomain.example should be a tahoe local introducer
And mydomain.example should be a tahoe connected introducer
Scenario: Add tahoe introducer
Given the tahoe application is enabled
And anotherdomain.example is not a tahoe introducer
When I add anotherdomain.example as a tahoe introducer
Then anotherdomain.example should be a tahoe connected introducer
Scenario: Remove tahoe introducer
Given the tahoe application is enabled
And anotherdomain.example is a tahoe introducer
When I remove anotherdomain.example as a tahoe introducer
Then anotherdomain.example should not be a tahoe connected introducer
@backups
Scenario: Backup and restore tahoe
Given the tahoe application is enabled
And backupdomain.example is a tahoe introducer
When I create a backup of the tahoe app data with name test_tahoe
And I remove backupdomain.example as a tahoe introducer
And I restore the tahoe app data backup with name test_tahoe
Then the tahoe service should be running
And backupdomain.example should be a tahoe connected introducer
Scenario: Disable tahoe application
Given the tahoe application is enabled
When I disable the tahoe application
Then the tahoe service should not be running