1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-26 01:49:31 +03:00

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 <noel.power@suse.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
Noel Power
2018-11-20 14:41:20 +00:00
committed by Noel Power
parent cc8a4eeb53
commit 2b09cfe083

View 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,