FreedomBox/plinth/modules/ejabberd/tests/test_turn_config.py
Joseph Nuthalapati 7a30470cb5
ejabberd: STUN/TURN configuration
This implementation is very similar to that of Matrix Synapse with a lot
of code duplicated.

One major difference is that ejabberd doesn't have a conf.d/ directory.
So, the managed configuration and overridden configuration cannot be
cleanly separated.

Whether the configuration is managed or not is determined by the
presence of a file under `/etc/ejabberd`. Managed coturn configuration
isn't stored in ejabberd, since only one set of configuration can be
stored at a time. If the admin chooses to use the managed configuration,
the current coturn configuration is fetched and used to configure
ejabberd.

Fixes #1978

Signed-off-by: Joseph Nuthalapati <njoseph@riseup.net>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2021-04-16 17:52:48 -04:00

49 lines
1.7 KiB
Python

# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Test module for ejabberd STUN/TURN configuration.
"""
from unittest.mock import patch
from plinth.modules import ejabberd
from plinth.modules.coturn.components import TurnConfiguration
managed_configuration = TurnConfiguration(
'freedombox.local', [],
'aiP02OAGyOlj6WGuCyqj7iaOsbkC7BUeKvKzhAsTZ8MEwMd3yTwpr2uvbOxgWe51')
overridden_configuration = TurnConfiguration(
'public.coturn.site', [],
'BUeKvKzhAsTZ8MEwMd3yTwpr2uvbOxgWe51aiP02OAGyOlj6WGuCyqj7iaOsbkC7')
def _set_turn_configuration(monkeypatch, config=managed_configuration,
managed=True):
monkeypatch.setattr('sys.stdin', config.to_json())
with patch('plinth.action_utils.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(monkeypatch):
_set_turn_configuration(monkeypatch)
_assert_conf(managed_configuration, True)
def test_overridden_turn_server_configuration(monkeypatch):
_set_turn_configuration(monkeypatch, overridden_configuration, False)
_assert_conf(overridden_configuration, False)
def test_remove_turn_configuration(monkeypatch):
_set_turn_configuration(monkeypatch)
_set_turn_configuration(monkeypatch, TurnConfiguration(), False)
_assert_conf(TurnConfiguration(), False)