]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
pytest:sddl: assert SDDLValueError values make sense
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Thu, 26 Oct 2023 03:31:40 +0000 (16:31 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 1 Nov 2023 20:10:46 +0000 (20:10 +0000)
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/tests/sddl.py

index 5317543010baea4181c1c61f71fc532a437f46c4..b594021013a80460fccbb250e5ed2267522821e0 100644 (file)
@@ -82,9 +82,20 @@ class SddlDecodeEncodeBase(TestCase):
             self.assertEqual(sddl, canonical)
 
     def _test_sddl_should_fail_with_args(self, s, canonical):
-        with self.assertRaises(security.SDDLValueError):
+        try:
             sd = security.descriptor.from_sddl(s, self.domain_sid)
-            print(sd.as_sddl(self.domain_sid))
+        except security.SDDLValueError as e:
+            generic_msg, specific_msg, position, sddl = e.args
+            self.assertEqual(generic_msg, "Unable to parse SDDL")
+            self.assertIsInstance(specific_msg, str)
+            self.assertIsInstance(position, int)
+            self.assertLessEqual(position, len(s))
+            self.assertGreaterEqual(position, 0)
+            self.assertEqual(s, sddl)
+
+            print(f"{s}\n{' ' * position}^\n {specific_msg}")
+        else:
+            self.fail(f"{sd.as_sddl(self.domain_sid)} should fail to parse")
 
     @classmethod
     def write_sddl_strings_for_fuzz_seeds(cls, dir):