mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-04-29 10:10:19 +00:00
tor: Convert functional tests to non-BDD python format
Signed-off-by: James Valleroy <jvalleroy@mailbox.org> [sunil: Remove use of text constants for bool values (artifact of bdd)] Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
This commit is contained in:
parent
e500f191b3
commit
1bc42a7647
@ -3,7 +3,7 @@
|
|||||||
Functional, browser based tests for tor app.
|
Functional, browser based tests for tor app.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from pytest_bdd import given, parsers, scenarios, then, when
|
import pytest
|
||||||
|
|
||||||
from plinth.tests import functional
|
from plinth.tests import functional
|
||||||
|
|
||||||
@ -14,85 +14,88 @@ _TOR_FEATURE_TO_ELEMENT = {
|
|||||||
'software': 'tor-apt_transport_tor_enabled'
|
'software': 'tor-apt_transport_tor_enabled'
|
||||||
}
|
}
|
||||||
|
|
||||||
scenarios('tor.feature')
|
pytestmark = [pytest.mark.apps, pytest.mark.tor]
|
||||||
|
|
||||||
|
|
||||||
@given(parsers.parse('tor relay is {enabled:w}'))
|
@pytest.fixture(scope='module', autouse=True)
|
||||||
def tor_given_relay_enable(session_browser, enabled):
|
def fixture_background(session_browser):
|
||||||
_feature_enable(session_browser, 'relay', enabled)
|
"""Login and install the app."""
|
||||||
|
functional.login(session_browser)
|
||||||
|
functional.install(session_browser, 'tor')
|
||||||
|
yield
|
||||||
|
functional.app_disable(session_browser, 'tor')
|
||||||
|
|
||||||
|
|
||||||
@when(parsers.parse('I {enable:w} tor relay'))
|
def test_enable_disable(session_browser):
|
||||||
def tor_relay_enable(session_browser, enable):
|
"""Test enabling the app."""
|
||||||
_feature_enable(session_browser, 'relay', enable)
|
functional.app_disable(session_browser, 'tor')
|
||||||
|
|
||||||
|
functional.app_enable(session_browser, 'tor')
|
||||||
|
assert functional.service_is_running(session_browser, 'tor')
|
||||||
|
|
||||||
|
functional.app_disable(session_browser, 'tor')
|
||||||
|
assert functional.service_is_not_running(session_browser, 'tor')
|
||||||
|
|
||||||
|
|
||||||
@then(parsers.parse('tor relay should be {enabled:w}'))
|
def test_set_tor_relay_configuration(session_browser):
|
||||||
def tor_assert_relay_enabled(session_browser, enabled):
|
"""Test setting Tor relay configuration."""
|
||||||
_assert_feature_enabled(session_browser, 'relay', enabled)
|
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)
|
||||||
|
|
||||||
|
|
||||||
@then(parsers.parse('tor {port_name:w} port should be displayed'))
|
def test_set_tor_bridge_relay_configuration(session_browser):
|
||||||
def tor_assert_port_displayed(session_browser, port_name):
|
"""Test setting Tor bridge relay configuration."""
|
||||||
assert port_name in _get_relay_ports(session_browser)
|
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)
|
||||||
|
|
||||||
|
|
||||||
@given(parsers.parse('tor bridge relay is {enabled:w}'))
|
def test_set_tor_hidden_services_configuration(session_browser):
|
||||||
def tor_given_bridge_relay_enable(session_browser, enabled):
|
"""Test setting Tor hidden services configuration."""
|
||||||
_feature_enable(session_browser, 'bridge-relay', enabled)
|
functional.app_enable(session_browser, 'tor')
|
||||||
|
_feature_enable(session_browser, 'hidden-services', should_enable=False)
|
||||||
|
_feature_enable(session_browser, 'hidden-services', should_enable=True)
|
||||||
@when(parsers.parse('I {enable:w} tor bridge relay'))
|
_assert_feature_enabled(session_browser, 'hidden-services', enabled=True)
|
||||||
def tor_bridge_relay_enable(session_browser, enable):
|
|
||||||
_feature_enable(session_browser, 'bridge-relay', enable)
|
|
||||||
|
|
||||||
|
|
||||||
@then(parsers.parse('tor bridge relay should be {enabled:w}'))
|
|
||||||
def tor_assert_bridge_relay_enabled(session_browser, enabled):
|
|
||||||
_assert_feature_enabled(session_browser, 'bridge-relay', enabled)
|
|
||||||
|
|
||||||
|
|
||||||
@given(parsers.parse('tor hidden services are {enabled:w}'))
|
|
||||||
def tor_given_hidden_services_enable(session_browser, enabled):
|
|
||||||
_feature_enable(session_browser, 'hidden-services', enabled)
|
|
||||||
|
|
||||||
|
|
||||||
@when(parsers.parse('I {enable:w} tor hidden services'))
|
|
||||||
def tor_hidden_services_enable(session_browser, enable):
|
|
||||||
_feature_enable(session_browser, 'hidden-services', enable)
|
|
||||||
|
|
||||||
|
|
||||||
@then(parsers.parse('tor hidden services should be {enabled:w}'))
|
|
||||||
def tor_assert_hidden_services_enabled(session_browser, enabled):
|
|
||||||
_assert_feature_enabled(session_browser, 'hidden-services', enabled)
|
|
||||||
|
|
||||||
|
|
||||||
@then(parsers.parse('tor hidden services information should be displayed'))
|
|
||||||
def tor_assert_hidden_services(session_browser):
|
|
||||||
_assert_hidden_services(session_browser)
|
_assert_hidden_services(session_browser)
|
||||||
|
|
||||||
|
|
||||||
@given(parsers.parse('download software packages over tor is {enabled:w}'))
|
def test_set_download_software_packages_over_tor(session_browser):
|
||||||
def tor_given_download_software_over_tor_enable(session_browser, enabled):
|
"""Test setting download software packages over Tor."""
|
||||||
_feature_enable(session_browser, 'software', enabled)
|
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)
|
||||||
|
|
||||||
|
|
||||||
@when(parsers.parse('I {enable:w} download software packages over tor'))
|
# TODO: Test more thoroughly by checking same hidden service is restored and by
|
||||||
def tor_download_software_over_tor_enable(session_browser, enable):
|
# actually connecting using Tor.
|
||||||
_feature_enable(session_browser, 'software', enable)
|
@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')
|
||||||
|
|
||||||
@then(
|
assert functional.service_is_running(session_browser, 'tor')
|
||||||
parsers.parse('download software packages over tor should be {enabled:w}'))
|
_assert_feature_enabled(session_browser, 'relay', enabled=True)
|
||||||
def tor_assert_download_software_over_tor(session_browser, enabled):
|
_assert_feature_enabled(session_browser, 'bridge-relay', enabled=True)
|
||||||
_assert_feature_enabled(session_browser, 'software', enabled)
|
_assert_feature_enabled(session_browser, 'hidden-services', enabled=True)
|
||||||
|
|
||||||
|
|
||||||
def _feature_enable(browser, feature, should_enable):
|
def _feature_enable(browser, feature, should_enable):
|
||||||
"""Enable/disable a Tor feature."""
|
"""Enable/disable a Tor feature."""
|
||||||
if not isinstance(should_enable, bool):
|
|
||||||
should_enable = should_enable in ('enable', 'enabled')
|
|
||||||
|
|
||||||
element_name = _TOR_FEATURE_TO_ELEMENT[feature]
|
element_name = _TOR_FEATURE_TO_ELEMENT[feature]
|
||||||
functional.nav_to_module(browser, 'tor')
|
functional.nav_to_module(browser, 'tor')
|
||||||
checkbox_element = browser.find_by_name(element_name).first
|
checkbox_element = browser.find_by_name(element_name).first
|
||||||
@ -113,9 +116,6 @@ def _feature_enable(browser, feature, should_enable):
|
|||||||
|
|
||||||
def _assert_feature_enabled(browser, feature, enabled):
|
def _assert_feature_enabled(browser, feature, enabled):
|
||||||
"""Assert whether Tor relay is enabled or disabled."""
|
"""Assert whether Tor relay is enabled or disabled."""
|
||||||
if not isinstance(enabled, bool):
|
|
||||||
enabled = enabled in ('enable', 'enabled')
|
|
||||||
|
|
||||||
element_name = _TOR_FEATURE_TO_ELEMENT[feature]
|
element_name = _TOR_FEATURE_TO_ELEMENT[feature]
|
||||||
functional.nav_to_module(browser, 'tor')
|
functional.nav_to_module(browser, 'tor')
|
||||||
assert browser.find_by_name(element_name).first.checked == enabled
|
assert browser.find_by_name(element_name).first.checked == enabled
|
||||||
|
|||||||
@ -1,60 +0,0 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
|
|
||||||
@apps @tor
|
|
||||||
Feature: Tor Anonymity Network
|
|
||||||
Manage Tor configuration.
|
|
||||||
|
|
||||||
Background:
|
|
||||||
Given I'm a logged in user
|
|
||||||
Given the tor application is installed
|
|
||||||
|
|
||||||
Scenario: Enable tor application
|
|
||||||
Given the tor application is disabled
|
|
||||||
When I enable the tor application
|
|
||||||
Then the tor service should be running
|
|
||||||
|
|
||||||
Scenario: Set tor relay configuration
|
|
||||||
Given tor relay is disabled
|
|
||||||
When I enable tor relay
|
|
||||||
Then tor relay should be enabled
|
|
||||||
And tor orport port should be displayed
|
|
||||||
|
|
||||||
Scenario: Set tor bridge relay configuration
|
|
||||||
Given tor bridge relay is disabled
|
|
||||||
When I enable tor bridge relay
|
|
||||||
Then tor bridge relay should be enabled
|
|
||||||
And tor obfs3 port should be displayed
|
|
||||||
And tor obfs4 port should be displayed
|
|
||||||
|
|
||||||
Scenario: Set tor hidden services configuration
|
|
||||||
Given tor hidden services are disabled
|
|
||||||
When I enable tor hidden services
|
|
||||||
Then tor hidden services should be enabled
|
|
||||||
And tor hidden services information should be displayed
|
|
||||||
|
|
||||||
Scenario: Set download software packages over tor
|
|
||||||
Given download software packages over tor is enabled
|
|
||||||
When I disable download software packages over tor
|
|
||||||
Then download software packages over tor should be disabled
|
|
||||||
|
|
||||||
# TODO: Test more thoroughly by checking same hidden service is restored and by
|
|
||||||
# actually connecting using Tor.
|
|
||||||
@backups
|
|
||||||
Scenario: Backup and restore tor
|
|
||||||
Given the tor application is enabled
|
|
||||||
And tor relay is enabled
|
|
||||||
And tor bridge relay is enabled
|
|
||||||
And tor hidden services are enabled
|
|
||||||
When I create a backup of the tor app data with name test_tor
|
|
||||||
And I disable tor relay
|
|
||||||
And I disable tor hidden services
|
|
||||||
And I restore the tor app data backup with name test_tor
|
|
||||||
Then the tor service should be running
|
|
||||||
And tor relay should be enabled
|
|
||||||
And tor bridge relay should be enabled
|
|
||||||
And tor hidden services should be enabled
|
|
||||||
|
|
||||||
Scenario: Disable tor application
|
|
||||||
Given the tor application is enabled
|
|
||||||
When I disable the tor application
|
|
||||||
Then the tor service should not be running
|
|
||||||
Loading…
x
Reference in New Issue
Block a user