Blame tests/unittests/test_handler/test_handler_apk_configure.py

Packit Service 9bfd13
# This file is part of cloud-init. See LICENSE file for license information.
Packit Service 9bfd13
Packit Service 9bfd13
""" test_apk_configure
Packit Service 9bfd13
Test creation of repositories file
Packit Service 9bfd13
"""
Packit Service 9bfd13
Packit Service 9bfd13
import logging
Packit Service 9bfd13
import os
Packit Service 9bfd13
import textwrap
Packit Service 9bfd13
Packit Service 9bfd13
from cloudinit import (cloud, helpers, util)
Packit Service 9bfd13
Packit Service 9bfd13
from cloudinit.config import cc_apk_configure
Packit Service 9bfd13
from cloudinit.tests.helpers import (FilesystemMockingTestCase, mock)
Packit Service 9bfd13
Packit Service 9bfd13
REPO_FILE = "/etc/apk/repositories"
Packit Service 9bfd13
DEFAULT_MIRROR_URL = "https://alpine.global.ssl.fastly.net/alpine"
Packit Service 9bfd13
CC_APK = 'cloudinit.config.cc_apk_configure'
Packit Service 9bfd13
Packit Service 9bfd13
Packit Service 9bfd13
class TestNoConfig(FilesystemMockingTestCase):
Packit Service 9bfd13
    def setUp(self):
Packit Service 9bfd13
        super(TestNoConfig, self).setUp()
Packit Service 9bfd13
        self.add_patch(CC_APK + '._write_repositories_file', 'm_write_repos')
Packit Service 9bfd13
        self.name = "apk-configure"
Packit Service 9bfd13
        self.cloud_init = None
Packit Service 9bfd13
        self.log = logging.getLogger("TestNoConfig")
Packit Service 9bfd13
        self.args = []
Packit Service 9bfd13
Packit Service 9bfd13
    def test_no_config(self):
Packit Service 9bfd13
        """
Packit Service 9bfd13
        Test that nothing is done if no apk-configure
Packit Service 9bfd13
        configuration is provided.
Packit Service 9bfd13
        """
Packit Service 9bfd13
        config = util.get_builtin_cfg()
Packit Service 9bfd13
Packit Service 9bfd13
        cc_apk_configure.handle(self.name, config, self.cloud_init,
Packit Service 9bfd13
                                self.log, self.args)
Packit Service 9bfd13
Packit Service 9bfd13
        self.assertEqual(0, self.m_write_repos.call_count)
Packit Service 9bfd13
Packit Service 9bfd13
Packit Service 9bfd13
class TestConfig(FilesystemMockingTestCase):
Packit Service 9bfd13
    def setUp(self):
Packit Service 9bfd13
        super(TestConfig, self).setUp()
Packit Service 9bfd13
        self.new_root = self.tmp_dir()
Packit Service 9bfd13
        self.new_root = self.reRoot(root=self.new_root)
Packit Service 9bfd13
        for dirname in ['tmp', 'etc/apk']:
Packit Service 9bfd13
            util.ensure_dir(os.path.join(self.new_root, dirname))
Packit Service 9bfd13
        self.paths = helpers.Paths({'templates_dir': self.new_root})
Packit Service 9bfd13
        self.name = "apk-configure"
Packit Service 9bfd13
        self.cloud = cloud.Cloud(None, self.paths, None, None, None)
Packit Service 9bfd13
        self.log = logging.getLogger("TestNoConfig")
Packit Service 9bfd13
        self.args = []
Packit Service 9bfd13
Packit Service 9bfd13
    @mock.patch(CC_APK + '._write_repositories_file')
Packit Service 9bfd13
    def test_no_repo_settings(self, m_write_repos):
Packit Service 9bfd13
        """
Packit Service 9bfd13
        Test that nothing is written if the 'alpine-repo' key
Packit Service 9bfd13
        is not present.
Packit Service 9bfd13
        """
