summaryrefslogtreecommitdiff
path: root/tests/unittests/config/test_cc_disk_setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unittests/config/test_cc_disk_setup.py')
-rw-r--r--tests/unittests/config/test_cc_disk_setup.py45
1 files changed, 41 insertions, 4 deletions
diff --git a/tests/unittests/config/test_cc_disk_setup.py b/tests/unittests/config/test_cc_disk_setup.py
index 9c02a651..496ad8e1 100644
--- a/tests/unittests/config/test_cc_disk_setup.py
+++ b/tests/unittests/config/test_cc_disk_setup.py
@@ -1,6 +1,7 @@
# This file is part of cloud-init. See LICENSE file for license information.
import random
+import tempfile
import pytest
@@ -102,7 +103,7 @@ class TestGetMbrHddSize(TestCase):
class TestGetPartitionMbrLayout(TestCase):
def test_single_partition_using_boolean(self):
self.assertEqual(
- "0,", cc_disk_setup.get_partition_mbr_layout(1000, True)
+ ",,83", cc_disk_setup.get_partition_mbr_layout(1000, True)
)
def test_single_partition_using_list(self):
@@ -200,6 +201,23 @@ class TestUpdateFsSetupDevices(TestCase):
)
+class TestPurgeDisk(TestCase):
+ @mock.patch(
+ "cloudinit.config.cc_disk_setup.read_parttbl", return_value=None
+ )
+ def test_purge_disk_ptable(self, *args):
+ pseudo_device = tempfile.NamedTemporaryFile()
+
+ cc_disk_setup.purge_disk_ptable(pseudo_device.name)
+
+ with pseudo_device as f:
+ actual = f.read()
+
+ expected = b"\0" * (1024 * 1024)
+
+ self.assertEqual(expected, actual)
+
+
@mock.patch(
"cloudinit.config.cc_disk_setup.assert_and_settle_device",
return_value=None,
@@ -211,7 +229,6 @@ class TestUpdateFsSetupDevices(TestCase):
@mock.patch("cloudinit.config.cc_disk_setup.device_type", return_value=None)
@mock.patch("cloudinit.config.cc_disk_setup.subp.subp", return_value=("", ""))
class TestMkfsCommandHandling(CiTestCase):
-
with_logs = True
def test_with_cmd(self, subp, *args):
@@ -321,5 +338,25 @@ class TestDebugSchema:
with pytest.raises(SchemaValidationError, match=error_msg):
validate_cloudconfig_schema(config, schema, strict=True)
-
-# vi: ts=4 expandtab
+ @pytest.mark.parametrize(
+ "config",
+ (
+ (
+ {
+ "disk_setup": {
+ "/dev/disk/by-id/google-home": {
+ "table_type": "gpt",
+ "layout": [
+ [100, "933AC7E1-2EB4-4F13-B844-0E14E2AEF915"]
+ ],
+ }
+ }
+ }
+ ),
+ ),
+ )
+ @skipUnlessJsonSchema()
+ def test_valid_schema(self, config):
+ """Assert expected schema validation and no error messages."""
+ schema = get_schema()
+ validate_cloudconfig_schema(config, schema, strict=True)