]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
selftest: make _get_attribute a method on base class
authorRob van der Linde <rob@catalyst.net.nz>
Wed, 13 Dec 2023 03:50:18 +0000 (16:50 +1300)
committerDouglas Bagnall <dbagnall@samba.org>
Thu, 21 Dec 2023 02:05:38 +0000 (02:05 +0000)
Signed-off-by: Rob van der Linde <rob@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
python/samba/tests/samba_tool/user_virtualCryptSHA.py
python/samba/tests/samba_tool/user_virtualCryptSHA_base.py
python/samba/tests/samba_tool/user_virtualCryptSHA_gpg.py
python/samba/tests/samba_tool/user_virtualCryptSHA_userPassword.py

index 2f5afa93d0921206a569cb6ed58482421f5ad338..e58340436a26451472e3a53c763695ff035ccc1f 100644 (file)
@@ -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"))
index ec59fd7b4ad5d8f494f16ac673edd1a86bb883d4..d5b72048d4abd37abdf3aea907f138dd6a65eda1 100644 (file)
@@ -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()
 
index 780eb619dd1774bbe4d67b8357b7ea91f1684ecf..db49b11bdfcb4da723b1e663d9a4e0e14c9fe87f 100644 (file)
@@ -16,7 +16,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
-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"))
index 13c9bb2d086c77fb938cb783b251555f03bc89ff..317b008dfab2012bf67b0fa8cdc5d15ededae2eb 100644 (file)
@@ -16,7 +16,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
-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"))