Packit Service 9bfd13
        config = {"apk_repos": {}}
Packit Service 9bfd13
Packit Service 9bfd13
        cc_apk_configure.handle(self.name, config, self.cloud, self.log,
Packit Service 9bfd13
                                self.args)
Packit Service 9bfd13
Packit Service 9bfd13
        self.assertEqual(0, m_write_repos.call_count)
Packit Service 9bfd13
Packit Service 9bfd13
    @mock.patch(CC_APK + '._write_repositories_file')
Packit Service 9bfd13
    def test_empty_repo_settings(self, m_write_repos):
Packit Service 9bfd13
        """
Packit Service 9bfd13
        Test that nothing is written if 'alpine_repo' list is empty.
Packit Service 9bfd13
        """
Packit Service 9bfd13
        config = {"apk_repos": {"alpine_repo": []}}
Packit Service 9bfd13
Packit Service 9bfd13
        cc_apk_configure.handle(self.name, config, self.cloud, self.log,
Packit Service 9bfd13
                                self.args)
Packit Service 9bfd13
Packit Service 9bfd13
        self.assertEqual(0, m_write_repos.call_count)
Packit Service 9bfd13
Packit Service 9bfd13
    def test_only_main_repo(self):
Packit Service 9bfd13
        """
Packit Service 9bfd13
        Test when only details of main repo is written to file.
Packit Service 9bfd13
        """
Packit Service 9bfd13
        alpine_version = 'v3.12'
Packit Service 9bfd13
        config = {
Packit Service 9bfd13
            "apk_repos": {
Packit Service 9bfd13
                "alpine_repo": {
Packit Service 9bfd13
                    "version": alpine_version
Packit Service 9bfd13
                }
Packit Service 9bfd13
            }
Packit Service 9bfd13
        }
Packit Service 9bfd13
Packit Service 9bfd13
        cc_apk_configure.handle(self.name, config, self.cloud, self.log,
Packit Service 9bfd13
                                self.args)
Packit Service 9bfd13
Packit Service 9bfd13
        expected_content = textwrap.dedent("""\
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # Created by cloud-init
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # This file is written on first boot of an instance
Packit Service 9bfd13
            #
Packit Service 9bfd13
Packit Service 9bfd13
            {0}/{1}/main
Packit Service 9bfd13
Packit Service 9bfd13
            """.format(DEFAULT_MIRROR_URL, alpine_version))
Packit Service 9bfd13
Packit Service 9bfd13
        self.assertEqual(expected_content, util.load_file(REPO_FILE))
Packit Service 9bfd13
Packit Service 9bfd13
    def test_main_and_community_repos(self):
Packit Service 9bfd13
        """
Packit Service 9bfd13
        Test when only details of main and community repos are
Packit Service 9bfd13
        written to file.
Packit Service 9bfd13
        """
Packit Service 9bfd13
        alpine_version = 'edge'
Packit Service 9bfd13
        config = {
Packit Service 9bfd13
            "apk_repos": {
Packit Service 9bfd13
                "alpine_repo": {
Packit Service 9bfd13
                    "version": alpine_version,
Packit Service 9bfd13
                    "community_enabled": True
Packit Service 9bfd13
                }
Packit Service 9bfd13
            }
Packit Service 9bfd13
        }
Packit Service 9bfd13
Packit Service 9bfd13
        cc_apk_configure.handle(self.name, config, self.cloud, self.log,
Packit Service 9bfd13
                                self.args)
Packit Service 9bfd13
Packit Service 9bfd13
        expected_content = textwrap.dedent("""\
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # Created by cloud-init
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # This file is written on first boot of an instance
Packit Service 9bfd13
            #
Packit Service 9bfd13
Packit Service 9bfd13
            {0}/{1}/main
Packit Service 9bfd13
            {0}/{1}/community
Packit Service 9bfd13
Packit Service 9bfd13
            """.format(DEFAULT_MIRROR_URL, alpine_version))
