From 520feedaca03f92ff9492b169c8d894509d1ae12 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 1 Nov 2021 21:33:32 -0400 Subject: [PATCH] tor: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/tor/tests/test_functional.py | 124 +++++++++----------- 1 file changed, 56 insertions(+), 68 deletions(-) diff --git a/plinth/modules/tor/tests/test_functional.py b/plinth/modules/tor/tests/test_functional.py index 3ccaa539e..0efca9a25 100644 --- a/plinth/modules/tor/tests/test_functional.py +++ b/plinth/modules/tor/tests/test_functional.py @@ -17,81 +17,69 @@ _TOR_FEATURE_TO_ELEMENT = { pytestmark = [pytest.mark.apps, pytest.mark.tor] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'tor') - yield - functional.app_disable(session_browser, 'tor') +class TestTorApp(functional.BaseAppTests): + app_name = 'tor' + has_service = True + has_web = False + # TODO: Investigate why accessing IPv6 sites through Tor fails in + # container. + check_diagnostics = False + def test_set_tor_relay_configuration(self, session_browser): + """Test setting Tor relay configuration.""" + functional.app_enable(session_browser, 'tor') + _feature_enable(session_browser, 'relay', should_enable=False) + _feature_enable(session_browser, 'relay', should_enable=True) + _assert_feature_enabled(session_browser, 'relay', enabled=True) + assert 'orport' in _get_relay_ports(session_browser) -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'tor') + def test_set_tor_bridge_relay_configuration(self, session_browser): + """Test setting Tor bridge relay configuration.""" + functional.app_enable(session_browser, 'tor') + _feature_enable(session_browser, 'bridge-relay', should_enable=False) + _feature_enable(session_browser, 'bridge-relay', should_enable=True) + _assert_feature_enabled(session_browser, 'bridge-relay', enabled=True) + assert 'obfs3' in _get_relay_ports(session_browser) + assert 'obfs4' in _get_relay_ports(session_browser) - functional.app_enable(session_browser, 'tor') - assert functional.service_is_running(session_browser, 'tor') + def test_set_tor_hidden_services_configuration(self, session_browser): + """Test setting Tor hidden services configuration.""" + functional.app_enable(session_browser, 'tor') + _feature_enable(session_browser, 'hidden-services', + should_enable=False) + _feature_enable(session_browser, 'hidden-services', should_enable=True) + _assert_feature_enabled(session_browser, 'hidden-services', + enabled=True) + _assert_hidden_services(session_browser) - functional.app_disable(session_browser, 'tor') - assert functional.service_is_not_running(session_browser, 'tor') + def test_set_download_software_packages_over_tor(self, session_browser): + """Test setting download software packages over Tor.""" + functional.app_enable(session_browser, 'tor') + _feature_enable(session_browser, 'software', should_enable=True) + _feature_enable(session_browser, 'software', should_enable=False) + _assert_feature_enabled(session_browser, 'software', enabled=False) + # TODO: Test more thoroughly by checking same hidden service is restored + # and by actually connecting using Tor. + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of configuration.""" + functional.app_enable(session_browser, 'tor') + _feature_enable(session_browser, 'relay', should_enable=True) + _feature_enable(session_browser, 'bridge-relay', should_enable=True) + _feature_enable(session_browser, 'hidden-services', should_enable=True) + functional.backup_create(session_browser, 'tor', 'test_tor') -def test_set_tor_relay_configuration(session_browser): - """Test setting Tor relay configuration.""" - functional.app_enable(session_browser, 'tor') - _feature_enable(session_browser, 'relay', should_enable=False) - _feature_enable(session_browser, 'relay', should_enable=True) - _assert_feature_enabled(session_browser, 'relay', enabled=True) - assert 'orport' in _get_relay_ports(session_browser) + _feature_enable(session_browser, 'relay', should_enable=False) + _feature_enable(session_browser, 'hidden-services', + should_enable=False) + functional.backup_restore(session_browser, 'tor', 'test_tor') - -def test_set_tor_bridge_relay_configuration(session_browser): - """Test setting Tor bridge relay configuration.""" - functional.app_enable(session_browser, 'tor') - _feature_enable(session_browser, 'bridge-relay', should_enable=False) - _feature_enable(session_browser, 'bridge-relay', should_enable=True) - _assert_feature_enabled(session_browser, 'bridge-relay', enabled=True) - assert 'obfs3' in _get_relay_ports(session_browser) - assert 'obfs4' in _get_relay_ports(session_browser) - - -def test_set_tor_hidden_services_configuration(session_browser): - """Test setting Tor hidden services configuration.""" - functional.app_enable(session_browser, 'tor') - _feature_enable(session_browser, 'hidden-services', should_enable=False) - _feature_enable(session_browser, 'hidden-services', should_enable=True) - _assert_feature_enabled(session_browser, 'hidden-services', enabled=True) - _assert_hidden_services(session_browser) - - -def test_set_download_software_packages_over_tor(session_browser): - """Test setting download software packages over Tor.""" - functional.app_enable(session_browser, 'tor') - _feature_enable(session_browser, 'software', should_enable=True) - _feature_enable(session_browser, 'software', should_enable=False) - _assert_feature_enabled(session_browser, 'software', enabled=False) - - -# TODO: Test more thoroughly by checking same hidden service is restored and by -# actually connecting using Tor. -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore of configuration.""" - functional.app_enable(session_browser, 'tor') - _feature_enable(session_browser, 'relay', should_enable=True) - _feature_enable(session_browser, 'bridge-relay', should_enable=True) - _feature_enable(session_browser, 'hidden-services', should_enable=True) - functional.backup_create(session_browser, 'tor', 'test_tor') - - _feature_enable(session_browser, 'relay', should_enable=False) - _feature_enable(session_browser, 'hidden-services', should_enable=False) - functional.backup_restore(session_browser, 'tor', 'test_tor') - - assert functional.service_is_running(session_browser, 'tor') - _assert_feature_enabled(session_browser, 'relay', enabled=True) - _assert_feature_enabled(session_browser, 'bridge-relay', enabled=True) - _assert_feature_enabled(session_browser, 'hidden-services', enabled=True) + assert functional.service_is_running(session_browser, 'tor') + _assert_feature_enabled(session_browser, 'relay', enabled=True) + _assert_feature_enabled(session_browser, 'bridge-relay', enabled=True) + _assert_feature_enabled(session_browser, 'hidden-services', + enabled=True) def _feature_enable(browser, feature, should_enable):