From: Rob van der Linde Date: Wed, 13 Dec 2023 03:50:18 +0000 (+1300) Subject: selftest: make _get_attribute a method on base class X-Git-Tag: talloc-2.4.2~258 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a30657d42f4368027fe699e817228d35391244b5;p=thirdparty%2Fsamba.git selftest: make _get_attribute a method on base class Signed-off-by: Rob van der Linde Reviewed-by: Andrew Bartlett Reviewed-by: Douglas Bagnall --- diff --git a/python/samba/tests/samba_tool/user_virtualCryptSHA.py b/python/samba/tests/samba_tool/user_virtualCryptSHA.py index 2f5afa93d09..e58340436a2 100644 --- a/python/samba/tests/samba_tool/user_virtualCryptSHA.py +++ b/python/samba/tests/samba_tool/user_virtualCryptSHA.py @@ -19,7 +19,6 @@ import ldb import samba from samba.tests.samba_tool.base import SambaToolCmdTest -from samba.tests.samba_tool.user_virtualCryptSHA_base import _get_attribute from samba.credentials import Credentials from samba.samdb import SamDB from samba.auth import system_session @@ -262,10 +261,10 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): self.assertTrue("virtualCryptSHA256:" in out) self.assertTrue("virtualCryptSHA512:" in out) - sha256 = _get_attribute(out, "virtualCryptSHA256") + sha256 = self._get_attribute(out, "virtualCryptSHA256") self.assertTrue(sha256.startswith("{CRYPT}$5$rounds=10123$")) - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha512 = self._get_attribute(out, "virtualCryptSHA512") self.assertTrue(sha512.startswith("{CRYPT}$6$rounds=10456$")) # gpg decryption enabled. @@ -282,11 +281,11 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): self.assertTrue("virtualCryptSHA256:" in out) self.assertTrue("virtualCryptSHA512:" in out) - sha256 = _get_attribute(out, "virtualCryptSHA256") + sha256 = self._get_attribute(out, "virtualCryptSHA256") self.assertTrue(sha256.startswith("{CRYPT}$5$")) self.assertTrue("rounds" not in sha256) - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha512 = self._get_attribute(out, "virtualCryptSHA512") self.assertTrue(sha512.startswith("{CRYPT}$6$rounds=3125$")) # gpg decryption not enabled. @@ -304,12 +303,12 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256,virtualCryptSHA512") - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # gpg decryption not enabled. # both virtual attributes specified, rounds specified @@ -327,12 +326,12 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256,virtualCryptSHA512") - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # gpg decryption not enabled. # both virtual attributes specified, rounds specified @@ -353,13 +352,13 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256;rounds=2561," + "virtualCryptSHA512;rounds=5129") - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # Number of rounds should match that specified self.assertTrue(sha256.startswith("{CRYPT}$5$rounds=2561")) @@ -385,20 +384,20 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256;rounds=4000," + "virtualCryptSHA512;rounds=5000") - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # As the number of rounds did not match, should have returned the # first hash of the corresponding scheme out = self._get_password("virtualCryptSHA256," + "virtualCryptSHA512") - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # gpg decryption enabled. # both virtual attributes specified, no rounds option @@ -415,12 +414,12 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256,virtualCryptSHA512", True) - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # gpg decryption enabled. # both virtual attributes specified, rounds specified @@ -439,14 +438,14 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): # Should be calculating the hashes # so they should change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256;rounds=2561," + "virtualCryptSHA512;rounds=5129", True) - self.assertFalse(sha256 == _get_attribute(out, "virtualCryptSHA256")) - self.assertFalse(sha512 == _get_attribute(out, "virtualCryptSHA512")) + self.assertFalse(sha256 == self._get_attribute(out, "virtualCryptSHA256")) + self.assertFalse(sha512 == self._get_attribute(out, "virtualCryptSHA512")) # The returned hashes should specify the correct number of rounds self.assertTrue(sha256.startswith("{CRYPT}$5$rounds=2561")) @@ -472,14 +471,14 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256;rounds=2561," + "virtualCryptSHA512;rounds=5129", True) - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # The returned hashes should specify the correct number of rounds self.assertTrue(sha256.startswith("{CRYPT}$5$rounds=2561")) @@ -506,14 +505,14 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): # Should be calculating the hashes # so they should change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256;rounds=4000," + "virtualCryptSHA512;rounds=5000", True) - self.assertFalse(sha256 == _get_attribute(out, "virtualCryptSHA256")) - self.assertFalse(sha512 == _get_attribute(out, "virtualCryptSHA512")) + self.assertFalse(sha256 == self._get_attribute(out, "virtualCryptSHA256")) + self.assertFalse(sha512 == self._get_attribute(out, "virtualCryptSHA512")) # The calculated hashes should specify the correct number of rounds self.assertTrue(sha256.startswith("{CRYPT}$5$rounds=4000")) diff --git a/python/samba/tests/samba_tool/user_virtualCryptSHA_base.py b/python/samba/tests/samba_tool/user_virtualCryptSHA_base.py index ec59fd7b4ad..d5b72048d4a 100644 --- a/python/samba/tests/samba_tool/user_virtualCryptSHA_base.py +++ b/python/samba/tests/samba_tool/user_virtualCryptSHA_base.py @@ -28,19 +28,6 @@ import re USER_NAME = "CryptSHATestUser" HASH_OPTION = "password hash userPassword schemes" -# Get the value of an attribute from the output string -# Note: Does not correctly handle values spanning multiple lines, -# which is acceptable for it's usage in these tests. - - -def _get_attribute(out, name): - p = re.compile("^" + name + r":\s+(\S+)") - for line in out.split("\n"): - m = p.match(line) - if m: - return m.group(1) - return "" - class UserCmdCryptShaTestCase(SambaToolCmdTest): """ @@ -50,6 +37,14 @@ class UserCmdCryptShaTestCase(SambaToolCmdTest): users = [] samdb = None + def _get_attribute(self, out, name): + p = re.compile("^" + name + r":\s+(\S+)") + for line in out.split("\n"): + m = p.match(line) + if m: + return m.group(1) + return "" + def add_user(self, hashes=""): self.lp = samba.tests.env_loadparm() diff --git a/python/samba/tests/samba_tool/user_virtualCryptSHA_gpg.py b/python/samba/tests/samba_tool/user_virtualCryptSHA_gpg.py index 780eb619dd1..db49b11bdfc 100644 --- a/python/samba/tests/samba_tool/user_virtualCryptSHA_gpg.py +++ b/python/samba/tests/samba_tool/user_virtualCryptSHA_gpg.py @@ -16,7 +16,7 @@ # along with this program. If not, see . # -from samba.tests.samba_tool.user_virtualCryptSHA_base import UserCmdCryptShaTestCase, _get_attribute +from samba.tests.samba_tool.user_virtualCryptSHA_base import UserCmdCryptShaTestCase class UserCmdCryptShaTestCaseGPG(UserCmdCryptShaTestCase): @@ -137,10 +137,10 @@ class UserCmdCryptShaTestCaseGPG(UserCmdCryptShaTestCase): self.assertTrue("virtualCryptSHA256:" in out) self.assertTrue("virtualCryptSHA512:" in out) - sha256 = _get_attribute(out, "virtualCryptSHA256") + sha256 = self._get_attribute(out, "virtualCryptSHA256") self.assertTrue(sha256.startswith("{CRYPT}$5$rounds=10123$")) - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha512 = self._get_attribute(out, "virtualCryptSHA512") self.assertTrue(sha512.startswith("{CRYPT}$6$rounds=10456$")) # gpg decryption enabled. @@ -157,11 +157,11 @@ class UserCmdCryptShaTestCaseGPG(UserCmdCryptShaTestCase): self.assertTrue("virtualCryptSHA256:" in out) self.assertTrue("virtualCryptSHA512:" in out) - sha256 = _get_attribute(out, "virtualCryptSHA256") + sha256 = self._get_attribute(out, "virtualCryptSHA256") self.assertTrue(sha256.startswith("{CRYPT}$5$")) self.assertTrue("rounds" not in sha256) - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha512 = self._get_attribute(out, "virtualCryptSHA512") self.assertTrue(sha512.startswith("{CRYPT}$6$rounds=3125$")) # gpg decryption enabled. @@ -181,14 +181,14 @@ class UserCmdCryptShaTestCaseGPG(UserCmdCryptShaTestCase): # Should be calculating the hashes # so they should change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256;rounds=2561," + "virtualCryptSHA512;rounds=5129", True) - self.assertFalse(sha256 == _get_attribute(out, "virtualCryptSHA256")) - self.assertFalse(sha512 == _get_attribute(out, "virtualCryptSHA512")) + self.assertFalse(sha256 == self._get_attribute(out, "virtualCryptSHA256")) + self.assertFalse(sha512 == self._get_attribute(out, "virtualCryptSHA512")) # The returned hashes should specify the correct number of rounds self.assertTrue(sha256.startswith("{CRYPT}$5$rounds=2561")) @@ -214,14 +214,14 @@ class UserCmdCryptShaTestCaseGPG(UserCmdCryptShaTestCase): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256;rounds=2561," + "virtualCryptSHA512;rounds=5129", True) - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # The returned hashes should specify the correct number of rounds self.assertTrue(sha256.startswith("{CRYPT}$5$rounds=2561")) @@ -248,14 +248,14 @@ class UserCmdCryptShaTestCaseGPG(UserCmdCryptShaTestCase): # Should be calculating the hashes # so they should change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256;rounds=4000," + "virtualCryptSHA512;rounds=5000", True) - self.assertFalse(sha256 == _get_attribute(out, "virtualCryptSHA256")) - self.assertFalse(sha512 == _get_attribute(out, "virtualCryptSHA512")) + self.assertFalse(sha256 == self._get_attribute(out, "virtualCryptSHA256")) + self.assertFalse(sha512 == self._get_attribute(out, "virtualCryptSHA512")) # The calculated hashes should specify the correct number of rounds self.assertTrue(sha256.startswith("{CRYPT}$5$rounds=4000")) diff --git a/python/samba/tests/samba_tool/user_virtualCryptSHA_userPassword.py b/python/samba/tests/samba_tool/user_virtualCryptSHA_userPassword.py index 13c9bb2d086..317b008dfab 100644 --- a/python/samba/tests/samba_tool/user_virtualCryptSHA_userPassword.py +++ b/python/samba/tests/samba_tool/user_virtualCryptSHA_userPassword.py @@ -16,7 +16,7 @@ # along with this program. If not, see . # -from samba.tests.samba_tool.user_virtualCryptSHA_base import UserCmdCryptShaTestCase, _get_attribute +from samba.tests.samba_tool.user_virtualCryptSHA_base import UserCmdCryptShaTestCase class UserCmdCryptShaTestCaseUserPassword(UserCmdCryptShaTestCase): @@ -89,12 +89,12 @@ class UserCmdCryptShaTestCaseUserPassword(UserCmdCryptShaTestCase): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256,virtualCryptSHA512") - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # gpg decryption not enabled. # both virtual attributes specified, rounds specified @@ -112,12 +112,12 @@ class UserCmdCryptShaTestCaseUserPassword(UserCmdCryptShaTestCase): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256,virtualCryptSHA512") - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # gpg decryption not enabled. # both virtual attributes specified, rounds specified @@ -138,13 +138,13 @@ class UserCmdCryptShaTestCaseUserPassword(UserCmdCryptShaTestCase): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256;rounds=2561," + "virtualCryptSHA512;rounds=5129") - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # Number of rounds should match that specified self.assertTrue(sha256.startswith("{CRYPT}$5$rounds=2561")) @@ -170,17 +170,17 @@ class UserCmdCryptShaTestCaseUserPassword(UserCmdCryptShaTestCase): # Should be using the pre computed hash in supplementalCredentials # so it should not change between calls. - sha256 = _get_attribute(out, "virtualCryptSHA256") - sha512 = _get_attribute(out, "virtualCryptSHA512") + sha256 = self._get_attribute(out, "virtualCryptSHA256") + sha512 = self._get_attribute(out, "virtualCryptSHA512") out = self._get_password("virtualCryptSHA256;rounds=4000," + "virtualCryptSHA512;rounds=5000") - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512")) # As the number of rounds did not match, should have returned the # first hash of the corresponding scheme out = self._get_password("virtualCryptSHA256," + "virtualCryptSHA512") - self.assertEqual(sha256, _get_attribute(out, "virtualCryptSHA256")) - self.assertEqual(sha512, _get_attribute(out, "virtualCryptSHA512")) + self.assertEqual(sha256, self._get_attribute(out, "virtualCryptSHA256")) + self.assertEqual(sha512, self._get_attribute(out, "virtualCryptSHA512"))