tests/samba-tool user_wdigest: Fix flapping test
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Tue, 10 May 2022 00:49:50 +0000 (12:49 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 10 May 2022 23:05:31 +0000 (23:05 +0000)
The randomly-generated password for the user account may be too weak,
causing account creation to fail. This leads to further problems, as the
result of the command is not checked, and connecting over LDAP means
transactions cannot be used, leading to a half-created account and
failing tests.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/tests/samba_tool/user_wdigest.py

index f00da61192e4bad523074dd5b87515cd5690c0d8..dd728e1f6bed9bac4cbe92b12828f031ca241995 100644 (file)
@@ -21,16 +21,9 @@ import os
 import samba
 from samba.tests.samba_tool.base import SambaToolCmdTest
 from hashlib import md5
-import random
-import string
 
 
 USER_NAME = "WdigestTestUser"
-# Create a random 32 character password, containing only letters and
-# digits to avoid issues when used on the command line.
-USER_PASS = ''.join(random.choice(string.ascii_uppercase +
-                                  string.ascii_lowercase +
-                                  string.digits) for _ in range(32))
 
 # Calculate the MD5 password digest from the supplied user, realm and password
 #
@@ -67,10 +60,11 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
             expression="ncName=%s" % self.samdb.get_default_basedn(),
             attrs=["nETBIOSName"])
         self.netbios_domain = str(res[0]["nETBIOSName"][0])
+        self.password = self.random_password()
         self.runsubcmd("user",
                        "create",
                        USER_NAME,
-                       USER_PASS,
+                       self.password,
                        "-H",
                        "ldap://%s" % os.environ["DC_SERVER"],
                        "-U%s%%%s" % (
@@ -123,7 +117,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest01"
         expected = calc_digest(USER_NAME,
                                self.netbios_domain,
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash02 MD5(LOWER(sAMAccountName),
@@ -134,7 +128,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest02"
         expected = calc_digest(USER_NAME.lower(),
                                self.netbios_domain.lower(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash03 MD5(UPPER(sAMAccountName),
@@ -145,7 +139,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest03"
         expected = calc_digest(USER_NAME.upper(),
                                self.netbios_domain.upper(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash04 MD5(sAMAccountName,
@@ -156,7 +150,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest04"
         expected = calc_digest(USER_NAME,
                                self.netbios_domain.upper(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash05 MD5(sAMAccountName,
@@ -167,7 +161,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest05"
         expected = calc_digest(USER_NAME,
                                self.netbios_domain.lower(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash06 MD5(UPPER(sAMAccountName),
@@ -178,7 +172,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest06"
         expected = calc_digest(USER_NAME.upper(),
                                self.netbios_domain.lower(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash07 MD5(LOWER(sAMAccountName),
@@ -189,7 +183,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest07"
         expected = calc_digest(USER_NAME.lower(),
                                self.netbios_domain.upper(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash08 MD5(sAMAccountName,
@@ -204,7 +198,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest08"
         expected = calc_digest(USER_NAME,
                                self.dns_domain,
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash09 MD5(LOWER(sAMAccountName),
@@ -215,7 +209,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest09"
         expected = calc_digest(USER_NAME.lower(),
                                self.dns_domain.lower(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash10 MD5(UPPER(sAMAccountName),
@@ -226,7 +220,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest10"
         expected = calc_digest(USER_NAME.upper(),
                                self.dns_domain.upper(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash11 MD5(sAMAccountName,
@@ -237,7 +231,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest11"
         expected = calc_digest(USER_NAME,
                                self.dns_domain.upper(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash12 MD5(sAMAccountName,
@@ -248,7 +242,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest12"
         expected = calc_digest(USER_NAME,
                                self.dns_domain.lower(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash13 MD5(UPPER(sAMAccountName),
@@ -259,7 +253,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest13"
         expected = calc_digest(USER_NAME.upper(),
                                self.dns_domain.lower(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash14 MD5(LOWER(sAMAccountName),
@@ -271,7 +265,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest14"
         expected = calc_digest(USER_NAME.lower(),
                                self.dns_domain.upper(),
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash15 MD5(userPrincipalName,
@@ -282,7 +276,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s@%s" % (USER_NAME, self.dns_domain)
         expected = calc_digest(name,
                                "",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash16 MD5(LOWER(userPrincipalName),
@@ -293,7 +287,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s@%s" % (USER_NAME.lower(), self.dns_domain.lower())
         expected = calc_digest(name,
                                "",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash17 MD5(UPPER(userPrincipalName),
@@ -304,7 +298,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s@%s" % (USER_NAME.upper(), self.dns_domain.upper())
         expected = calc_digest(name,
                                "",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash18 MD5(NETBIOSDomainName\sAMAccountName,
@@ -315,7 +309,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s\\%s" % (self.netbios_domain, USER_NAME)
         expected = calc_digest(name,
                                "",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash19 MD5(LOWER(NETBIOSDomainName\sAMAccountName),
@@ -326,7 +320,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s\\%s" % (self.netbios_domain, USER_NAME)
         expected = calc_digest(name.lower(),
                                "",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash20 MD5(UPPER(NETBIOSDomainName\sAMAccountName),
@@ -337,7 +331,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s\\%s" % (self.netbios_domain, USER_NAME)
         expected = calc_digest(name.upper(),
                                "",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash21 MD5(sAMAccountName,
@@ -348,7 +342,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest21"
         expected = calc_digest(USER_NAME,
                                "Digest",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash22 MD5(LOWER(sAMAccountName),
@@ -359,7 +353,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest22"
         expected = calc_digest(USER_NAME.lower(),
                                "Digest",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash23 MD5(UPPER(sAMAccountName),
@@ -370,7 +364,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         attribute = "virtualWDigest23"
         expected = calc_digest(USER_NAME.upper(),
                                "Digest",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash24  MD5(userPrincipalName),
@@ -382,7 +376,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s@%s" % (USER_NAME, self.dns_domain)
         expected = calc_digest(name,
                                "Digest",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash25 MD5(LOWER(userPrincipalName),
@@ -394,7 +388,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s@%s" % (USER_NAME, self.dns_domain.lower())
         expected = calc_digest(name.lower(),
                                "Digest",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash26 MD5(UPPER(userPrincipalName),
@@ -406,7 +400,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s@%s" % (USER_NAME, self.dns_domain.lower())
         expected = calc_digest(name.upper(),
                                "Digest",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
     # Hash27 MD5(NETBIOSDomainName\sAMAccountName,
     #            "Digest",
@@ -418,7 +412,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s\\%s" % (self.netbios_domain, USER_NAME)
         expected = calc_digest(name,
                                "Digest",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash28 MD5(LOWER(NETBIOSDomainName\sAMAccountName),
@@ -430,7 +424,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s\\%s" % (self.netbios_domain.lower(), USER_NAME.lower())
         expected = calc_digest(name,
                                "Digest",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     # Hash29 MD5(UPPER(NETBIOSDomainName\sAMAccountName),
@@ -442,7 +436,7 @@ class UserCmdWdigestTestCase(SambaToolCmdTest):
         name = "%s\\%s" % (self.netbios_domain.upper(), USER_NAME.upper())
         expected = calc_digest(name,
                                "Digest",
-                               USER_PASS)
+                               self.password)
         self._testWDigest(attribute, expected)
 
     def test_Wdigest30(self):