mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-28 08:03:36 +00:00
Closes: #729. Tests: - Install Shadowsocks Server. Install Shadowsocks Client, and set the server to localhost, and set the same password as the server. Use curl to connect to local SOCKS proxy on port 1080 and fetch a website. Signed-off-by: James Valleroy <jvalleroy@mailbox.org> [sunil: Update some docstring comments for shadowsocks clients] [sunil: Use the term Censorship instead of network filters] [sunil: Prevent enabling both apps when setup is re-run] [sunil: Update typehint for a privileged method to be minimal] [sunil: Accept connections from external IPs too] Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""
|
|
Functional, browser based tests for Shadowsocks Server app.
|
|
"""
|
|
|
|
import pytest
|
|
|
|
from plinth.tests import functional
|
|
|
|
pytestmark = [pytest.mark.apps, pytest.mark.shadowsocksserver]
|
|
|
|
|
|
class TestShadowsocksServerApp(functional.BaseAppTests):
|
|
app_name = 'shadowsocksserver'
|
|
has_service = True
|
|
has_web = False
|
|
|
|
@pytest.fixture(scope='class', autouse=True)
|
|
def fixture_setup(self, session_browser):
|
|
"""Setup the app."""
|
|
functional.login(session_browser)
|
|
functional.install(session_browser, 'shadowsocksserver')
|
|
_configure(session_browser, 'fakepassword')
|
|
|
|
@pytest.mark.backups
|
|
def test_backup_restore(self, session_browser):
|
|
"""Test backup and restore of configuration."""
|
|
_configure(session_browser, 'beforebackup123')
|
|
functional.backup_create(session_browser, 'shadowsocksserver',
|
|
'test_shadowsocksserver')
|
|
|
|
_configure(session_browser, 'afterbackup123')
|
|
functional.backup_restore(session_browser, 'shadowsocksserver',
|
|
'test_shadowsocksserver')
|
|
|
|
assert functional.service_is_running(session_browser,
|
|
'shadowsocksserver')
|
|
assert _get_configuration(session_browser) == 'beforebackup123'
|
|
|
|
|
|
def _configure(browser, password):
|
|
"""Configure Shadowsocks Server with given details."""
|
|
functional.visit(browser, '/plinth/apps/shadowsocksserver/')
|
|
browser.find_by_id('id_password').fill(password)
|
|
functional.submit(browser, form_class='form-configuration')
|
|
|
|
|
|
def _get_configuration(browser):
|
|
"""Return the password currently configured in Shadowsocks Server."""
|
|
functional.visit(browser, '/plinth/apps/shadowsocksserver/')
|
|
password = browser.find_by_id('id_password').value
|
|
return password
|