mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-03-18 09:10:49 +00:00
Tests: - Functional tests work (backup test intermittent failure) - Initial setup works - Domain name is configured properly - FAIL: Changing hostname works (See #2276) - Adding a domain to the system works - Current list of domains shown properly in app page - Setting list of domains works - Showing TURN configuration works - Updating TURN configuration in coturn page works - Enabling/disabling MAM status works - Configure file is updated - App page shows correct status Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
95 lines
3.0 KiB
Python
95 lines
3.0 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""
|
|
Test module for ejabberd STUN/TURN configuration.
|
|
"""
|
|
|
|
import pathlib
|
|
import shutil
|
|
from unittest.mock import Mock, patch
|
|
|
|
import pytest
|
|
|
|
from plinth.modules import ejabberd
|
|
from plinth.modules.coturn.components import TurnConfiguration
|
|
from plinth.modules.ejabberd import privileged
|
|
|
|
managed_configuration = TurnConfiguration(
|
|
'freedombox.local', [],
|
|
'aiP02OAGyOlj6WGuCyqj7iaOsbkC7BUeKvKzhAsTZ8MEwMd3yTwpr2uvbOxgWe51')
|
|
|
|
overridden_configuration = TurnConfiguration(
|
|
'public.coturn.site', [],
|
|
'BUeKvKzhAsTZ8MEwMd3yTwpr2uvbOxgWe51aiP02OAGyOlj6WGuCyqj7iaOsbkC7')
|
|
|
|
pytestmark = pytest.mark.usefixtures('mock_privileged')
|
|
current_directory = pathlib.Path(__file__).parent
|
|
privileged_modules_to_mock = ['plinth.modules.ejabberd.privileged']
|
|
|
|
|
|
@pytest.fixture(name='conf_file')
|
|
def fixture_conf_file(tmp_path):
|
|
"""Uses a dummy configuration file."""
|
|
settings_file_name = 'ejabberd.yml'
|
|
conf_file = tmp_path / settings_file_name
|
|
conf_file.touch()
|
|
shutil.copyfile(str(current_directory / 'data' / 'ejabberd.yml.example'),
|
|
str(conf_file))
|
|
return str(conf_file)
|
|
|
|
|
|
@pytest.fixture(name='managed_file')
|
|
def fixture_managed_file(tmp_path):
|
|
"""Uses a dummy managed file."""
|
|
file_name = 'freedombox_managed_coturn'
|
|
fil = tmp_path / file_name
|
|
return str(fil)
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def fixture_set_configuration_paths(conf_file, managed_file):
|
|
"""Setup configuration file paths in action module."""
|
|
privileged.EJABBERD_CONFIG = conf_file
|
|
privileged.EJABBERD_MANAGED_COTURN = managed_file
|
|
|
|
|
|
@pytest.fixture(name='test_configuration', autouse=True)
|
|
def fixture_test_configuration(conf_file):
|
|
"""Use a separate ejabberd configuration for tests.
|
|
|
|
The module state is patched to be 'up-to-date'.
|
|
"""
|
|
with patch('plinth.app.App.get') as app_get:
|
|
app = Mock()
|
|
app_get.return_value = app
|
|
app.needs_setup.return_value = False
|
|
yield
|
|
|
|
|
|
def _set_turn_configuration(config=managed_configuration, managed=True):
|
|
with patch('plinth.privileged.service.is_running', return_value=False):
|
|
ejabberd.update_turn_configuration(config, managed=managed)
|
|
|
|
|
|
def _assert_conf(expected_configuration, expected_managed):
|
|
"""Assert that ejabberd TURN configuration is as expected."""
|
|
config, managed = ejabberd.get_turn_configuration()
|
|
assert config.uris == expected_configuration.uris
|
|
assert config.shared_secret == expected_configuration.shared_secret
|
|
assert managed == expected_managed
|
|
|
|
|
|
def test_managed_turn_server_configuration():
|
|
_set_turn_configuration()
|
|
_assert_conf(managed_configuration, True)
|
|
|
|
|
|
def test_overridden_turn_server_configuration():
|
|
_set_turn_configuration(overridden_configuration, False)
|
|
_assert_conf(overridden_configuration, False)
|
|
|
|
|
|
def test_remove_turn_configuration():
|
|
_set_turn_configuration()
|
|
_set_turn_configuration(TurnConfiguration(), False)
|
|
_assert_conf(TurnConfiguration(), False)
|