Sunil Mohan Adapa f5bfd7a9db
mediawiki: Use privileged decorator for actions
Tests:

- Functional tests works (when libpam-tmpdir is removed)
- Initial setup works
  - Website is accessible
  - sqlite file is created
  - Database update is triggered
- Changing skin/admin password/public registrations/private mode/site name works
  - Configuration file is updated
  - App page shows the current value
  - Website is reflects the correct value
  - When private mode is enabled, public registrations are automatically
    disabled

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2022-10-08 18:52:23 -04:00

77 lines
2.4 KiB
Python

# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Test module for MediaWiki utility functions.
"""
import pathlib
import shutil
from unittest.mock import patch
import pytest
from plinth.modules import mediawiki
from plinth.modules.mediawiki import privileged
pytestmark = pytest.mark.usefixtures('mock_privileged')
current_directory = pathlib.Path(__file__).parent
privileged_modules_to_mock = ['plinth.modules.mediawiki.privileged']
@pytest.fixture(autouse=True)
def fixture_setup_configuration(conf_file):
"""Set configuration file path in actions module."""
privileged.CONF_FILE = conf_file
@pytest.fixture(name='conf_file')
def fixture_conf_file(tmp_path):
"""Uses a dummy configuration file."""
settings_file_name = 'FreedomBoxSettings.php'
conf_file = tmp_path / settings_file_name
conf_file.touch()
shutil.copyfile(
str(current_directory / '..' / 'data' / 'etc' / 'mediawiki' /
settings_file_name), str(conf_file))
return str(conf_file)
@pytest.fixture(name='test_configuration', autouse=True)
def fixture_test_configuration(conf_file):
"""Use a separate MediaWiki configuration for tests.
Uses local FreedomBoxStaticSettings.php, a temp version of
FreedomBoxSettings.php
"""
data_directory = pathlib.Path(__file__).parent.parent / 'data'
static_config_file = str(data_directory / 'etc' / 'mediawiki' /
mediawiki.STATIC_CONFIG_FILE.split('/')[-1])
with patch('plinth.modules.mediawiki.STATIC_CONFIG_FILE',
static_config_file), \
patch('plinth.modules.mediawiki.USER_CONFIG_FILE', conf_file):
yield
def test_default_skin():
"""Test getting and setting the default skin."""
assert mediawiki.get_default_skin() == 'timeless'
new_skin = 'vector'
privileged.set_default_skin(new_skin)
assert mediawiki.get_default_skin() == new_skin
def test_server_url():
"""Test getting and setting $wgServer."""
assert mediawiki.get_server_url() == 'freedombox.local'
new_domain = 'mydomain.freedombox.rocks'
mediawiki.set_server_url(new_domain)
assert mediawiki.get_server_url() == new_domain
def test_site_name():
"""Test getting and setting $wgSitename."""
assert mediawiki.get_site_name() == 'Wiki'
new_site_name = 'My MediaWiki'
privileged.set_site_name(new_site_name)
assert mediawiki.get_site_name() == new_site_name