From: Noel Power Date: Tue, 20 Nov 2018 14:41:20 +0000 (+0000) Subject: s4/dsdb/tests/python: PY3 port for samba4.ldap.rodc_rwdc.python X-Git-Tag: tdb-1.3.17~427 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b09cfe083940cdcd5fbd6a93693289a8d32bb29;p=thirdparty%2Fsamba.git s4/dsdb/tests/python: PY3 port for samba4.ldap.rodc_rwdc.python * 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 Reviewed-by: Andrew Bartlett --- diff --git a/source4/dsdb/tests/python/rodc_rwdc.py b/source4/dsdb/tests/python/rodc_rwdc.py index 7a2e3b4e6fa..3596c7d750a 100644 --- a/source4/dsdb/tests/python/rodc_rwdc.py +++ b/source4/dsdb/tests/python/rodc_rwdc.py @@ -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,