31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
import hashlib
|
|
import unittest
|
|
from unit_transform import transform
|
|
|
|
|
|
def sha(value):return hashlib.sha256(value).hexdigest()
|
|
|
|
|
|
class TransformTests(unittest.TestCase):
|
|
def test_exact_flag_preserves_every_other_byte(self):
|
|
raw=b'[Service]\nExecStart=/usr/local/bin/k3s server --write-kubeconfig-mode=644 --other=kept\n'
|
|
expected=raw.replace(b'mode=644',b'mode=600')
|
|
self.assertEqual(transform(raw,before=sha(raw),after=sha(expected)),expected)
|
|
|
|
def test_changed_preimage_refuses(self):
|
|
with self.assertRaisesRegex(ValueError,'preimage'):transform(b'unknown')
|
|
|
|
def test_multiple_flags_refuse(self):
|
|
raw=b'--write-kubeconfig-mode=644 --write-kubeconfig-mode=644'
|
|
with self.assertRaisesRegex(ValueError,'not_exact'):transform(raw,before=sha(raw),after=sha(raw))
|
|
|
|
def test_missing_flag_refuses(self):
|
|
raw=b'--write-kubeconfig-mode=600'
|
|
with self.assertRaisesRegex(ValueError,'not_exact'):transform(raw,before=sha(raw),after=sha(raw))
|
|
|
|
def test_wrong_candidate_refuses(self):
|
|
raw=b'--write-kubeconfig-mode=644'
|
|
with self.assertRaisesRegex(ValueError,'candidate_mismatch'):transform(raw,before=sha(raw),after=sha(raw))
|
|
|
|
|
|
if __name__=='__main__':unittest.main()
|