Skip to content

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.