This commit is contained in:
its.kstyagi@gmail.com
2026-09-04 20:56:18 +00:00
commit 1022f24c34
43 changed files with 6160 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
from __future__ import annotations
import unittest
from uvm.errors import ValidationError
from uvm.validation import parse_cpu, parse_password, parse_ram, parse_username
class ValidationTests(unittest.TestCase):
def test_parse_ram_uses_mib_by_default(self) -> None:
self.assertEqual(parse_ram("512"), 512)
self.assertEqual(parse_ram("1G"), 1024)
self.assertEqual(parse_ram("512MiB"), 512)
self.assertEqual(parse_ram("134217728B"), 128)
def test_parse_ram_rejects_small_and_invalid_values(self) -> None:
for value in ("127M", "nonsense", "-1G", "1T"):
with self.subTest(value=value):
with self.assertRaises(ValidationError):
parse_ram(value)
def test_parse_cpu_requires_a_positive_finite_value(self) -> None:
self.assertEqual(parse_cpu("0.5"), 0.5)
for value in ("0", "-1", "nan", "inf", "cpu"):
with self.subTest(value=value):
with self.assertRaises(ValidationError):
parse_cpu(value)
def test_guest_username_is_validated(self) -> None:
self.assertEqual(parse_username("root"), "root")
self.assertEqual(parse_username("app-user"), "app-user")
for value in ("", "Root", "9user", "user name", "a" * 33):
with self.subTest(value=value):
with self.assertRaises(ValidationError):
parse_username(value)
def test_guest_password_rejects_empty_control_or_oversized_values(self) -> None:
self.assertEqual(
parse_password("correct horse battery staple"),
"correct horse battery staple",
)
for value in ("", "line\nbreak", "tab\tvalue", "a" * 129):
with self.subTest(value=value):
with self.assertRaises(ValidationError):
parse_password(value)