summaryrefslogtreecommitdiff
path: root/tests/unittests/test_util.py
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2015-01-26 17:05:21 -0500
committerBarry Warsaw <barry@python.org>2015-01-26 17:05:21 -0500
commitfe99f7d6d87e88320933957b2933288c6eb2986d (patch)
tree82aff0c8aecaf6e87cfb77aea04d944965bc25f5 /tests/unittests/test_util.py
parentfabff4aec884467729fc372bb67f240752c15511 (diff)
parent78915c97c18d678db10e0fde0d9306823c5f4610 (diff)
downloadvyos-cloud-init-fe99f7d6d87e88320933957b2933288c6eb2986d.tar.gz
vyos-cloud-init-fe99f7d6d87e88320933957b2933288c6eb2986d.zip
Trunk merged and ported.
Diffstat (limited to 'tests/unittests/test_util.py')
-rw-r--r--tests/unittests/test_util.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/unittests/test_util.py b/tests/unittests/test_util.py
index f537d332..7a224230 100644
--- a/tests/unittests/test_util.py
+++ b/tests/unittests/test_util.py
@@ -1,3 +1,5 @@
+from __future__ import print_function
+
import os
import stat
import yaml
@@ -319,4 +321,61 @@ class TestMountinfoParsing(helpers.ResourceUsingTestCase):
expected = ('none', 'tmpfs', '/run/lock')
self.assertEqual(expected, util.parse_mount_info('/run/lock', lines))
+
+class TestReadDMIData(helpers.FilesystemMockingTestCase):
+
+ def _patchIn(self, root):
+ self.patchOS(root)
+ self.patchUtils(root)
+
+ def _write_key(self, key, content):
+ """Mocks the sys path found on Linux systems."""
+ new_root = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, new_root)
+ self._patchIn(new_root)
+ util.ensure_dir(os.path.join('sys', 'class', 'dmi', 'id'))
+
+ dmi_key = "/sys/class/dmi/id/{}".format(key)
+ util.write_file(dmi_key, content)
+
+ def _no_syspath(self, key, content):
+ """
+ In order to test a missing sys path and call outs to dmidecode, this
+ function fakes the results of dmidecode to test the results.
+ """
+ new_root = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, new_root)
+ self._patchIn(new_root)
+ self.real_which = util.which
+ self.real_subp = util.subp
+
+ def _which(key):
+ return True
+ util.which = _which
+
+ def _cdd(_key, error=None):
+ return (content, error)
+ util.subp = _cdd
+
+ def test_key(self):
+ key_content = "TEST-KEY-DATA"
+ self._write_key("key", key_content)
+ self.assertEquals(key_content, util.read_dmi_data("key"))
+
+ def test_key_mismatch(self):
+ self._write_key("test", "ABC")
+ self.assertNotEqual("123", util.read_dmi_data("test"))
+
+ def test_no_key(self):
+ self._no_syspath(None, None)
+ self.assertFalse(util.read_dmi_data("key"))
+
+ def test_callout_dmidecode(self):
+ """test to make sure that dmidecode is used when no syspath"""
+ self._no_syspath("key", "stuff")
+ self.assertEquals("stuff", util.read_dmi_data("key"))
+ self._no_syspath("key", None)
+ self.assertFalse(None, util.read_dmi_data("key"))
+
+
# vi: ts=4 expandtab