tor: Use BaseAppTests for functional tests

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
This commit is contained in:
James Valleroy 2021-11-01 21:33:32 -04:00 committed by Sunil Mohan Adapa
parent 7b90787be3
commit 520feedaca
No known key found for this signature in database
GPG Key ID: 43EA1CFF0AA7C5F2

View File

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