Packit Service 9bfd13
Packit Service 9bfd13
        self.assertEqual(expected_content, util.load_file(REPO_FILE))
Packit Service 9bfd13
Packit Service 9bfd13
    def test_main_community_testing_repos(self):
Packit Service 9bfd13
        """
Packit Service 9bfd13
        Test when details of main, community and testing repos
Packit Service 9bfd13
        are written to file.
Packit Service 9bfd13
        """
Packit Service 9bfd13
        alpine_version = 'v3.12'
Packit Service 9bfd13
        config = {
Packit Service 9bfd13
            "apk_repos": {
Packit Service 9bfd13
                "alpine_repo": {
Packit Service 9bfd13
                    "version": alpine_version,
Packit Service 9bfd13
                    "community_enabled": True,
Packit Service 9bfd13
                    "testing_enabled": True
Packit Service 9bfd13
                }
Packit Service 9bfd13
            }
Packit Service 9bfd13
        }
Packit Service 9bfd13
Packit Service 9bfd13
        cc_apk_configure.handle(self.name, config, self.cloud, self.log,
Packit Service 9bfd13
                                self.args)
Packit Service 9bfd13
Packit Service 9bfd13
        expected_content = textwrap.dedent("""\
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # Created by cloud-init
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # This file is written on first boot of an instance
Packit Service 9bfd13
            #
Packit Service 9bfd13
Packit Service 9bfd13
            {0}/{1}/main
Packit Service 9bfd13
            {0}/{1}/community
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # Testing - using with non-Edge installation may cause problems!
Packit Service 9bfd13
            #
Packit Service 9bfd13
            {0}/edge/testing
Packit Service 9bfd13
Packit Service 9bfd13
            """.format(DEFAULT_MIRROR_URL, alpine_version))
Packit Service 9bfd13
Packit Service 9bfd13
        self.assertEqual(expected_content, util.load_file(REPO_FILE))
Packit Service 9bfd13
Packit Service 9bfd13
    def test_edge_main_community_testing_repos(self):
Packit Service 9bfd13
        """
Packit Service 9bfd13
        Test when details of main, community and testing repos
Packit Service 9bfd13
        for Edge version of Alpine are written to file.
Packit Service 9bfd13
        """
Packit Service 9bfd13
        alpine_version = 'edge'
Packit Service 9bfd13
        config = {
Packit Service 9bfd13
            "apk_repos": {
Packit Service 9bfd13
                "alpine_repo": {
Packit Service 9bfd13
                    "version": alpine_version,
Packit Service 9bfd13
                    "community_enabled": True,
Packit Service 9bfd13
                    "testing_enabled": True
Packit Service 9bfd13
                }
Packit Service 9bfd13
            }
Packit Service 9bfd13
        }
Packit Service 9bfd13
Packit Service 9bfd13
        cc_apk_configure.handle(self.name, config, self.cloud, self.log,
Packit Service 9bfd13
                                self.args)
Packit Service 9bfd13
Packit Service 9bfd13
        expected_content = textwrap.dedent("""\
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # Created by cloud-init
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # This file is written on first boot of an instance
Packit Service 9bfd13
            #
Packit Service 9bfd13
Packit Service 9bfd13
            {0}/{1}/main
Packit Service 9bfd13
            {0}/{1}/community
Packit Service 9bfd13
            {0}/{1}/testing
Packit Service 9bfd13
Packit Service 9bfd13
            """.format(DEFAULT_MIRROR_URL, alpine_version))
Packit Service 9bfd13
Packit Service 9bfd13
        self.assertEqual(expected_content, util.load_file(REPO_FILE))
Packit Service 9bfd13
Packit Service 9bfd13
    def test_main_community_testing_local_repos(self):
Packit Service 9bfd13
        """
Packit Service 9bfd13
        Test when details of main, community, testing and
Packit Service 9bfd13
        local repos are written to file.
Packit Service 9bfd13
        """
Packit Service 9bfd13
        alpine_version = 'v3.12'
