summaryrefslogtreecommitdiff
path: root/tests/unittests/test_vmware/test_guestcust_util.py
diff options
context:
space:
mode:
authorDaniel Watkins <oddbloke@ubuntu.com>2019-09-17 12:12:27 +0200
committergit-ubuntu importer <ubuntu-devel-discuss@lists.ubuntu.com>2019-09-17 13:05:09 +0000
commitfc15c1bf267c7a743bb2289503310033cae3ea35 (patch)
treef75e0d7244ca810bafba740d4e3f5ca8050afc5d /tests/unittests/test_vmware/test_guestcust_util.py
parenta382c5c439b64f21f1098f2275e332c94f0b6530 (diff)
downloadcloud-init-git-fc15c1bf267c7a743bb2289503310033cae3ea35.tar.gz
19.2-36-g059d049c-0ubuntu1 (patches unapplied)
Imported using git-ubuntu import.
Diffstat (limited to 'tests/unittests/test_vmware/test_guestcust_util.py')
-rw-r--r--tests/unittests/test_vmware/test_guestcust_util.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/unittests/test_vmware/test_guestcust_util.py b/tests/unittests/test_vmware/test_guestcust_util.py
new file mode 100644
index 00000000..b8fa9942
--- /dev/null
+++ b/tests/unittests/test_vmware/test_guestcust_util.py
@@ -0,0 +1,65 @@
+# Copyright (C) 2019 Canonical Ltd.
+# Copyright (C) 2019 VMware INC.
+#
+# Author: Xiaofeng Wang <xiaofengw@vmware.com>
+#
+# This file is part of cloud-init. See LICENSE file for license information.
+
+from cloudinit import util
+from cloudinit.sources.helpers.vmware.imc.guestcust_util import (
+ get_tools_config,
+)
+from cloudinit.tests.helpers import CiTestCase, mock
+
+
+class TestGuestCustUtil(CiTestCase):
+ def test_get_tools_config_not_installed(self):
+ """
+ This test is designed to verify the behavior if vmware-toolbox-cmd
+ is not installed.
+ """
+ with mock.patch.object(util, 'which', return_value=None):
+ self.assertEqual(
+ get_tools_config('section', 'key', 'defaultVal'), 'defaultVal')
+
+ def test_get_tools_config_internal_exception(self):
+ """
+ This test is designed to verify the behavior if internal exception
+ is raised.
+ """
+ with mock.patch.object(util, 'which', return_value='/dummy/path'):
+ with mock.patch.object(util, 'subp',
+ return_value=('key=value', b''),
+ side_effect=util.ProcessExecutionError(
+ "subp failed", exit_code=99)):
+ # verify return value is 'defaultVal', not 'value'.
+ self.assertEqual(
+ get_tools_config('section', 'key', 'defaultVal'),
+ 'defaultVal')
+
+ def test_get_tools_config_normal(self):
+ """
+ This test is designed to verify the value could be parsed from
+ key = value of the given [section]
+ """
+ with mock.patch.object(util, 'which', return_value='/dummy/path'):
+ # value is not blank
+ with mock.patch.object(util, 'subp',
+ return_value=('key = value ', b'')):
+ self.assertEqual(
+ get_tools_config('section', 'key', 'defaultVal'),
+ 'value')
+ # value is blank
+ with mock.patch.object(util, 'subp',
+ return_value=('key = ', b'')):
+ self.assertEqual(
+ get_tools_config('section', 'key', 'defaultVal'),
+ '')
+ # value contains =
+ with mock.patch.object(util, 'subp',
+ return_value=('key=Bar=Wark', b'')):
+ self.assertEqual(
+ get_tools_config('section', 'key', 'defaultVal'),
+ 'Bar=Wark')
+
+# vi: ts=4 expandtab