mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 11:46:35 +00:00
- Move generate_value/generate_secure_alphanumeric out of InventoryManager into new ValueGenerator - Wire InventoryManager to use self.value_generator for all secret generation - Tighten schema include logic for shared databases: require enabled=true and shared=true - Update unit tests to patch ValueGenerator.generate_value instead of InventoryManager.generate_value - Add end-to-end integration test for InventoryManager using real files and a fake VaultHandler - Remove redundant legacy unit test file and add dedicated ValueGenerator unit tests https://chatgpt.com/share/6962d2e6-7fdc-800f-ba83-9e150b19a5f0
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
import base64
|
|
import re
|
|
import unittest
|
|
|
|
from module_utils.manager.value_generator import ValueGenerator
|
|
|
|
|
|
class TestValueGenerator(unittest.TestCase):
|
|
def setUp(self):
|
|
self.vg = ValueGenerator()
|
|
|
|
def test_generate_secure_alphanumeric(self):
|
|
s = self.vg.generate_secure_alphanumeric(64)
|
|
self.assertEqual(len(s), 64)
|
|
self.assertTrue(re.fullmatch(r"[A-Za-z0-9]{64}", s))
|
|
|
|
def test_generate_value_random_hex(self):
|
|
v = self.vg.generate_value("random_hex")
|
|
self.assertTrue(re.fullmatch(r"[0-9a-f]{128}", v))
|
|
|
|
def test_generate_value_random_hex_32(self):
|
|
v = self.vg.generate_value("random_hex_32")
|
|
self.assertTrue(re.fullmatch(r"[0-9a-f]{64}", v))
|
|
|
|
def test_generate_value_random_hex_16(self):
|
|
v = self.vg.generate_value("random_hex_16")
|
|
self.assertTrue(re.fullmatch(r"[0-9a-f]{32}", v))
|
|
|
|
def test_generate_value_sha256(self):
|
|
v = self.vg.generate_value("sha256")
|
|
self.assertTrue(re.fullmatch(r"[0-9a-f]{64}", v))
|
|
|
|
def test_generate_value_sha1(self):
|
|
v = self.vg.generate_value("sha1")
|
|
self.assertTrue(re.fullmatch(r"[0-9a-f]{40}", v))
|
|
|
|
def test_generate_value_base64_prefixed_32(self):
|
|
v = self.vg.generate_value("base64_prefixed_32")
|
|
self.assertTrue(v.startswith("base64:"))
|
|
raw = v.split("base64:", 1)[1].encode()
|
|
decoded = base64.b64decode(raw)
|
|
self.assertEqual(len(decoded), 32)
|
|
|
|
def test_generate_value_alphanumeric(self):
|
|
v = self.vg.generate_value("alphanumeric")
|
|
self.assertEqual(len(v), 64)
|
|
self.assertTrue(re.fullmatch(r"[A-Za-z0-9]{64}", v))
|
|
|
|
def test_generate_value_bcrypt(self):
|
|
v = self.vg.generate_value("bcrypt")
|
|
# your implementation replaces '$' chars
|
|
self.assertNotIn("$", v)
|
|
self.assertGreater(len(v), 20)
|
|
|
|
def test_generate_value_unknown(self):
|
|
v = self.vg.generate_value("does_not_exist")
|
|
self.assertEqual(v, "undefined")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|