Packit Service 9bfd13
        local_repo_url = 'http://some.mirror/whereever'
Packit Service 9bfd13
        config = {
Packit Service 9bfd13
            "apk_repos": {
Packit Service 9bfd13
                "alpine_repo": {
Packit Service 9bfd13
                    "version": alpine_version,
Packit Service 9bfd13
                    "community_enabled": True,
Packit Service 9bfd13
                    "testing_enabled": True
Packit Service 9bfd13
                },
Packit Service 9bfd13
                "local_repo_base_url": local_repo_url
Packit Service 9bfd13
            }
Packit Service 9bfd13
        }
Packit Service 9bfd13
Packit Service 9bfd13
        cc_apk_configure.handle(self.name, config, self.cloud, self.log,
Packit Service 9bfd13
                                self.args)
Packit Service 9bfd13
Packit Service 9bfd13
        expected_content = textwrap.dedent("""\
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # Created by cloud-init
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # This file is written on first boot of an instance
Packit Service 9bfd13
            #
Packit Service 9bfd13
Packit Service 9bfd13
            {0}/{1}/main
Packit Service 9bfd13
            {0}/{1}/community
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # Testing - using with non-Edge installation may cause problems!
Packit Service 9bfd13
            #
Packit Service 9bfd13
            {0}/edge/testing
Packit Service 9bfd13
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # Local repo
Packit Service 9bfd13
            #
Packit Service 9bfd13
            {2}/{1}
Packit Service 9bfd13
Packit Service 9bfd13
            """.format(DEFAULT_MIRROR_URL, alpine_version, local_repo_url))
Packit Service 9bfd13
Packit Service 9bfd13
        self.assertEqual(expected_content, util.load_file(REPO_FILE))
Packit Service 9bfd13
Packit Service 9bfd13
    def test_edge_main_community_testing_local_repos(self):
Packit Service 9bfd13
        """
Packit Service 9bfd13
        Test when details of main, community, testing and local repos
Packit Service 9bfd13
        for Edge version of Alpine are written to file.
Packit Service 9bfd13
        """
Packit Service 9bfd13
        alpine_version = 'edge'
Packit Service 9bfd13
        local_repo_url = 'http://some.mirror/whereever'
Packit Service 9bfd13
        config = {
Packit Service 9bfd13
            "apk_repos": {
Packit Service 9bfd13
                "alpine_repo": {
Packit Service 9bfd13
                    "version": alpine_version,
Packit Service 9bfd13
                    "community_enabled": True,
Packit Service 9bfd13
                    "testing_enabled": True
Packit Service 9bfd13
                },
Packit Service 9bfd13
                "local_repo_base_url": local_repo_url
Packit Service 9bfd13
            }
Packit Service 9bfd13
        }
Packit Service 9bfd13
Packit Service 9bfd13
        cc_apk_configure.handle(self.name, config, self.cloud, self.log,
Packit Service 9bfd13
                                self.args)
Packit Service 9bfd13
Packit Service 9bfd13
        expected_content = textwrap.dedent("""\
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # Created by cloud-init
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # This file is written on first boot of an instance
Packit Service 9bfd13
            #
Packit Service 9bfd13
Packit Service 9bfd13
            {0}/{1}/main
Packit Service 9bfd13
            {0}/{1}/community
Packit Service 9bfd13
            {0}/edge/testing
Packit Service 9bfd13
Packit Service 9bfd13
            #
Packit Service 9bfd13
            # Local repo
Packit Service 9bfd13
            #
Packit Service 9bfd13
            {2}/{1}
Packit Service 9bfd13
Packit Service 9bfd13
            """.format(DEFAULT_MIRROR_URL, alpine_version, local_repo_url))
Packit Service 9bfd13
Packit Service 9bfd13
        self.assertEqual(expected_content, util.load_file(REPO_FILE))
Packit Service 9bfd13
Packit Service 9bfd13
Packit Service 9bfd13
# vi: ts=4 expandtab