config: Failed test when running tests as root
Seen in unstable container when running sudo py.test:
__________________________________________ test_homepage_field ___________________________________________
@patch('plinth.frontpage.Shortcut.list',
MagicMock(return_value=[
Dict2Obj({
'url': 'url/for/' + id,
'component_id': id
}) for id in ('a', 'b')
]))
@pytest.mark.usefixtures('needs_root')
def test_homepage_field():
"""Test homepage changes.
Test Cases:
1) FreedomBox Homepage (default),
2) Apache default,
3) A user's website of an...
3.1) unexisting user
3.2) existing user without a page
3.3) existing user page.
4) A FreedomBox App.
4.1) unknown app
4.2) uninstalled app
4.3) disabled app
4.4) enabled app
Note: If run on a pristine unconfigured FreedomBox, this test will leave
the homepage default-configured. (Imperfect cleanup in such case).
Note: We take fbx as website user because of our testing container.
Pending: - Specific test cases to distinguish 4.1,2,3.
Currently they share the same test case.
- Search for another valid user apart from fbx.
"""
user = 'fbx'
uws_directory = uws_directory_of_user(user)
uws_url = uws_url_of_user(user)
uws_scid = home_page_url2scid(uws_url)
default_home_page = 'plinth'
original_home_page = get_home_page() or default_home_page
# Check test's preconditions:
if original_home_page not in (default_home_page, None):
reason = "Unexpected home page {}.".format(original_home_page)
pytest.skip(reason)
if os.path.exists(uws_directory):
# Don't blindly remove a pre-existing directory. Just skip the test.
reason = "UWS directory {} exists already.".format(uws_directory)
pytest.skip(reason)
# AC: invalid changes fall back to default:
for scid in ('uws-unexisting', uws_scid, 'missing_app'):
change_home_page(scid)
> assert get_home_page() == default_home_page
E AssertionError: assert 'apache-default' == 'plinth'
E
E - plinth
E + apache-default
plinth/modules/config/tests/test_config.py:128: AssertionError
/etc/apache2/conf-enabled/freedombox-apache-homepage.conf exists, but is an empty file.