diff --git a/plinth/modules/deluge/tests/deluge.feature b/plinth/modules/deluge/tests/deluge.feature deleted file mode 100644 index 62f3a0d28..000000000 --- a/plinth/modules/deluge/tests/deluge.feature +++ /dev/null @@ -1,48 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -@apps @deluge -Feature: Deluge BitTorrent Client - Run the Deluge BitTorrent client. - -Background: - Given I'm a logged in user - Given the deluge application is installed - -Scenario: Enable deluge application - Given the deluge application is disabled - When I enable the deluge application - Then the deluge site should be available - -Scenario: User of 'bit-torrent' group - Given the deluge application is enabled - And the user delugeuser in group bit-torrent exists - When I'm logged in as the user delugeuser - Then the deluge site should be available - -Scenario: User not of 'bit-torrent' group - Given the deluge application is enabled - And the user nogroupuser exists - When I'm logged in as the user nogroupuser - Then the deluge site should not be available - -Scenario: Upload a torrent to deluge - Given the deluge application is enabled - When all torrents are removed from deluge - And I upload a sample torrent to deluge - Then there should be 1 torrents listed in deluge - -@backups -Scenario: Backup and restore deluge - Given the deluge application is enabled - When all torrents are removed from deluge - And I upload a sample torrent to deluge - And I create a backup of the deluge app data with name test_deluge - And all torrents are removed from deluge - And I restore the deluge app data backup with name test_deluge - Then the deluge service should be running - And there should be 1 torrents listed in deluge - -Scenario: Disable deluge application - Given the deluge application is enabled - When I disable the deluge application - Then the deluge site should not be available diff --git a/plinth/modules/deluge/tests/test_functional.py b/plinth/modules/deluge/tests/test_functional.py index b2b8d88df..3029a9ce8 100644 --- a/plinth/modules/deluge/tests/test_functional.py +++ b/plinth/modules/deluge/tests/test_functional.py @@ -6,28 +6,75 @@ Functional, browser based tests for deluge app. import os import time -from pytest_bdd import parsers, scenarios, then, when - +import pytest from plinth.tests import functional -scenarios('deluge.feature') +pytestmark = [pytest.mark.apps, pytest.mark.deluge] -@when('all torrents are removed from deluge') -def deluge_remove_all_torrents(session_browser): +@pytest.fixture(scope='module', autouse=True) +def fixture_background(session_browser): + """Login and install the app.""" + functional.login(session_browser) + functional.install(session_browser, 'deluge') + yield + functional.app_disable(session_browser, 'deluge') + + +def test_enable_disable(session_browser): + """Test enabling the app.""" + functional.app_disable(session_browser, 'deluge') + + functional.app_enable(session_browser, 'deluge') + assert functional.service_is_running(session_browser, 'deluge') + assert functional.is_available(session_browser, 'deluge') + + functional.app_disable(session_browser, 'deluge') + assert functional.service_is_not_running(session_browser, 'deluge') + assert not functional.is_available(session_browser, 'deluge') + + +def test_bittorrent_group(session_browser): + """Test if only users in bit-torrent group can access Deluge.""" + functional.app_enable(session_browser, 'deluge') + if not functional.user_exists(session_browser, 'delugeuser'): + functional.create_user(session_browser, 'delugeuser', + groups=['bit-torrent']) + + if not functional.user_exists(session_browser, 'nogroupuser'): + functional.create_user(session_browser, 'nogroupuser') + + functional.login_with_account(session_browser, functional.base_url, + 'delugeuser') + assert functional.is_available(session_browser, 'deluge') + + functional.login_with_account(session_browser, functional.base_url, + 'nogroupuser') + assert not functional.is_available(session_browser, 'deluge') + + functional.login(session_browser) + + +def test_upload_torrent(session_browser): + """Test uploading a torrent.""" + functional.app_enable(session_browser, 'deluge') _remove_all_torrents(session_browser) - - -@when('I upload a sample torrent to deluge') -def deluge_upload_sample_torrent(session_browser): _upload_sample_torrent(session_browser) + assert _get_number_of_torrents(session_browser) == 1 -@then( - parsers.parse( - 'there should be {torrents_number:d} torrents listed in deluge')) -def deluge_assert_number_of_torrents(session_browser, torrents_number): - assert torrents_number == _get_number_of_torrents(session_browser) +@pytest.mark.backups +def test_backup_restore(session_browser): + """Test backup and restore.""" + functional.app_enable(session_browser, 'deluge') + _remove_all_torrents(session_browser) + _upload_sample_torrent(session_browser) + functional.backup_create(session_browser, 'deluge', 'test_deluge') + + _remove_all_torrents(session_browser) + functional.backup_restore(session_browser, 'deluge', 'test_deluge') + assert functional.service_is_running(session_browser, 'deluge') + assert _get_number_of_torrents(session_browser) == 1 def _get_active_window_title(browser):