]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4/dsdb/tests/python: PY3 port for samba4.ldap.rodc_rwdc.python
authorNoel Power <noel.power@suse.com>
Tue, 20 Nov 2018 14:41:20 +0000 (14:41 +0000)
committerNoel Power <npower@samba.org>
Mon, 10 Dec 2018 09:38:23 +0000 (10:38 +0100)
* Make sure samba-tool is called with correct PYTHON version
* Convert ldb.bytes results to string for comparison with expected
  results

Signed-off-by: Noel Power <noel.power@suse.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/dsdb/tests/python/rodc_rwdc.py

index 7a2e3b4e6fa13054bc79dd3dcd1d0d5c2db3e680..3596c7d750acff983f32bdff12c470816fa2f5e4 100644 (file)
@@ -27,9 +27,14 @@ from samba.credentials import Credentials, DONT_USE_KERBEROS, MUST_USE_KERBEROS
 from samba import gensec, dsdb
 from ldb import SCOPE_BASE, LdbError, ERR_INVALID_CREDENTIALS
 from samba.dcerpc import security, samr
+import os
 
 import password_lockout_base
 
+def adjust_cmd_for_py_version(parts):
+    if os.getenv("PYTHON", None):
+        parts.insert(0, os.environ["PYTHON"])
+    return parts
 
 def passwd_encode(pw):
     return base64.b64encode(('"%s"' % pw).encode('utf-16-le')).decode('utf8')
@@ -73,10 +78,10 @@ def set_auto_replication(dc, allow):
 
     for opt in ['DISABLE_INBOUND_REPL',
                 'DISABLE_OUTBOUND_REPL']:
-        cmd = ['bin/samba-tool',
+        cmd = adjust_cmd_for_py_version(['bin/samba-tool',
                'drs', 'options',
                credstring, dc,
-               "--dsa-option=%s%s" % (on_or_off, opt)]
+               "--dsa-option=%s%s" % (on_or_off, opt)])
 
         p = subprocess.Popen(cmd,
                              stderr=subprocess.PIPE,
@@ -94,11 +99,11 @@ def preload_rodc_user(user_dn):
                                CREDS.get_password())
 
     set_auto_replication(RWDC, True)
-    cmd = ['bin/samba-tool',
+    cmd = adjust_cmd_for_py_version(['bin/samba-tool',
            'rodc', 'preload',
            user_dn,
            credstring,
-           '--server', RWDC, ]
+           '--server', RWDC, ])
 
     print(' '.join(cmd))
     subprocess.check_call(cmd)
@@ -154,11 +159,11 @@ class RodcRwdcCachedTests(password_lockout_base.BasePasswordTestCase):
         # XXX feels like a horrendous way to do it.
         credstring = '-U%s%%%s' % (CREDS.get_username(),
                                    CREDS.get_password())
-        cmd = ['bin/samba-tool',
+        cmd = adjust_cmd_for_py_version(['bin/samba-tool',
                'drs', 'replicate',
                RODC, RWDC, base,
                credstring,
-               '--sync-forced']
+               '--sync-forced'])
 
         p = subprocess.Popen(cmd,
                              stderr=subprocess.PIPE,
@@ -694,11 +699,11 @@ class RodcRwdcTests(password_lockout_base.BasePasswordTestCase):
         # XXX feels like a horrendous way to do it.
         credstring = '-U%s%%%s' % (CREDS.get_username(),
                                    CREDS.get_password())
-        cmd = ['bin/samba-tool',
+        cmd = adjust_cmd_for_py_version(['bin/samba-tool',
                'drs', 'replicate',
                RODC, RWDC, base,
                credstring,
-               '--sync-forced']
+               '--sync-forced'])
 
         p = subprocess.Popen(cmd,
                              stderr=subprocess.PIPE,
@@ -909,7 +914,7 @@ class RodcRwdcTests(password_lockout_base.BasePasswordTestCase):
                 res = self.rodc_db.search(dn,
                                           scope=ldb.SCOPE_SUBTREE,
                                           attrs=[attr])
-                results = [x[attr][0] for x in res]
+                results = [str(x[attr][0]) for x in res]
                 self.assertEqual(results, [value])
             except ldb.LdbError as e:
                 self.assertNotEqual(e.args[0], ldb.ERR_NO_SUCH_OBJECT,
@@ -954,7 +959,7 @@ class RodcRwdcTests(password_lockout_base.BasePasswordTestCase):
                 res = self.rodc_db.search(dn,
                                           scope=ldb.SCOPE_SUBTREE,
                                           attrs=[attr])
-                results = [x[attr][0] for x in res]
+                results = [str(x[attr][0]) for x in res]
                 self.assertEqual(results, [value])
             except ldb.LdbError as e:
                 self.assertNotEqual(e.args[0], ldb.ERR_NO_SUCH_OBJECT,