Blame tests/unittests/test_vmware/test_guestcust_util.py

Packit Service a04d08
# Copyright (C) 2019 Canonical Ltd.
Packit Service a04d08
# Copyright (C) 2019 VMware INC.
Packit Service a04d08
#
Packit Service a04d08
# Author: Xiaofeng Wang <xiaofengw@vmware.com>
Packit Service a04d08
#
Packit Service a04d08
# This file is part of cloud-init. See LICENSE file for license information.
Packit Service a04d08
Packit Service 751c4a
from cloudinit import subp
Packit Service 751c4a
from cloudinit.sources.helpers.vmware.imc.config import Config
Packit Service 751c4a
from cloudinit.sources.helpers.vmware.imc.config_file import ConfigFile
Packit Service a04d08
from cloudinit.sources.helpers.vmware.imc.guestcust_util import (
Packit Service a04d08
    get_tools_config,
Packit Service 751c4a
    set_gc_status,
Packit Service a04d08
)
Packit Service a04d08
from cloudinit.tests.helpers import CiTestCase, mock
Packit Service a04d08
Packit Service a04d08
Packit Service a04d08
class TestGuestCustUtil(CiTestCase):
Packit Service a04d08
    def test_get_tools_config_not_installed(self):
Packit Service a04d08
        """
Packit Service a04d08
        This test is designed to verify the behavior if vmware-toolbox-cmd
Packit Service a04d08
        is not installed.
Packit Service a04d08
        """
Packit Service 751c4a
        with mock.patch.object(subp, 'which', return_value=None):
Packit Service a04d08
            self.assertEqual(
Packit Service a04d08
                get_tools_config('section', 'key', 'defaultVal'), 'defaultVal')
Packit Service a04d08
Packit Service a04d08
    def test_get_tools_config_internal_exception(self):
Packit Service a04d08
        """
Packit Service a04d08
        This test is designed to verify the behavior if internal exception
Packit Service a04d08
        is raised.
Packit Service a04d08
        """
Packit Service 751c4a
        with mock.patch.object(subp, 'which', return_value='/dummy/path'):
Packit Service 751c4a
            with mock.patch.object(subp, 'subp',
Packit Service a04d08
                                   return_value=('key=value', b''),
Packit Service 751c4a
                                   side_effect=subp.ProcessExecutionError(
Packit Service a04d08
                                       "subp failed", exit_code=99)):
Packit Service a04d08
                # verify return value is 'defaultVal', not 'value'.
Packit Service a04d08
                self.assertEqual(
Packit Service a04d08
                    get_tools_config('section', 'key', 'defaultVal'),
Packit Service a04d08
                    'defaultVal')
Packit Service a04d08
Packit Service a04d08
    def test_get_tools_config_normal(self):
Packit Service a04d08
        """
Packit Service a04d08
        This test is designed to verify the value could be parsed from
Packit Service a04d08
        key = value of the given [section]
Packit Service a04d08
        """
Packit Service 751c4a
        with mock.patch.object(subp, 'which', return_value='/dummy/path'):
Packit Service a04d08
            # value is not blank
Packit Service 751c4a
            with mock.patch.object(subp, 'subp',
Packit Service a04d08
                                   return_value=('key =   value  ', b'')):
Packit Service a04d08
                self.assertEqual(
Packit Service a04d08
                    get_tools_config('section', 'key', 'defaultVal'),
Packit Service a04d08
                    'value')
Packit Service a04d08
            # value is blank
Packit Service 751c4a
            with mock.patch.object(subp, 'subp',
Packit Service a04d08
                                   return_value=('key = ', b'')):
Packit Service a04d08
                self.assertEqual(
Packit Service a04d08
                    get_tools_config('section', 'key', 'defaultVal'),
Packit Service a04d08
                    '')
Packit Service a04d08
            # value contains =
Packit Service 751c4a
            with mock.patch.object(subp, 'subp',
Packit Service a04d08
                                   return_value=('key=Bar=Wark', b'')):
Packit Service a04d08
                self.assertEqual(
Packit Service a04d08
                    get_tools_config('section', 'key', 'defaultVal'),
Packit Service a04d08
                    'Bar=Wark')
Packit Service a04d08
Packit Service a04d08
            # value contains specific characters
Packit Service 751c4a
            with mock.patch.object(subp, 'subp',
Packit Service a04d08
                                   return_value=('[a] b.c_d=e-f', b'')):
Packit Service a04d08
                self.assertEqual(
Packit Service a04d08
                    get_tools_config('section', 'key', 'defaultVal'),
Packit Service a04d08
                    'e-f')
Packit Service a04d08
Packit Service 751c4a
    def test_set_gc_status(self):
Packit Service 751c4a
        """
Packit Service 751c4a
        This test is designed to verify the behavior of set_gc_status
Packit Service 751c4a
        """
Packit Service 751c4a
        # config is None, return None
Packit Service 751c4a
        self.assertEqual(set_gc_status(None, 'Successful'), None)
Packit Service 751c4a
Packit Service 751c4a
        # post gc status is NO, return None
Packit Service 751c4a
        cf = ConfigFile("tests/data/vmware/cust-dhcp-2nic.cfg")
Packit Service 751c4a
        conf = Config(cf)
Packit Service 751c4a
        self.assertEqual(set_gc_status(conf, 'Successful'), None)
Packit Service 751c4a
Packit Service 751c4a
        # post gc status is YES, subp is called to execute command
Packit Service 751c4a
        cf._insertKey("MISC|POST-GC-STATUS", "YES")
Packit Service 751c4a
        conf = Config(cf)
Packit Service 751c4a
        with mock.patch.object(subp, 'subp',
Packit Service 751c4a
                               return_value=('ok', b'')) as mockobj:
Packit Service 751c4a
            self.assertEqual(
Packit Service 751c4a
                set_gc_status(conf, 'Successful'), ('ok', b''))
Packit Service 751c4a
            mockobj.assert_called_once_with(
Packit Service 751c4a
                ['vmware-rpctool', 'info-set guestinfo.gc.status Successful'],
Packit Service 751c4a
                rcs=[0])
Packit Service 751c4a
Packit Service a04d08
# vi: ts=4 expandtab