Kaynağa Gözat

Add unit tests for `osmorphing.osdetect.centos.py`
module

Signed-off-by: Mihaela Balutoiu <mbalutoiu@cloudbasesolutions.com>

Mihaela Balutoiu 2 yıl önce
ebeveyn
işleme
6136594874

+ 76 - 0
coriolis/tests/osmorphing/osdetect/test_centos.py

@@ -0,0 +1,76 @@
+# Copyright 2024 Cloudbase Solutions Srl
+# All Rights Reserved.
+
+import logging
+from unittest import mock
+
+from coriolis.osmorphing.osdetect import base
+from coriolis.osmorphing.osdetect import centos
+from coriolis.tests import test_base
+
+
+class CentOSOSDetectToolsTestCase(test_base.CoriolisBaseTestCase):
+    """Test suite for the CentOSOSDetectTools class."""
+
+    def setUp(self):
+        super(CentOSOSDetectToolsTestCase, self).setUp()
+        self.centos_os_detect_tools = centos.CentOSOSDetectTools(
+            mock.sentinel.conn, mock.sentinel.os_root_dir,
+            mock.sentinel.operation_timeout)
+
+    @mock.patch.object(base.BaseLinuxOSDetectTools, '_test_path')
+    @mock.patch.object(base.BaseLinuxOSDetectTools, '_read_file')
+    def test_detect_os(self, mock_read_file, mock_test_path):
+        mock_test_path.return_value = True
+        mock_read_file.return_value = b"CentOS Linux release 7.9 (Core)"
+
+        expected_info = {
+            "os_type": centos.constants.OS_TYPE_LINUX,
+            "distribution_name": centos.CENTOS_DISTRO_IDENTIFIER,
+            "release_version": '7.9',
+            "friendly_release_name": "%s Version %s" % (
+                centos.CENTOS_DISTRO_IDENTIFIER, '7.9')
+        }
+
+        result = self.centos_os_detect_tools.detect_os()
+
+        mock_test_path.assert_called_once_with("etc/redhat-release")
+        mock_read_file.assert_called_once_with("etc/redhat-release")
+
+        self.assertEqual(result, expected_info)
+
+    @mock.patch.object(base.BaseLinuxOSDetectTools, '_test_path')
+    @mock.patch.object(base.BaseLinuxOSDetectTools, '_read_file')
+    def test_detect_os_centos_stream(self, mock_read_file, mock_test_path):
+        mock_test_path.return_value = True
+        mock_read_file.return_value = b"CentOS Stream release 8.3"
+
+        expected_info = {
+            "os_type": centos.constants.OS_TYPE_LINUX,
+            "distribution_name": centos.CENTOS_STREAM_DISTRO_IDENTIFIER,
+            "release_version": '8.3',
+            "friendly_release_name": "%s Version %s" % (
+                centos.CENTOS_STREAM_DISTRO_IDENTIFIER, '8.3')
+        }
+
+        result = self.centos_os_detect_tools.detect_os()
+
+        mock_test_path.assert_called_once_with("etc/redhat-release")
+        mock_read_file.assert_called_once_with("etc/redhat-release")
+
+        self.assertEqual(result, expected_info)
+
+    @mock.patch.object(base.BaseLinuxOSDetectTools, '_test_path')
+    @mock.patch.object(base.BaseLinuxOSDetectTools, '_read_file')
+    def test_detect_os_not_centos(self, mock_read_file, mock_test_path):
+        mock_test_path.return_value = True
+        mock_read_file.return_value = b"dummy release 8.3"
+
+        with self.assertLogs('coriolis.osmorphing.osdetect.centos',
+                             level=logging.DEBUG):
+            result = self.centos_os_detect_tools.detect_os()
+
+            self.assertEqual(result, {})
+
+        mock_test_path.assert_called_once_with("etc/redhat-release")
+        mock_read_file.assert_called_once_with("etc/redhat-release")