#49810 Issue 49588 - Add py3 support for tickets
Closed 3 years ago by spichugi. Opened 5 years ago by vashirov.
vashirov/389-ds-base fix-py3  into  master

@@ -42,11 +42,11 @@ 

      topology_st.standalone.plugins.enable(name=PLUGIN_ATTR_UNIQUENESS)

      try:

          topology_st.standalone.modify_s('cn=' + PLUGIN_ATTR_UNIQUENESS + ',cn=plugins,cn=config',

-                                         [(ldap.MOD_REPLACE, 'uniqueness-attribute-name', 'telephonenumber'),

-                                          (ldap.MOD_REPLACE, 'uniqueness-subtrees', DEFAULT_SUFFIX),

+                                         [(ldap.MOD_REPLACE, 'uniqueness-attribute-name', b'telephonenumber'),

+                                          (ldap.MOD_REPLACE, 'uniqueness-subtrees', ensure_bytes(DEFAULT_SUFFIX)),

                                           ])

      except ldap.LDAPError as e:

-         log.fatal('test_ticket47927: Failed to configure plugin for "telephonenumber": error ' + e.message['desc'])

+         log.fatal('test_ticket47927: Failed to configure plugin for "telephonenumber": error ' + e.args[0]['desc'])

          assert False

      topology_st.standalone.restart(timeout=120)

  
@@ -81,12 +81,12 @@ 

      '''

      Check that uniqueness is enforce on all SUFFIX

      '''

-     UNIQUE_VALUE = '1234'

+     UNIQUE_VALUE = b'1234'

      try:

          topology_st.standalone.modify_s(USER_1_DN,

                                          [(ldap.MOD_REPLACE, 'telephonenumber', UNIQUE_VALUE)])

      except ldap.LDAPError as e:

-         log.fatal('test_ticket47927_one: Failed to set the telephonenumber for %s: %s' % (USER_1_DN, e.message['desc']))

+         log.fatal('test_ticket47927_one: Failed to set the telephonenumber for %s: %s' % (USER_1_DN, e.args[0]['desc']))

          assert False

  

      # we expect to fail because user1 is in the scope of the plugin
@@ -97,7 +97,7 @@ 

          assert False

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_one: Failed (expected) to set the telephonenumber for %s: %s' % (

-         USER_2_DN, e.message['desc']))

+         USER_2_DN, e.args[0]['desc']))

          pass

  

      # we expect to fail because user1 is in the scope of the plugin
@@ -108,7 +108,7 @@ 

          assert False

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_one: Failed (expected) to set the telephonenumber for %s: %s' % (

-         USER_3_DN, e.message['desc']))

+         USER_3_DN, e.args[0]['desc']))

          pass

  

  
@@ -118,10 +118,10 @@ 

      '''

      try:

          topology_st.standalone.modify_s('cn=' + PLUGIN_ATTR_UNIQUENESS + ',cn=plugins,cn=config',

-                                         [(ldap.MOD_REPLACE, 'uniqueness-exclude-subtrees', EXCLUDED_CONTAINER_DN)])

+                                         [(ldap.MOD_REPLACE, 'uniqueness-exclude-subtrees', ensure_bytes(EXCLUDED_CONTAINER_DN))])

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_two: Failed to configure plugin for to exclude %s: error %s' % (

-         EXCLUDED_CONTAINER_DN, e.message['desc']))

+         EXCLUDED_CONTAINER_DN, e.args[0]['desc']))

          assert False

      topology_st.standalone.restart(timeout=120)

  
@@ -132,12 +132,12 @@ 

      First case: it exists an entry (with the same attribute value) in the scope

      of the plugin and we set the value in an entry that is in an excluded scope

      '''

-     UNIQUE_VALUE = '9876'

+     UNIQUE_VALUE = b'9876'

      try:

          topology_st.standalone.modify_s(USER_1_DN,

                                          [(ldap.MOD_REPLACE, 'telephonenumber', UNIQUE_VALUE)])

      except ldap.LDAPError as e:

-         log.fatal('test_ticket47927_three: Failed to set the telephonenumber ' + e.message['desc'])

+         log.fatal('test_ticket47927_three: Failed to set the telephonenumber ' + e.args[0]['desc'])

          assert False

  

      # we should not be allowed to set this value (because user1 is in the scope)
@@ -148,7 +148,7 @@ 

          assert False

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_three: Failed (expected) to set the telephonenumber for %s: %s' % (

-         USER_2_DN, e.message['desc']))

+         USER_2_DN, e.args[0]['desc']))

  

      # USER_3_DN is in EXCLUDED_CONTAINER_DN so update should be successful

      try:
@@ -157,7 +157,7 @@ 

          log.fatal('test_ticket47927_three: success to set the telephonenumber for %s' % (USER_3_DN))

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_three: Failed (unexpected) to set the telephonenumber for %s: %s' % (

-         USER_3_DN, e.message['desc']))

+         USER_3_DN, e.args[0]['desc']))

          assert False

  

  
@@ -167,7 +167,7 @@ 

      Second case: it exists an entry (with the same attribute value) in an excluded scope

      of the plugin and we set the value in an entry is in the scope

      '''

-     UNIQUE_VALUE = '1111'

+     UNIQUE_VALUE = b'1111'

      # USER_3_DN is in EXCLUDED_CONTAINER_DN so update should be successful

      try:

          topology_st.standalone.modify_s(USER_3_DN,
@@ -175,7 +175,7 @@ 

          log.fatal('test_ticket47927_four: success to set the telephonenumber for %s' % USER_3_DN)

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_four: Failed (unexpected) to set the telephonenumber for %s: %s' % (

-         USER_3_DN, e.message['desc']))

+         USER_3_DN, e.args[0]['desc']))

          assert False

  

      # we should be allowed to set this value (because user3 is excluded from scope)
@@ -184,7 +184,7 @@ 

                                          [(ldap.MOD_REPLACE, 'telephonenumber', UNIQUE_VALUE)])

      except ldap.LDAPError as e:

          log.fatal(

-             'test_ticket47927_four: Failed to set the telephonenumber for %s: %s' % (USER_1_DN, e.message['desc']))

+             'test_ticket47927_four: Failed to set the telephonenumber for %s: %s' % (USER_1_DN, e.args[0]['desc']))

          assert False

  

      # we should not be allowed to set this value (because user1 is in the scope)
@@ -195,7 +195,7 @@ 

          assert False

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_four: Failed (expected) to set the telephonenumber for %s: %s' % (

-         USER_2_DN, e.message['desc']))

+         USER_2_DN, e.args[0]['desc']))

          pass

  

  
@@ -205,10 +205,10 @@ 

      '''

      try:

          topology_st.standalone.modify_s('cn=' + PLUGIN_ATTR_UNIQUENESS + ',cn=plugins,cn=config',

-                                         [(ldap.MOD_ADD, 'uniqueness-exclude-subtrees', EXCLUDED_BIS_CONTAINER_DN)])

+                                         [(ldap.MOD_ADD, 'uniqueness-exclude-subtrees', ensure_bytes(EXCLUDED_BIS_CONTAINER_DN))])

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_five: Failed to configure plugin for to exclude %s: error %s' % (

-         EXCLUDED_BIS_CONTAINER_DN, e.message['desc']))

+         EXCLUDED_BIS_CONTAINER_DN, e.args[0]['desc']))

          assert False

      topology_st.standalone.restart(timeout=120)

      topology_st.standalone.getEntry('cn=' + PLUGIN_ATTR_UNIQUENESS + ',cn=plugins,cn=config', ldap.SCOPE_BASE)
@@ -221,12 +221,12 @@ 

      First case: it exists an entry (with the same attribute value) in the scope

      of the plugin and we set the value in an entry that is in an excluded scope

      '''

-     UNIQUE_VALUE = '222'

+     UNIQUE_VALUE = b'222'

      try:

          topology_st.standalone.modify_s(USER_1_DN,

                                          [(ldap.MOD_REPLACE, 'telephonenumber', UNIQUE_VALUE)])

      except ldap.LDAPError as e:

-         log.fatal('test_ticket47927_six: Failed to set the telephonenumber ' + e.message['desc'])

+         log.fatal('test_ticket47927_six: Failed to set the telephonenumber ' + e.args[0]['desc'])

          assert False

  

      # we should not be allowed to set this value (because user1 is in the scope)
@@ -237,7 +237,7 @@ 

          assert False

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_six: Failed (expected) to set the telephonenumber for %s: %s' % (

-         USER_2_DN, e.message['desc']))

+         USER_2_DN, e.args[0]['desc']))

  

      # USER_3_DN is in EXCLUDED_CONTAINER_DN so update should be successful

      try:
@@ -246,7 +246,7 @@ 

          log.fatal('test_ticket47927_six: success to set the telephonenumber for %s' % (USER_3_DN))

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_six: Failed (unexpected) to set the telephonenumber for %s: %s' % (

-         USER_3_DN, e.message['desc']))

+         USER_3_DN, e.args[0]['desc']))

          assert False

      # USER_4_DN is in EXCLUDED_CONTAINER_DN so update should be successful

      try:
@@ -255,7 +255,7 @@ 

          log.fatal('test_ticket47927_six: success to set the telephonenumber for %s' % (USER_4_DN))

      except ldap.LDAPError as e:

          log.fatal('test_ticket47927_six: Failed (unexpected) to set the telephonenumber for %s: %s' % (

-         USER_4_DN, e.message['desc']))

+         USER_4_DN, e.args[0]['desc']))

          assert False

  

  

@@ -31,7 +31,7 @@ 

          self.timeout = timeout

  

      def run(self):

-         conn = self.inst.openConnection()

+         conn = self.inst.clone()

          conn.set_option(ldap.OPT_TIMEOUT, self.timeout)

          log.info('Modify second suffix...')

          for x in range(0, 5000):
@@ -39,10 +39,10 @@ 

                  conn.modify_s(SECOND_SUFFIX,

                                [(ldap.MOD_REPLACE,

                                  'description',

-                                 'new description')])

+                                 b'new description')])

              except ldap.LDAPError as e:

                  log.fatal('Failed to modify second suffix - error: %s' %

-                           (e.message['desc']))

+                           (e.args[0]['desc']))

                  assert False

  

          conn.close()
@@ -69,9 +69,9 @@ 

          topology_st.standalone.modify_s(DN_CONFIG,

                                          [(ldap.MOD_REPLACE,

                                            'nsslapd-dynamic-plugins',

-                                           'on')])

+                                           b'on')])

      except ldap.LDAPError as e:

-         log.error('Failed to enable dynamic plugins! ' + e.message['desc'])

+         log.error('Failed to enable dynamic plugins! ' + e.args[0]['desc'])

          assert False

  

      # Enable the plugins
@@ -88,7 +88,7 @@ 

                                              {'objectclass': 'top domain'.split(),

                                               'dc': 'deadlock'})))

      except ldap.LDAPError as e:

-         log.fatal('Failed to create suffix entry: error ' + e.message['desc'])

+         log.fatal('Failed to create suffix entry: error ' + e.args[0]['desc'])

          assert False

  

      # Configure retrocl scope
@@ -96,9 +96,9 @@ 

          topology_st.standalone.modify_s(RETROCL_PLUGIN_DN,

                                          [(ldap.MOD_REPLACE,

                                            'nsslapd-include-suffix',

-                                           DEFAULT_SUFFIX)])

+                                           ensure_bytes(DEFAULT_SUFFIX))])

      except ldap.LDAPError as e:

-         log.error('Failed to configure retrocl plugin: ' + e.message['desc'])

+         log.error('Failed to configure retrocl plugin: ' + e.args[0]['desc'])

          assert False

  

      # Configure memberOf group attribute
@@ -106,9 +106,9 @@ 

          topology_st.standalone.modify_s(MEMBEROF_PLUGIN_DN,

                                          [(ldap.MOD_REPLACE,

                                            'memberofgroupattr',

-                                           'uniquemember')])

+                                           b'uniquemember')])

      except ldap.LDAPError as e:

-         log.fatal('Failed to configure memberOf plugin: error ' + e.message['desc'])

+         log.fatal('Failed to configure memberOf plugin: error ' + e.args[0]['desc'])

          assert False

      time.sleep(1)

  
@@ -118,7 +118,7 @@ 

                                              {'objectclass': 'top extensibleObject'.split(),

                                               'cn': 'group'})))

      except ldap.LDAPError as e:

-         log.fatal('Failed to add grouo: error ' + e.message['desc'])

+         log.fatal('Failed to add grouo: error ' + e.args[0]['desc'])

          assert False

  

      # Create 1500 entries (future members of the group)
@@ -129,7 +129,7 @@ 

                                                  {'objectclass': 'top extensibleObject'.split(),

                                                   'uid': 'member%d' % (idx)})))

          except ldap.LDAPError as e:

-             log.fatal('Failed to add user (%s): error %s' % (USER_DN, e.message['desc']))

+             log.fatal('Failed to add user (%s): error %s' % (USER_DN, e.args[0]['desc']))

              assert False

  

      # Modify second backend (separate thread)
@@ -146,13 +146,13 @@ 

              topology_st.standalone.modify_s(GROUP_DN,

                                              [(ldap.MOD_ADD,

                                                'uniquemember',

-                                               MEMBER_VAL)])

+                                               ensure_bytes(MEMBER_VAL))])

          except ldap.TIMEOUT:

              log.fatal('Deadlock!  Bug verification failed.')

              assert False

          except ldap.LDAPError as e:

              log.fatal('Failed to update group(not a deadlock) member (%s) - error: %s' %

-                       (MEMBER_VAL, e.message['desc']))

+                       (MEMBER_VAL, e.args[0]['desc']))

              assert False

      log.info('Finished adding members to the group.')

  

@@ -33,7 +33,7 @@ 

      except ldap.ALREADY_EXISTS:

          pass

      except ldap.LDAPError as e:

-         log.error('Failed to add ou=people org unit: error ' + e.message['desc'])

+         log.error('Failed to add ou=people org unit: error ' + e.args[0]['desc'])

          assert False

  

      log.info("Creating \"ou=ranges\"...")
@@ -44,7 +44,7 @@ 

          })))

  

      except ldap.LDAPError as e:

-         log.error('Failed to add ou=ranges org unit: error ' + e.message['desc'])

+         log.error('Failed to add ou=ranges org unit: error ' + e.args[0]['desc'])

          assert False

  

      log.info("Creating \"cn=entry\"...")
@@ -55,7 +55,7 @@ 

          })))

  

      except ldap.LDAPError as e:

-         log.error('Failed to add test entry: error ' + e.message['desc'])

+         log.error('Failed to add test entry: error ' + e.args[0]['desc'])

          assert False

  

      log.info("Creating DNA shared config entry...")
@@ -69,7 +69,7 @@ 

          })))

  

      except ldap.LDAPError as e:

-         log.error('Failed to add shared config entry: error ' + e.message['desc'])

+         log.error('Failed to add shared config entry: error ' + e.args[0]['desc'])

          assert False

  

      log.info("Add dna plugin config entry...")
@@ -87,14 +87,14 @@ 

              })))

  

      except ldap.LDAPError as e:

-         log.error('Failed to add DNA config entry: error ' + e.message['desc'])

+         log.error('Failed to add DNA config entry: error ' + e.args[0]['desc'])

          assert False

  

      log.info("Enable the DNA plugin...")

      try:

          topology_st.standalone.plugins.enable(name=PLUGIN_DNA)

      except e:

-         log.error("Failed to enable DNA Plugin: error " + e.message['desc'])

+         log.error("Failed to enable DNA Plugin: error " + e.args[0]['desc'])

          assert False

  

      log.info("Restarting the server...")
@@ -107,9 +107,9 @@ 

  

      try:

          topology_st.standalone.modify_s('cn=dna config,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config',

-                                         [(ldap.MOD_REPLACE, 'dnaType', 'foo')])

+                                         [(ldap.MOD_REPLACE, 'dnaType', b'foo')])

      except ldap.LDAPError as e:

-         log.info('Operation failed as expected (error: %s)' % e.message['desc'])

+         log.info('Operation failed as expected (error: %s)' % e.args[0]['desc'])

      else:

          log.error('Operation incorectly succeeded!  Test Failed!')

          assert False

@@ -11,6 +11,7 @@ 

  

  import pytest

  from lib389.tasks import *

+ from lib389.utils import *

  from lib389.topologies import topology_st

  

  from lib389._constants import DATA_DIR, DEFAULT_SUFFIX
@@ -56,10 +57,10 @@ 

  

      log.info('Attempting to remove invalid aci...')

      try:

-         topology_st.standalone.modify_s(DEFAULT_SUFFIX, [(ldap.MOD_DELETE, 'aci', acival)])

+         topology_st.standalone.modify_s(DEFAULT_SUFFIX, [(ldap.MOD_DELETE, 'aci', ensure_bytes(acival))])

          log.info('Removed invalid aci.')

      except ldap.LDAPError as e:

-         log.error('Failed to remove invalid aci: ' + e.message['desc'])

+         log.error('Failed to remove invalid aci: ' + e.args[0]['desc'])

          assert False

  

  

@@ -10,6 +10,7 @@ 

  

  import pytest

  from lib389.tasks import *

+ from lib389.utils import *

  from lib389.topologies import topology_st

  

  from lib389._constants import DEFAULT_SUFFIX, PLUGIN_MEMBER_OF
@@ -36,9 +37,9 @@ 

      #

      topology_st.standalone.plugins.enable(name=PLUGIN_MEMBER_OF)

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'memberofskipnested', 'on')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'memberofskipnested', b'on')])

      except ldap.LDAPError as e:

-         log.error('test_automember: Failed to modify config entry: error ' + e.message['desc'])

+         log.error('test_automember: Failed to modify config entry: error ' + e.args[0]['desc'])

          assert False

  

      topology_st.standalone.restart(timeout=10)
@@ -52,7 +53,7 @@ 

              'uid': 'test_user'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add teset user: error ' + e.message['desc'])

+         log.error('Failed to add teset user: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -62,7 +63,7 @@ 

              'member': USER_DN

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add group1: error ' + e.message['desc'])

+         log.error('Failed to add group1: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -72,7 +73,7 @@ 

              'member': USER_DN

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add group2: error ' + e.message['desc'])

+         log.error('Failed to add group2: error ' + e.args[0]['desc'])

          assert False

  

      # Add group with no member(yet)
@@ -82,7 +83,7 @@ 

              'cn': 'group'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add group3: error ' + e.message['desc'])

+         log.error('Failed to add group3: error ' + e.args[0]['desc'])

          assert False

      time.sleep(1)

  
@@ -96,14 +97,14 @@ 

              log.fatal('User is missing expected memberOf attrs')

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Search for user1 failed: ' + e.message['desc'])

+         log.fatal('Search for user1 failed: ' + e.args[0]['desc'])

          assert False

  

      # Add the user to the group

      try:

-         topology_st.standalone.modify_s(GROUP_DN3, [(ldap.MOD_ADD, 'member', USER_DN)])

+         topology_st.standalone.modify_s(GROUP_DN3, [(ldap.MOD_ADD, 'member', ensure_bytes(USER_DN))])

      except ldap.LDAPError as e:

-         log.error('Failed to member to group: error ' + e.message['desc'])

+         log.error('Failed to member to group: error ' + e.args[0]['desc'])

          assert False

      time.sleep(1)

  
@@ -116,7 +117,7 @@ 

              log.fatal('User is missing expected memberOf attrs')

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Search for user1 failed: ' + e.message['desc'])

+         log.fatal('Search for user1 failed: ' + e.args[0]['desc'])

          assert False

  

      #
@@ -125,7 +126,7 @@ 

      try:

          topology_st.standalone.delete_s(GROUP_DN2)

      except ldap.LDAPError as e:

-         log.error('Failed to delete test group2: ' + e.message['desc'])

+         log.error('Failed to delete test group2: ' + e.args[0]['desc'])

          assert False

      time.sleep(1)

  
@@ -136,7 +137,7 @@ 

              log.fatal('User incorrect memberOf attrs')

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Search for user1 failed: ' + e.message['desc'])

+         log.fatal('Search for user1 failed: ' + e.args[0]['desc'])

          assert False

  

      log.info('Test complete')

@@ -31,17 +31,17 @@ 

      # Enable account lockout

      #

      try:

-         topology_st.standalone.modify_s("cn=config", [(ldap.MOD_REPLACE, 'passwordLockout', 'on')])

+         topology_st.standalone.modify_s("cn=config", [(ldap.MOD_REPLACE, 'passwordLockout', b'on')])

          log.info('account lockout enabled.')

      except ldap.LDAPError as e:

-         log.error('Failed to enable account lockout: ' + e.message['desc'])

+         log.error('Failed to enable account lockout: ' + e.args[0]['desc'])

          assert False

  

      try:

-         topology_st.standalone.modify_s("cn=config", [(ldap.MOD_REPLACE, 'passwordMaxFailure', '5')])

+         topology_st.standalone.modify_s("cn=config", [(ldap.MOD_REPLACE, 'passwordMaxFailure', b'5')])

          log.info('passwordMaxFailure set.')

      except ldap.LDAPError as e:

-         log.error('Failed to to set passwordMaxFailure: ' + e.message['desc'])

+         log.error('Failed to to set passwordMaxFailure: ' + e.args[0]['desc'])

          assert False

  

      #
@@ -69,7 +69,7 @@ 

                                                  "passwordRetryCount=*",

                                                  ['passwordRetryCount'])

      except ldap.LDAPError as e:

-         log.error('Failed to search Root DSE entry: ' + e.message['desc'])

+         log.error('Failed to search Root DSE entry: ' + e.args[0]['desc'])

          assert False

  

      if entry:

@@ -34,7 +34,7 @@ 

              # task is done

              finished = True

      except ldap.LDAPError as e:

-         log.fatal('wait_for_task: Search failed: ' + e.message['desc'])

+         log.fatal('wait_for_task: Search failed: ' + e.args[0]['desc'])

          assert False

  

      return finished
@@ -57,7 +57,7 @@ 

              'uid': 'user1'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add user1: error ' + e.message['desc'])

+         log.error('Failed to add user1: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -77,7 +77,7 @@ 

                  'cn': 'task-' + str(task_count)

              })))

          except ldap.LDAPError as e:

-             log.error('Failed to add task entry: error ' + e.message['desc'])

+             log.error('Failed to add task entry: error ' + e.args[0]['desc'])

              assert False

  

          #
@@ -96,7 +96,7 @@ 

                      log.fatal('User was not returned from search!')

                      assert False

              except ldap.LDAPError as e:

-                 log.fatal('Unable to search for entry %s: error %s' % (USER_DN, e.message['desc']))

+                 log.fatal('Unable to search for entry %s: error %s' % (USER_DN, e.args[0]['desc']))

                  assert False

  

              #
@@ -138,13 +138,13 @@ 

                                               ["objectclasses"])

          oclist = schemaentry[0].data.get("objectclasses")

      except ldap.LDAPError as e:

-         log.error('Failed to get schema entry: error (%s)' % e.message['desc'])

+         log.error('Failed to get schema entry: error (%s)' % e.args[0]['desc'])

          raise e

  

      found = 0

      for oc in oclist:

          log.info('OC: %s' % oc)

-         moz = re.findall(Mozattr0, oc)

+         moz = re.findall(Mozattr0, oc.decode('utf-8'))

          if moz:

              found = 1

              log.info('case 1: %s is in the objectclasses list -- PASS' % Mozattr0)
@@ -178,12 +178,12 @@ 

                                               ["objectclasses"])

          oclist = schemaentry[0].data.get("objectclasses")

      except ldap.LDAPError as e:

-         log.error('Failed to get schema entry: error (%s)' % e.message['desc'])

+         log.error('Failed to get schema entry: error (%s)' % e.args[0]['desc'])

          raise e

  

      for oc in oclist:

          log.info('OC: %s' % oc)

-         moz = re.findall(Mozattr1, oc)

+         moz = re.findall(Mozattr1, oc.decode('utf-8'))

          if moz:

              log.error('case 2: %s is in the objectclasses list -- FAILURE' % Mozattr1)

              assert False
@@ -200,7 +200,7 @@ 

                                                              'cn': name,

                                                              Mozattr2: name})))

      except ldap.LDAPError as e:

-         log.error('Failed to add a test entry: error (%s)' % e.message['desc'])

+         log.error('Failed to add a test entry: error (%s)' % e.args[0]['desc'])

          raise e

  

      try:
@@ -208,7 +208,7 @@ 

                                                      'objectclass=mozillaobject',

                                                      [Mozattr2])

      except ldap.LDAPError as e:

-         log.error('Failed to get schema entry: error (%s)' % e.message['desc'])

+         log.error('Failed to get schema entry: error (%s)' % e.args[0]['desc'])

          raise e

  

      mozattrval = testentry[0].data.get(Mozattr2)

@@ -73,7 +73,7 @@ 

  

  

  def test_ticket47976_1(topology_st):

-     mod = [(ldap.MOD_REPLACE, 'nsslapd-pluginConfigArea', DEFINITIONS_DN)]

+     mod = [(ldap.MOD_REPLACE, 'nsslapd-pluginConfigArea', ensure_bytes(DEFINITIONS_DN))]

      topology_st.standalone.modify_s('cn=%s,cn=plugins,cn=config' % PLUGIN_MANAGED_ENTRY, mod)

      topology_st.standalone.stop(timeout=10)

      topology_st.standalone.start(timeout=10)
@@ -95,7 +95,7 @@ 

      """

  

      log.info('Test complete')

-     mod = [(ldap.MOD_REPLACE, 'nsslapd-db-page-size', str(128 * 1024))]

+     mod = [(ldap.MOD_REPLACE, 'nsslapd-db-page-size', ensure_bytes(str(128 * 1024)))]

      topology_st.standalone.modify_s(DN_LDBM, mod)

  

      # Get the the full path and name for our LDIF we will be exporting

@@ -89,7 +89,7 @@ 

              'ou': 'level1'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add level1: error ' + e.message['desc'])

+         log.error('Failed to add level1: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -98,7 +98,7 @@ 

              'ou': 'level2'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add level2: error ' + e.message['desc'])

+         log.error('Failed to add level2: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -107,7 +107,7 @@ 

              'uid': 'level3'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add level3: error ' + e.message['desc'])

+         log.error('Failed to add level3: error ' + e.args[0]['desc'])

          assert False

  

      # People branch, might already exist
@@ -119,7 +119,7 @@ 

      except ldap.ALREADY_EXISTS:

          pass

      except ldap.LDAPError as e:

-         log.error('Failed to add level4: error ' + e.message['desc'])

+         log.error('Failed to add level4: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -128,7 +128,7 @@ 

              'ou': 'level5'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add level5: error ' + e.message['desc'])

+         log.error('Failed to add level5: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -137,7 +137,7 @@ 

              'uid': 'level6'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add level6: error ' + e.message['desc'])

+         log.error('Failed to add level6: error ' + e.args[0]['desc'])

          assert False

  

      # Add users to each branch
@@ -147,7 +147,7 @@ 

              'uid': 'user1'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add user1: error ' + e.message['desc'])

+         log.error('Failed to add user1: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -156,7 +156,7 @@ 

              'uid': 'user2'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add user2: error ' + e.message['desc'])

+         log.error('Failed to add user2: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -165,7 +165,7 @@ 

              'uid': 'user3'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add user3: error ' + e.message['desc'])

+         log.error('Failed to add user3: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -174,7 +174,7 @@ 

              'uid': 'user4'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add user4: error ' + e.message['desc'])

+         log.error('Failed to add user4: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -183,7 +183,7 @@ 

              'uid': 'user5'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add user5: error ' + e.message['desc'])

+         log.error('Failed to add user5: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -192,14 +192,14 @@ 

              'uid': 'user6'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add user6: error ' + e.message['desc'])

+         log.error('Failed to add user6: error ' + e.args[0]['desc'])

          assert False

  

      # Enable password policy

      try:

-         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_REPLACE, 'nsslapd-pwpolicy-local', 'on')])

+         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_REPLACE, 'nsslapd-pwpolicy-local', b'on')])

      except ldap.LDAPError as e:

-         log.error('Failed to set pwpolicy-local: error ' + e.message['desc'])

+         log.error('Failed to set pwpolicy-local: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -212,7 +212,7 @@ 

              'cn': 'nsPwPolicyContainer'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add subtree container for level1: error ' + e.message['desc'])

+         log.error('Failed to add subtree container for level1: error ' + e.args[0]['desc'])

          assert False

  

      # Add the password policy subentry
@@ -228,7 +228,7 @@ 

              'passwordStorageScheme': 'ssha'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add passwordpolicy for level1: error ' + e.message['desc'])

+         log.error('Failed to add passwordpolicy for level1: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS template
@@ -241,7 +241,7 @@ 

              'pwdpolicysubentry': BRANCH1_PWP

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS template for level1: error ' + e.message['desc'])

+         log.error('Failed to add COS template for level1: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS definition
@@ -253,7 +253,7 @@ 

              'cosAttribute': 'pwdpolicysubentry default operational-default'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS def for level1: error ' + e.message['desc'])

+         log.error('Failed to add COS def for level1: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -266,7 +266,7 @@ 

              'cn': 'nsPwPolicyContainer'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add subtree container for level2: error ' + e.message['desc'])

+         log.error('Failed to add subtree container for level2: error ' + e.args[0]['desc'])

          assert False

  

      # Add the password policy subentry
@@ -282,7 +282,7 @@ 

              'passwordStorageScheme': 'ssha'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add passwordpolicy for level2: error ' + e.message['desc'])

+         log.error('Failed to add passwordpolicy for level2: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS template
@@ -295,7 +295,7 @@ 

              'pwdpolicysubentry': BRANCH2_PWP

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS template for level2: error ' + e.message['desc'])

+         log.error('Failed to add COS template for level2: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS definition
@@ -307,7 +307,7 @@ 

              'cosAttribute': 'pwdpolicysubentry default operational-default'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS def for level2: error ' + e.message['desc'])

+         log.error('Failed to add COS def for level2: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -320,7 +320,7 @@ 

              'cn': 'nsPwPolicyContainer'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add subtree container for level3: error ' + e.message['desc'])

+         log.error('Failed to add subtree container for level3: error ' + e.args[0]['desc'])

          assert False

  

      # Add the password policy subentry
@@ -336,7 +336,7 @@ 

              'passwordStorageScheme': 'ssha'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add passwordpolicy for level3: error ' + e.message['desc'])

+         log.error('Failed to add passwordpolicy for level3: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS template
@@ -349,7 +349,7 @@ 

              'pwdpolicysubentry': BRANCH3_PWP

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS template for level3: error ' + e.message['desc'])

+         log.error('Failed to add COS template for level3: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS definition
@@ -361,7 +361,7 @@ 

              'cosAttribute': 'pwdpolicysubentry default operational-default'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS def for level3: error ' + e.message['desc'])

+         log.error('Failed to add COS def for level3: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -374,7 +374,7 @@ 

              'cn': 'nsPwPolicyContainer'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add subtree container for level3: error ' + e.message['desc'])

+         log.error('Failed to add subtree container for level3: error ' + e.args[0]['desc'])

          assert False

  

      # Add the password policy subentry
@@ -390,7 +390,7 @@ 

              'passwordStorageScheme': 'ssha'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add passwordpolicy for branch4: error ' + e.message['desc'])

+         log.error('Failed to add passwordpolicy for branch4: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS template
@@ -403,7 +403,7 @@ 

              'pwdpolicysubentry': BRANCH4_PWP

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS template for level3: error ' + e.message['desc'])

+         log.error('Failed to add COS template for level3: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS definition
@@ -415,7 +415,7 @@ 

              'cosAttribute': 'pwdpolicysubentry default operational-default'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS def for branch4: error ' + e.message['desc'])

+         log.error('Failed to add COS def for branch4: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -428,7 +428,7 @@ 

              'cn': 'nsPwPolicyContainer'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add subtree container for branch5: error ' + e.message['desc'])

+         log.error('Failed to add subtree container for branch5: error ' + e.args[0]['desc'])

          assert False

  

      # Add the password policy subentry
@@ -444,7 +444,7 @@ 

              'passwordStorageScheme': 'ssha'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add passwordpolicy for branch5: error ' + e.message['desc'])

+         log.error('Failed to add passwordpolicy for branch5: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS template
@@ -457,7 +457,7 @@ 

              'pwdpolicysubentry': BRANCH5_PWP

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS template for branch5: error ' + e.message['desc'])

+         log.error('Failed to add COS template for branch5: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS definition
@@ -469,7 +469,7 @@ 

              'cosAttribute': 'pwdpolicysubentry default operational-default'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS def for level3: error ' + e.message['desc'])

+         log.error('Failed to add COS def for level3: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -482,7 +482,7 @@ 

              'cn': 'nsPwPolicyContainer'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add subtree container for branch6: error ' + e.message['desc'])

+         log.error('Failed to add subtree container for branch6: error ' + e.args[0]['desc'])

          assert False

  

      # Add the password policy subentry
@@ -498,7 +498,7 @@ 

              'passwordStorageScheme': 'ssha'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add passwordpolicy for branch6: error ' + e.message['desc'])

+         log.error('Failed to add passwordpolicy for branch6: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS template
@@ -511,7 +511,7 @@ 

              'pwdpolicysubentry': BRANCH6_PWP

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS template for branch6: error ' + e.message['desc'])

+         log.error('Failed to add COS template for branch6: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS definition
@@ -523,7 +523,7 @@ 

              'cosAttribute': 'pwdpolicysubentry default operational-default'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS def for branch6: error ' + e.message['desc'])

+         log.error('Failed to add COS def for branch6: error ' + e.args[0]['desc'])

          assert False

  

      time.sleep(2)
@@ -537,7 +537,7 @@ 

              log.fatal('User %s does not have expected pwdpolicysubentry!')

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Unable to search for entry %s: error %s' % (USER1_DN, e.message['desc']))

+         log.fatal('Unable to search for entry %s: error %s' % (USER1_DN, e.args[0]['desc']))

          assert False

  

      try:
@@ -546,7 +546,7 @@ 

              log.fatal('User %s does not have expected pwdpolicysubentry!' % USER2_DN)

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Unable to search for entry %s: error %s' % (USER2_DN, e.message['desc']))

+         log.fatal('Unable to search for entry %s: error %s' % (USER2_DN, e.args[0]['desc']))

          assert False

  

      try:
@@ -555,7 +555,7 @@ 

              log.fatal('User %s does not have expected pwdpolicysubentry!' % USER3_DN)

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Unable to search for entry %s: error %s' % (USER3_DN, e.message['desc']))

+         log.fatal('Unable to search for entry %s: error %s' % (USER3_DN, e.args[0]['desc']))

          assert False

  

      try:
@@ -564,7 +564,7 @@ 

              log.fatal('User %s does not have expected pwdpolicysubentry!' % USER4_DN)

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Unable to search for entry %s: error %s' % (USER4_DN, e.message['desc']))

+         log.fatal('Unable to search for entry %s: error %s' % (USER4_DN, e.args[0]['desc']))

          assert False

  

      try:
@@ -573,7 +573,7 @@ 

              log.fatal('User %s does not have expected pwdpolicysubentry!' % USER5_DN)

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Unable to search for entry %s: error %s' % (USER5_DN, e.message['desc']))

+         log.fatal('Unable to search for entry %s: error %s' % (USER5_DN, e.args[0]['desc']))

          assert False

  

      try:
@@ -582,7 +582,7 @@ 

              log.fatal('User %s does not have expected pwdpolicysubentry!' % USER6_DN)

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Unable to search for entry %s: error %s' % (USER6_DN, e.message['desc']))

+         log.fatal('Unable to search for entry %s: error %s' % (USER6_DN, e.args[0]['desc']))

          assert False

  

  

@@ -39,7 +39,7 @@ 

              'cn': 'nsPwPolicyContainer'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add subtree container for ou=people: error ' + e.message['desc'])

+         log.error('Failed to add subtree container for ou=people: error ' + e.args[0]['desc'])

          assert False

  

      # Add the password policy subentry
@@ -55,7 +55,7 @@ 

              'passwordStorageScheme': 'ssha'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add passwordpolicy: error ' + e.message['desc'])

+         log.error('Failed to add passwordpolicy: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS template
@@ -68,7 +68,7 @@ 

              'pwdpolicysubentry': BRANCH_PWP

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS template: error ' + e.message['desc'])

+         log.error('Failed to add COS template: error ' + e.args[0]['desc'])

          assert False

  

      # Add the COS definition
@@ -80,7 +80,7 @@ 

              'cosAttribute': 'pwdpolicysubentry default operational-default'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add COS def: error ' + e.message['desc'])

+         log.error('Failed to add COS def: error ' + e.args[0]['desc'])

          assert False

      time.sleep(1)

  
@@ -89,25 +89,25 @@ 

      try:

          inst.delete_s(BRANCH_COS_DEF)

      except ldap.LDAPError as e:

-         log.error('Failed to delete COS def: error ' + e.message['desc'])

+         log.error('Failed to delete COS def: error ' + e.args[0]['desc'])

          assert False

  

      try:

          inst.delete_s(BRANCH_COS_TMPL)

      except ldap.LDAPError as e:

-         log.error('Failed to delete COS template: error ' + e.message['desc'])

+         log.error('Failed to delete COS template: error ' + e.args[0]['desc'])

          assert False

  

      try:

          inst.delete_s(BRANCH_PWP)

      except ldap.LDAPError as e:

-         log.error('Failed to delete COS password policy: error ' + e.message['desc'])

+         log.error('Failed to delete COS password policy: error ' + e.args[0]['desc'])

          assert False

  

      try:

          inst.delete_s(BRANCH_CONTAINER)

      except ldap.LDAPError as e:

-         log.error('Failed to delete COS container: error ' + e.message['desc'])

+         log.error('Failed to delete COS container: error ' + e.args[0]['desc'])

          assert False

      time.sleep(1)

  
@@ -135,7 +135,7 @@ 

      except ldap.ALREADY_EXISTS:

          pass

      except ldap.LDAPError as e:

-         log.error('Failed to create suffix entry: error ' + e.message['desc'])

+         log.error('Failed to create suffix entry: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -151,7 +151,7 @@ 

      except ldap.ALREADY_EXISTS:

          pass

      except ldap.LDAPError as e:

-         log.error('Failed to add ou=people: error ' + e.message['desc'])

+         log.error('Failed to add ou=people: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -163,16 +163,16 @@ 

              'uid': 'user1'

          })))

      except ldap.LDAPError as e:

-         log.error('Failed to add user1: error ' + e.message['desc'])

+         log.error('Failed to add user1: error ' + e.args[0]['desc'])

          assert False

  

      #

      # Enable password policy and add the subtree policy

      #

      try:

-         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_REPLACE, 'nsslapd-pwpolicy-local', 'on')])

+         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_REPLACE, 'nsslapd-pwpolicy-local', b'on')])

      except ldap.LDAPError as e:

-         log.error('Failed to set pwpolicy-local: error ' + e.message['desc'])

+         log.error('Failed to set pwpolicy-local: error ' + e.args[0]['desc'])

          assert False

  

      addSubtreePwPolicy(topology_st.standalone)
@@ -189,7 +189,7 @@ 

              log.fatal('User does not have expected pwdpolicysubentry!')

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Unable to search for entry %s: error %s' % (USER_DN, e.message['desc']))

+         log.fatal('Unable to search for entry %s: error %s' % (USER_DN, e.args[0]['desc']))

          assert False

  

      #
@@ -202,7 +202,7 @@ 

              log.fatal('User unexpectedly does have the pwdpolicysubentry!')

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Unable to search for entry %s: error %s' % (USER_DN, e.message['desc']))

+         log.fatal('Unable to search for entry %s: error %s' % (USER_DN, e.args[0]['desc']))

          assert False

  

      #
@@ -215,7 +215,7 @@ 

              log.fatal('User does not have expected pwdpolicysubentry!')

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Unable to search for entry %s: error %s' % (USER_DN, e.message['desc']))

+         log.fatal('Unable to search for entry %s: error %s' % (USER_DN, e.args[0]['desc']))

          assert False

  

  

@@ -34,7 +34,7 @@ 

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         topology_st.standalone.log.error('Root DN failed to authenticate: ' + e.message['desc'])

+         topology_st.standalone.log.error('Root DN failed to authenticate: ' + e.args[0]['desc'])

          assert False

  

      ouname = 'outest'
@@ -48,9 +48,9 @@ 

                  '(userdn = "ldap:///%s??sub?(&(cn=%s)(ou:dn:=%s))");)' % (DEFAULT_SUFFIX, username, ouname))

  

      try:

-         topology_st.standalone.modify_s(DEFAULT_SUFFIX, [(ldap.MOD_ADD, 'aci', aci_text)])

+         topology_st.standalone.modify_s(DEFAULT_SUFFIX, [(ldap.MOD_ADD, 'aci', ensure_bytes(aci_text))])

      except ldap.LDAPError as e:

-         log.error('Failed to add aci: (%s) error %s' % (aci_text, e.message['desc']))

+         log.error('Failed to add aci: (%s) error %s' % (aci_text, e.args[0]['desc']))

          assert False

  

      log.info('Add entries ...')
@@ -72,7 +72,7 @@ 

      try:

          topology_st.standalone.simple_bind_s(binddn, passwd)

      except ldap.LDAPError as e:

-         topology_st.standalone.log.error(bindn + ' failed to authenticate: ' + e.message['desc'])

+         topology_st.standalone.log.error(bindn + ' failed to authenticate: ' + e.args[0]['desc'])

          assert False

  

      filter = '(cn=%s)' % username
@@ -84,7 +84,7 @@ 

                  log.fatal('aci with extensible filter failed -- %s')

                  assert False

      except ldap.LDAPError as e:

-         topology_st.standalone.log.error('Search (%s, %s) failed: ' % (DEFAULT_SUFFIX, filter) + e.message['desc'])

+         topology_st.standalone.log.error('Search (%s, %s) failed: ' % (DEFAULT_SUFFIX, filter) + e.args[0]['desc'])

          assert False

  

      log.info('Test complete')

@@ -46,8 +46,8 @@ 

      # log.info("attach debugger")

      # time.sleep(60)

  

-     IGNORE_MR_NAME = 'caseIgnoreIA5Match'

-     EXACT_MR_NAME = 'caseExactIA5Match'

+     IGNORE_MR_NAME = b'caseIgnoreIA5Match'

+     EXACT_MR_NAME = b'caseExactIA5Match'

      mod = [(ldap.MOD_REPLACE, MATCHINGRULE, (IGNORE_MR_NAME, EXACT_MR_NAME))]

      topology_st.standalone.modify_s(HOMEDIRECTORY_INDEX, mod)

  
@@ -78,7 +78,7 @@ 

  def test_ticket48270_homeDirectory_mixed_value(topology_st):

      # Set a homedirectory value with mixed case

      name = "uid=%s1,%s" % (NEW_ACCOUNT, SUFFIX)

-     mod = [(ldap.MOD_REPLACE, 'homeDirectory', MIXED_VALUE)]

+     mod = [(ldap.MOD_REPLACE, 'homeDirectory', ensure_bytes(MIXED_VALUE))]

      topology_st.standalone.modify_s(name, mod)

  

  

@@ -104,7 +104,7 @@ 

      # This means we have a conflicting user in scope now!

  

      topology_st.standalone.modify_s("cn=example.com,cn=addn,cn=plugins,cn=config",

-                                     [(ldap.MOD_REPLACE, 'addn_base', DEFAULT_SUFFIX)])

+                                     [(ldap.MOD_REPLACE, 'addn_base', ensure_bytes(DEFAULT_SUFFIX))])

      topology_st.standalone.restart(60)

  

      # Make sure our binds still work.

@@ -14,6 +14,7 @@ 

  from lib389 import Entry

  from lib389._constants import *

  from lib389.topologies import topology_st

+ from lib389.utils import *

  

  log = logging.getLogger(__name__)

  
@@ -44,7 +45,7 @@ 

              log.fatal('Failed to get %s' % dn)

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Failed to search ' + dn + ': ' + e.message['desc'])

+         log.fatal('Failed to search ' + dn + ': ' + e.args[0]['desc'])

          assert False

  

  
@@ -92,15 +93,15 @@ 

  

      log.info('Enable Dynamic plugins, and the linked Attrs plugin')

      try:

-         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_REPLACE, 'nsslapd-dynamic-plugins', 'on')])

+         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_REPLACE, 'nsslapd-dynamic-plugins', b'on')])

      except ldap.LDAPError as e:

-         log.fatal('Failed to enable dynamic plugin!' + e.message['desc'])

+         log.fatal('Failed to enable dynamic plugin!' + e.args[0]['desc'])

          assert False

  

      try:

          topology_st.standalone.plugins.enable(name=PLUGIN_LINKED_ATTRS)

      except ValueError as e:

-         log.fatal('Failed to enable linked attributes plugin!' + e.message['desc'])

+         log.fatal('Failed to enable linked attributes plugin!' + e.args[0]['desc'])

          assert False

  

      log.info('Add the plugin config entry')
@@ -112,7 +113,7 @@ 

              'managedType': MANAGEDTYPE

          })))

      except ldap.LDAPError as e:

-         log.fatal('Failed to add linked attr config entry: error ' + e.message['desc'])

+         log.fatal('Failed to add linked attr config entry: error ' + e.args[0]['desc'])

          assert False

  

      log.info('Add 2 entries: manager1 and employee1')
@@ -121,7 +122,7 @@ 

              'objectclass': 'top extensibleObject'.split(),

              'uid': 'manager1'})))

      except ldap.LDAPError as e:

-         log.fatal('Add manager1 failed: error ' + e.message['desc'])

+         log.fatal('Add manager1 failed: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -129,15 +130,15 @@ 

              'objectclass': 'top extensibleObject'.split(),

              'uid': 'employee1'})))

      except ldap.LDAPError as e:

-         log.fatal('Add employee1 failed: error ' + e.message['desc'])

+         log.fatal('Add employee1 failed: error ' + e.args[0]['desc'])

          assert False

  

      log.info('Add linktype to manager1')

      topology_st.standalone.modify_s('uid=manager1,%s' % OU_PEOPLE,

-                                     [(ldap.MOD_ADD, LINKTYPE, 'uid=employee1,%s' % OU_PEOPLE)])

+                                     [(ldap.MOD_ADD, LINKTYPE, ensure_bytes('uid=employee1,%s' % OU_PEOPLE))])

  

      log.info('Check managed attribute')

-     check_attr_val(topology_st, 'uid=employee1,%s' % OU_PEOPLE, MANAGEDTYPE, 'uid=manager1,%s' % OU_PEOPLE)

+     check_attr_val(topology_st, 'uid=employee1,%s' % OU_PEOPLE, MANAGEDTYPE, ensure_bytes('uid=manager1,%s' % OU_PEOPLE))

  

      log.info('PASSED')

  
@@ -154,13 +155,13 @@ 

      log.info('Modify the value of directReport to uid=employee2')

      try:

          topology_st.standalone.modify_s('uid=manager1,%s' % OU_PEOPLE,

-                                         [(ldap.MOD_REPLACE, LINKTYPE, 'uid=employee2,%s' % OU_PEOPLE)])

+                                         [(ldap.MOD_REPLACE, LINKTYPE, ensure_bytes('uid=employee2,%s' % OU_PEOPLE))])

      except ldap.LDAPError as e:

-         log.fatal('Failed to replace uid=employee1 with employee2: ' + e.message['desc'])

+         log.fatal('Failed to replace uid=employee1 with employee2: ' + e.args[0]['desc'])

          assert False

  

      log.info('Check managed attribute')

-     check_attr_val(topology_st, 'uid=employee2,%s' % OU_PEOPLE, MANAGEDTYPE, 'uid=manager1,%s' % OU_PEOPLE)

+     check_attr_val(topology_st, 'uid=employee2,%s' % OU_PEOPLE, MANAGEDTYPE, ensure_bytes('uid=manager1,%s' % OU_PEOPLE))

  

      log.info('PASSED')

  
@@ -177,20 +178,20 @@ 

      log.info('Modify the value of directReport to uid=employee3')

      try:

          topology_st.standalone.modify_s('uid=manager1,%s' % OU_PEOPLE,

-                                         [(ldap.MOD_DELETE, LINKTYPE, 'uid=employee2,%s' % OU_PEOPLE)])

+                                         [(ldap.MOD_DELETE, LINKTYPE, ensure_bytes('uid=employee2,%s' % OU_PEOPLE))])

      except ldap.LDAPError as e:

-         log.fatal('Failed to delete employee2: ' + e.message['desc'])

+         log.fatal('Failed to delete employee2: ' + e.args[0]['desc'])

          assert False

  

      try:

          topology_st.standalone.modify_s('uid=manager1,%s' % OU_PEOPLE,

-                                         [(ldap.MOD_ADD, LINKTYPE, 'uid=employee3,%s' % OU_PEOPLE)])

+                                         [(ldap.MOD_ADD, LINKTYPE, ensure_bytes('uid=employee3,%s' % OU_PEOPLE))])

      except ldap.LDAPError as e:

-         log.fatal('Failed to add employee3: ' + e.message['desc'])

+         log.fatal('Failed to add employee3: ' + e.args[0]['desc'])

          assert False

  

      log.info('Check managed attribute')

-     check_attr_val(topology_st, 'uid=employee3,%s' % OU_PEOPLE, MANAGEDTYPE, 'uid=manager1,%s' % OU_PEOPLE)

+     check_attr_val(topology_st, 'uid=employee3,%s' % OU_PEOPLE, MANAGEDTYPE, ensure_bytes('uid=manager1,%s' % OU_PEOPLE))

  

      log.info('PASSED')

  
@@ -205,7 +206,7 @@ 

      _modrdn_entry(topology_st, entry_dn='uid=manager1,%s' % OU_PEOPLE, new_rdn='uid=manager2')

  

      log.info('Check managed attribute')

-     check_attr_val(topology_st, 'uid=employee3,%s' % OU_PEOPLE, MANAGEDTYPE, 'uid=manager2,%s' % OU_PEOPLE)

+     check_attr_val(topology_st, 'uid=employee3,%s' % OU_PEOPLE, MANAGEDTYPE, ensure_bytes('uid=manager2,%s' % OU_PEOPLE))

  

      log.info('PASSED')

  

@@ -13,6 +13,7 @@ 

  from lib389 import Entry

  from lib389._constants import *

  from lib389.topologies import topology_st

+ from lib389.utils import *

  

  log = logging.getLogger(__name__)

  
@@ -57,7 +58,7 @@ 

              log.fatal('Failed to get %s' % dn)

              assert False

      except ldap.LDAPError as e:

-         log.fatal('Failed to search ' + dn + ': ' + e.message['desc'])

+         log.fatal('Failed to search ' + dn + ': ' + e.args[0]['desc'])

          assert False

  

  
@@ -70,15 +71,15 @@ 

  

      log.info('Enable Dynamic plugins, and the linked Attrs plugin')

      try:

-         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_REPLACE, 'nsslapd-dynamic-plugins', 'on')])

+         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_REPLACE, 'nsslapd-dynamic-plugins', b'on')])

      except ldap.LDAPError as e:

-         log.fatal('Failed to enable dynamic plugin!' + e.message['desc'])

+         log.fatal('Failed to enable dynamic plugin!' + e.args[0]['desc'])

          assert False

  

      try:

          topology_st.standalone.plugins.enable(name=PLUGIN_LINKED_ATTRS)

      except ValueError as e:

-         log.fatal('Failed to enable linked attributes plugin!' + e.message['desc'])

+         log.fatal('Failed to enable linked attributes plugin!' + e.args[0]['desc'])

          assert False

  

      log.info('Add the plugin config entry')
@@ -90,7 +91,7 @@ 

              'managedType': MANAGEDTYPE

          })))

      except ldap.LDAPError as e:

-         log.fatal('Failed to add linked attr config entry: error ' + e.message['desc'])

+         log.fatal('Failed to add linked attr config entry: error ' + e.args[0]['desc'])

          assert False

  

      log.info('Add 2 entries: manager1 and employee1')
@@ -99,7 +100,7 @@ 

              'objectclass': 'top extensibleObject'.split(),

              'uid': 'manager1'})))

      except ldap.LDAPError as e:

-         log.fatal('Add manager1 failed: error ' + e.message['desc'])

+         log.fatal('Add manager1 failed: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -107,7 +108,7 @@ 

              'objectclass': 'top extensibleObject'.split(),

              'uid': 'employee1'})))

      except ldap.LDAPError as e:

-         log.fatal('Add employee1 failed: error ' + e.message['desc'])

+         log.fatal('Add employee1 failed: error ' + e.args[0]['desc'])

          assert False

  

      log.info('PASSED')
@@ -122,14 +123,14 @@ 

              'Add 2 linktypes to manager1 - one exists, another does not to make sure the managed entry does not have managed type.')

      try:

          topology_st.standalone.modify_s('uid=manager1,%s' % OU_PEOPLE,

-                                         [(ldap.MOD_ADD, LINKTYPE, 'uid=employee1,%s' % OU_PEOPLE),

-                                          (ldap.MOD_ADD, LINKTYPE, 'uid=doNotExist,%s' % OU_PEOPLE)])

+                                         [(ldap.MOD_ADD, LINKTYPE, ensure_bytes('uid=employee1,%s' % OU_PEOPLE)),

+                                          (ldap.MOD_ADD, LINKTYPE, ensure_bytes('uid=doNotExist,%s' % OU_PEOPLE))])

      except ldap.UNWILLING_TO_PERFORM:

          log.info('Add uid=employee1 and uid=doNotExist expectedly failed.')

          pass

  

      log.info('Check managed attribute does not exist.')

-     check_attr_val(topology_st, 'uid=employee1,%s' % OU_PEOPLE, MANAGEDTYPE, 'uid=manager1,%s' % OU_PEOPLE, True)

+     check_attr_val(topology_st, 'uid=employee1,%s' % OU_PEOPLE, MANAGEDTYPE, ensure_bytes('uid=manager1,%s' % OU_PEOPLE), True)

  

      log.info('PASSED')

  

@@ -26,9 +26,9 @@ 

      # First enable dynamic plugins

      #

      try:

-         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_REPLACE, 'nsslapd-dynamic-plugins', 'on')])

+         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_REPLACE, 'nsslapd-dynamic-plugins', b'on')])

      except ldap.LDAPError as e:

-         log.fatal('Failed to enable dynamic plugin!' + e.message['desc'])

+         log.fatal('Failed to enable dynamic plugin!' + e.args[0]['desc'])

          assert False

      topology_st.standalone.plugins.enable(name=PLUGIN_MANAGED_ENTRY)

  
@@ -42,7 +42,7 @@ 

      except ldap.ALREADY_EXISTS:

          pass

      except ldap.LDAPError as e:

-         log.fatal('test_mep: Failed to add people org unit: error ' + e.message['desc'])

+         log.fatal('test_mep: Failed to add people org unit: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -52,7 +52,7 @@ 

      except ldap.ALREADY_EXISTS:

          pass

      except ldap.LDAPError as e:

-         log.fatal('test_mep: Failed to add people org unit: error ' + e.message['desc'])

+         log.fatal('test_mep: Failed to add people org unit: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -67,7 +67,7 @@ 

              'mepMappedAttr': ['cn: $uid', 'uid: $cn', 'gidNumber: $uidNumber']

          })))

      except ldap.LDAPError as e:

-         log.fatal('test_mep: Failed to add template entry: error ' + e.message['desc'])

+         log.fatal('test_mep: Failed to add template entry: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -83,7 +83,7 @@ 

              'managedTemplate': TEMPLATE_DN

          })))

      except ldap.LDAPError as e:

-         log.fatal('test_mep: Failed to add config entry: error ' + e.message['desc'])

+         log.fatal('test_mep: Failed to add config entry: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -100,7 +100,7 @@ 

              'description': 'uiser description'

          })))

      except ldap.LDAPError as e:

-         log.fatal('test_mep: Failed to user1: error ' + e.message['desc'])

+         log.fatal('test_mep: Failed to user1: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -109,7 +109,7 @@ 

      try:

          topology_st.standalone.rename_s(USER_DN, USER_NEWRDN, delold=1)

      except ldap.LDAPError as e:

-         log.error('Failed to modrdn: error ' + e.message['desc'])

+         log.error('Failed to modrdn: error ' + e.args[0]['desc'])

          assert False

  

      log.info('Test complete')

@@ -29,14 +29,14 @@ 

          })))

  

      except ldap.LDAPError as e:

-         log.error('Failed to add DNA config entry: error ' + e.message['desc'])

+         log.error('Failed to add DNA config entry: error ' + e.args[0]['desc'])

          assert False

  

      log.info("Enable the DNA plugin...")

      try:

          server.plugins.enable(name=PLUGIN_DNA)

      except e:

-         log.error("Failed to enable DNA Plugin: error " + e.message['desc'])

+         log.error("Failed to enable DNA Plugin: error " + e.args[0]['desc'])

          assert False

  

      log.info("Restarting the server...")
@@ -86,7 +86,7 @@ 

  

      # Turn on lots of error logging now.

  

-     mod = [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', '16384')]

+     mod = [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', b'16384')]

      # mod = [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', '1')]

      topology_m3.ms["master1"].modify_s('cn=config', mod)

      topology_m3.ms["master2"].modify_s('cn=config', mod)
@@ -124,7 +124,7 @@ 

          })))

      log.info('Test complete')

      # add on master1 users with description DNA

-     mod = [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', '16384')]

+     mod = [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', b'16384')]

      # mod = [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', '1')]

      topology_m3.ms["master1"].modify_s('cn=config', mod)

      topology_m3.ms["master2"].modify_s('cn=config', mod)

@@ -16,9 +16,9 @@ 

  MAX_ACCOUNTS = 5

  

  BINDMETHOD_ATTR = 'dnaRemoteBindMethod'

- BINDMETHOD_VALUE = "SASL/GSSAPI"

+ BINDMETHOD_VALUE = b'SASL/GSSAPI'

  PROTOCOLE_ATTR = 'dnaRemoteConnProtocol'

- PROTOCOLE_VALUE = 'LDAP'

+ PROTOCOLE_VALUE = b'LDAP'

  

  SHARE_CFG_BASE = 'ou=ranges,' + SUFFIX

  
@@ -82,8 +82,8 @@ 

      log.info('\n======================== Update dnaPortNum=%d ============================\n' % server.port)

      try:

          ent = server.getEntry(SHARE_CFG_BASE, ldap.SCOPE_ONELEVEL, "(dnaPortNum=%d)" % server.port)

-         mod = [(ldap.MOD_REPLACE, BINDMETHOD_ATTR, method),

-                (ldap.MOD_REPLACE, PROTOCOLE_ATTR, transport)]

+         mod = [(ldap.MOD_REPLACE, BINDMETHOD_ATTR, ensure_bytes(method)),

+                (ldap.MOD_REPLACE, PROTOCOLE_ATTR, ensure_bytes(transport))]

          server.modify_s(ent.dn, mod)

  

          log.info('\n======================== Update done\n')

@@ -77,13 +77,13 @@ 

      ACI_ALLOW = "(version 3.0; acl \"Allow search-read to green subtree\"; allow (read, search, compare)"

      ACI_SUBJECT = " userdn = \"ldap:///%s\";)" % TEST_USER_DN

      ACI_BODY = ACI_TARGET + ACI_TARGETATTR + ACI_ALLOW + ACI_SUBJECT

-     mod = [(ldap.MOD_ADD, 'aci', ACI_BODY)]

+     mod = [(ldap.MOD_ADD, 'aci', ensure_bytes(ACI_BODY))]

      topology_st.standalone.modify_s(SUFFIX, mod)

  

      ACI_ALLOW = "(version 3.0; acl \"Allow use pf proxy auth to green subtree\"; allow (proxy)"

      ACI_SUBJECT = " userdn = \"ldap:///%s\";)" % PROXY_USER_DN

      ACI_BODY = ACI_TARGET + ACI_TARGETATTR + ACI_ALLOW + ACI_SUBJECT

-     mod = [(ldap.MOD_ADD, 'aci', ACI_BODY)]

+     mod = [(ldap.MOD_ADD, 'aci', ensure_bytes(ACI_BODY))]

      topology_st.standalone.modify_s(SUFFIX, mod)

  

      log.info("Adding %d test entries...")
@@ -107,7 +107,7 @@ 

  

  

  def test_ticket48366_search_user(topology_st):

-     proxy_ctrl = ProxyAuthzControl(criticality=True, authzId="dn: " + TEST_USER_DN)

+     proxy_ctrl = ProxyAuthzControl(criticality=True, authzId=ensure_bytes("dn: " + TEST_USER_DN))

      # searching as test user should return one entry from the green subtree

      topology_st.standalone.simple_bind_s(TEST_USER_DN, PASSWORD)

      ents = topology_st.standalone.search_s(SUFFIX, ldap.SCOPE_SUBTREE, 'uid=test1')
@@ -130,12 +130,12 @@ 

      assert (len(ents) == 2)

  

      # searching as directory manager proxying test user should return one entry

-     proxy_ctrl = ProxyAuthzControl(criticality=True, authzId="dn: " + TEST_USER_DN)

+     proxy_ctrl = ProxyAuthzControl(criticality=True, authzId=ensure_bytes("dn: " + TEST_USER_DN))

      ents = topology_st.standalone.search_ext_s(SUFFIX, ldap.SCOPE_SUBTREE, 'uid=test1', serverctrls=[proxy_ctrl])

      assert (len(ents) == 1)

  

      # searching as directory manager proxying proxy user should return no entry

-     proxy_ctrl = ProxyAuthzControl(criticality=True, authzId="dn: " + PROXY_USER_DN)

+     proxy_ctrl = ProxyAuthzControl(criticality=True, authzId=ensure_bytes("dn: " + PROXY_USER_DN))

      ents = topology_st.standalone.search_ext_s(SUFFIX, ldap.SCOPE_SUBTREE, 'uid=test1', serverctrls=[proxy_ctrl])

      assert (len(ents) == 0)

  

@@ -36,7 +36,7 @@ 

  def test_ticket48497_homeDirectory_mixed_value(topology_st):

      # Set a homedirectory value with mixed case

      name = "uid=%s1,%s" % (NEW_ACCOUNT, SUFFIX)

-     mod = [(ldap.MOD_REPLACE, 'homeDirectory', MIXED_VALUE)]

+     mod = [(ldap.MOD_REPLACE, 'homeDirectory', ensure_bytes(MIXED_VALUE))]

      topology_st.standalone.modify_s(name, mod)

  

  
@@ -78,8 +78,8 @@ 

              'nsSystemIndex': 'false',

              'nsIndexType': 'eq'})))

  

-     IGNORE_MR_NAME = 'caseIgnoreIA5Match'

-     EXACT_MR_NAME = 'caseExactIA5Match'

+     IGNORE_MR_NAME = b'caseIgnoreIA5Match'

+     EXACT_MR_NAME = b'caseExactIA5Match'

      mod = [(ldap.MOD_REPLACE, MATCHINGRULE, (IGNORE_MR_NAME, EXACT_MR_NAME))]

      topology_st.standalone.modify_s(HOMEDIRECTORY_INDEX, mod)

  

@@ -23,10 +23,10 @@ 

      # This will trigger a mod delete then add.

  

      topology_st.standalone.modify_s('cn=config,cn=ldbm database,cn=plugins,cn=config',

-                                     [(ldap.MOD_REPLACE, 'nsslapd-cache-autosize', '0')])

+                                     [(ldap.MOD_REPLACE, 'nsslapd-cache-autosize', b'0')])

  

      try:

-         modlist = [(ldap.MOD_DELETE, 'nsslapd-cachememsize', None), (ldap.MOD_ADD, 'nsslapd-cachememsize', '1')]

+         modlist = [(ldap.MOD_DELETE, 'nsslapd-cachememsize', None), (ldap.MOD_ADD, 'nsslapd-cachememsize', b'1')]

          topology_st.standalone.modify_s("cn=%s,cn=ldbm database,cn=plugins,cn=config" % DEFAULT_BENAME,

                                          modlist)

      except:
@@ -40,9 +40,9 @@ 

      # This has a magic hack to determine if we are in cn=config.

      try:

          topology_st.standalone.modify_s(DEFAULT_BENAME, [(ldap.MOD_REPLACE,

-                                                           'nsslapd-cachememsize', '1')])

+                                                           'nsslapd-cachememsize', b'1')])

      except ldap.LDAPError as e:

-         log.fatal('Failed to change nsslapd-cachememsize ' + e.message['desc'])

+         log.fatal('Failed to change nsslapd-cachememsize ' + e.args[0]['desc'])

  

      # Check the server has not commited seppuku.

      entries = topology_st.standalone.search_s(DEFAULT_SUFFIX, ldap.SCOPE_SUBTREE, '(cn=*)')
@@ -51,7 +51,7 @@ 

  

      # Now try with mod_replace. This should be okay.

  

-     modlist = [(ldap.MOD_REPLACE, 'nsslapd-cachememsize', '1')]

+     modlist = [(ldap.MOD_REPLACE, 'nsslapd-cachememsize', b'1')]

      topology_st.standalone.modify_s("cn=%s,cn=ldbm database,cn=plugins,cn=config" % DEFAULT_BENAME,

                                      modlist)

  

@@ -46,8 +46,8 @@ 

      # log.info("attach debugger")

      # time.sleep(60)

  

-     IGNORE_MR_NAME = 'caseIgnoreIA5Match'

-     EXACT_MR_NAME = 'caseExactIA5Match'

+     IGNORE_MR_NAME = b'caseIgnoreIA5Match'

+     EXACT_MR_NAME = b'caseExactIA5Match'

      mod = [(ldap.MOD_REPLACE, MATCHINGRULE, (IGNORE_MR_NAME, EXACT_MR_NAME))]

      topology_st.standalone.modify_s(HOMEDIRECTORY_INDEX, mod)

  
@@ -78,7 +78,7 @@ 

  def test_ticket48745_homeDirectory_mixed_value(topology_st):

      # Set a homedirectory value with mixed case

      name = "uid=%s1,%s" % (NEW_ACCOUNT, SUFFIX)

-     mod = [(ldap.MOD_REPLACE, 'homeDirectory', MIXED_VALUE)]

+     mod = [(ldap.MOD_REPLACE, 'homeDirectory', ensure_bytes(MIXED_VALUE))]

      topology_st.standalone.modify_s(name, mod)

  

  

@@ -46,8 +46,8 @@ 

      # log.info("attach debugger")

      # time.sleep(60)

  

-     IGNORE_MR_NAME = 'caseIgnoreIA5Match'

-     EXACT_MR_NAME = 'caseExactIA5Match'

+     IGNORE_MR_NAME = b'caseIgnoreIA5Match'

+     EXACT_MR_NAME = b'caseExactIA5Match'

      mod = [(ldap.MOD_REPLACE, MATCHINGRULE, (IGNORE_MR_NAME, EXACT_MR_NAME))]

      topology_st.standalone.modify_s(HOMEDIRECTORY_INDEX, mod)

  
@@ -78,7 +78,7 @@ 

  def test_ticket48746_homeDirectory_mixed_value(topology_st):

      # Set a homedirectory value with mixed case

      name = "uid=%s1,%s" % (NEW_ACCOUNT, SUFFIX)

-     mod = [(ldap.MOD_REPLACE, 'homeDirectory', MIXED_VALUE)]

+     mod = [(ldap.MOD_REPLACE, 'homeDirectory', ensure_bytes(MIXED_VALUE))]

      topology_st.standalone.modify_s(name, mod)

  

  
@@ -111,7 +111,7 @@ 

      #     log.info("attach debugger")

      #     time.sleep(60)

  

-     EXACT_MR_NAME = 'caseExactIA5Match'

+     EXACT_MR_NAME = b'caseExactIA5Match'

      mod = [(ldap.MOD_REPLACE, MATCHINGRULE, (EXACT_MR_NAME))]

      topology_st.standalone.modify_s(HOMEDIRECTORY_INDEX, mod)

  

@@ -51,12 +51,12 @@ 

      log.info("##### Update the agreement of master1")

      m1 = topology_m2.ms["master1"]

      m1_m2_agmt = m1.agreement.list(suffix=DEFAULT_SUFFIX)[0].dn

-     topology_m2.ms["master1"].modify_s(m1_m2_agmt, [(ldap.MOD_REPLACE, 'nsDS5ReplicaTransportInfo', 'TLS')])

+     topology_m2.ms["master1"].modify_s(m1_m2_agmt, [(ldap.MOD_REPLACE, 'nsDS5ReplicaTransportInfo', b'TLS')])

  

      log.info("##### Update the agreement of master2")

      m2 = topology_m2.ms["master2"]

      m2_m1_agmt = m2.agreement.list(suffix=DEFAULT_SUFFIX)[0].dn

-     topology_m2.ms["master2"].modify_s(m2_m1_agmt, [(ldap.MOD_REPLACE, 'nsDS5ReplicaTransportInfo', 'TLS')])

+     topology_m2.ms["master2"].modify_s(m2_m1_agmt, [(ldap.MOD_REPLACE, 'nsDS5ReplicaTransportInfo', b'TLS')])

  

      time.sleep(1)

  
@@ -70,10 +70,10 @@ 

      log.info("\n######################### Set %s on %s ######################\n" %

               (version, name))

      server.simple_bind_s(DN_DM, PASSWORD)

-     server.modify_s(ENCRYPTION_DN, [(ldap.MOD_REPLACE, 'nsSSL3', 'off'),

-                                     (ldap.MOD_REPLACE, 'nsTLS1', 'on'),

-                                     (ldap.MOD_REPLACE, 'sslVersionMin', version),

-                                     (ldap.MOD_REPLACE, 'sslVersionMax', version)])

+     server.modify_s(ENCRYPTION_DN, [(ldap.MOD_REPLACE, 'nsSSL3', b'off'),

+                                     (ldap.MOD_REPLACE, 'nsTLS1', b'on'),

+                                     (ldap.MOD_REPLACE, 'sslVersionMin', ensure_bytes(version)),

+                                     (ldap.MOD_REPLACE, 'sslVersionMax', ensure_bytes(version))])

  

  

  def test_ticket48784(topology_m2):

@@ -8,11 +8,11 @@ 

  

  

  def _add_custom_schema(server):

-     attr_value = "( 10.0.9.2342.19200300.100.1.1 NAME 'customManager' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 X-ORIGIN 'user defined' )"

+     attr_value = b"( 10.0.9.2342.19200300.100.1.1 NAME 'customManager' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 X-ORIGIN 'user defined' )"

      mod = [(ldap.MOD_ADD, 'attributeTypes', attr_value)]

      server.modify_s('cn=schema', mod)

  

-     oc_value = "( 1.3.6.1.4.1.4843.2.1 NAME 'customPerson' SUP inetorgperson STRUCTURAL MAY (customManager) X-ORIGIN 'user defined' )"

+     oc_value = b"( 1.3.6.1.4.1.4843.2.1 NAME 'customPerson' SUP inetorgperson STRUCTURAL MAY (customManager) X-ORIGIN 'user defined' )"

      mod = [(ldap.MOD_ADD, 'objectclasses', oc_value)]

      server.modify_s('cn=schema', mod)

  
@@ -37,9 +37,9 @@ 

  

  def _modify_user(server):

      mod = [

-         (ldap.MOD_ADD, 'objectClass', ['customPerson']),

-         (ldap.MOD_ADD, 'sn', ['User']),

-         (ldap.MOD_ADD, 'customManager', ['cn=manager']),

+         (ldap.MOD_ADD, 'objectClass', [b'customPerson']),

+         (ldap.MOD_ADD, 'sn', [b'User']),

+         (ldap.MOD_ADD, 'customManager', [b'cn=manager']),

      ]

      server.modify("uid=testuser,ou=People,%s" % DEFAULT_SUFFIX, mod)

  

@@ -33,7 +33,7 @@ 

          })))

      except ldap.LDAPError as e:

          log.error('Failed to add user (%s): error (%s)' % (TEST_USER_DN,

-                                                            e.message['desc']))

+                                                            e.args[0]['desc']))

          raise e

  

  
@@ -62,7 +62,7 @@ 

              })))

          except ldap.LDAPError as e:

              log.error('Failed to add user (%s): error (%s)' % (USER_DN,

-                                                                e.message['desc']))

+                                                                e.args[0]['desc']))

              raise e

      return users_list

  
@@ -76,7 +76,7 @@ 

              topology_st.standalone.delete_s(user_dn)

          except ldap.LDAPError as e:

              log.error('Failed to delete user (%s): error (%s)' % (user_dn,

-                                                                   e.message['desc']))

+                                                                   e.args[0]['desc']))

              raise e

  

  
@@ -102,7 +102,7 @@ 

                                                        attr_value)])

      except ldap.LDAPError as e:

          log.error('Failed to change attr value (%s): error (%s)' % (attr_name,

-                                                                     e.message['desc']))

+                                                                     e.args[0]['desc']))

          raise e

  

      return attr_value_bck
@@ -168,7 +168,7 @@ 

      req_ctrl = SimplePagedResultsControl(True, size=page_size, cookie='')

      controls = [req_ctrl]

  

-     for ii in xrange(3):

+     for ii in range(3):

          log.info('Iteration %d' % ii)

          msgid = topology_st.standalone.search_ext(DEFAULT_SUFFIX,

                                                    ldap.SCOPE_SUBTREE,
@@ -225,8 +225,8 @@ 

  

      log.info("Search should fail with 'nsPagedSizeLimit = 5'"

               "and 'nsslapd-pagedsizelimit = 15' with 10 users")

-     conf_attr = '15'

-     user_attr = '5'

+     conf_attr = b'15'

+     user_attr = b'5'

      expected_rs = ldap.SIZELIMIT_EXCEEDED

      users_num = 10

      page_size = 10
@@ -260,8 +260,8 @@ 

  

      log.info("Search should pass with 'nsPagedSizeLimit = 15'"

               "and 'nsslapd-pagedsizelimit = 5' with 10 users")

-     conf_attr = '5'

-     user_attr = '15'

+     conf_attr = b'5'

+     user_attr = b'15'

      users_num = 10

      page_size = 10

      users_list = add_users(topology_st, users_num)

@@ -73,8 +73,8 @@ 

      BITW_SCHEMA_AT_2 = '( NAME \'testUserStatus\' DESC \'State of User account active/disabled\' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )'

      BITW_SCHEMA_OC_1 = '( NAME \'testperson\' SUP top STRUCTURAL MUST ( sn $ cn $ testUserAccountControl $ testUserStatus )' + \

                         ' MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) X-ORIGIN \'BitWise\' )'

-     topology_st.standalone.schema.add_schema('attributetypes', [BITW_SCHEMA_AT_1, BITW_SCHEMA_AT_2])

-     topology_st.standalone.schema.add_schema('objectClasses', BITW_SCHEMA_OC_1)

+     topology_st.standalone.schema.add_schema('attributetypes', [ensure_bytes(BITW_SCHEMA_AT_1), ensure_bytes(BITW_SCHEMA_AT_2)])

+     topology_st.standalone.schema.add_schema('objectClasses', ensure_bytes(BITW_SCHEMA_OC_1))

  

      topology_st.standalone.backend.create(TESTBASEDN, {BACKEND_NAME: TESTBACKEND_NAME})

      topology_st.standalone.mappingtree.create(TESTBASEDN, bename=TESTBACKEND_NAME, parent=None)

@@ -42,10 +42,7 @@ 

      topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

  

      # check there is no core

-     entry = topology_st.standalone.search_s(CONFIG_DN, ldap.SCOPE_BASE,

-                                             "(cn=config)", ['nsslapd-errorlog'])

-     assert entry

-     path = entry[0].getValue('nsslapd-errorlog').replace('errors', '')

+     path = topology_st.standalone.config.get_attr_val_utf8('nsslapd-errorlog').replace('errors', '')

      log.debug('Looking for a core file in: ' + path)

      cores = fnmatch.filter(os.listdir(path), 'core.*')

      assert len(cores) == 0

@@ -49,7 +49,7 @@ 

      hit = 0

      log.info('Replacing password: %s -> %s, which should %s' % (curpw, newpw, expstr))

      try:

-         server.modify_s(TESTDN, [(ldap.MOD_REPLACE, 'userPassword', newpw)])

+         server.modify_s(TESTDN, [(ldap.MOD_REPLACE, 'userPassword', ensure_bytes(newpw))])

      except Exception as e:

          log.info("Exception (expected): %s" % type(e).__name__)

          hit = 1
@@ -69,8 +69,8 @@ 

  

      log.info("Setting global password policy with password syntax.")

      topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

-     topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'passwordCheckSyntax', 'on'),

-                                                 (ldap.MOD_REPLACE, 'nsslapd-pwpolicy-local', 'on')])

+     topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'passwordCheckSyntax', b'on'),

+                                                 (ldap.MOD_REPLACE, 'nsslapd-pwpolicy-local', b'on')])

  

      config = topology_st.standalone.search_s(CONFIG_DN, ldap.SCOPE_BASE, 'cn=*')

      mintokenlen = config[0].getValue('passwordMinTokenLength')

@@ -53,13 +53,13 @@ 

          topo.ms[inst_name].simple_bind_s(DN_DM, PASSWORD)

          try:

              topo.ms[inst_name].plugins.enable(name=PLUGIN_ACCT_POLICY)

-             topo.ms[inst_name].modify_s(ACCPOL_DN, [(ldap.MOD_REPLACE, 'nsslapd-pluginarg0', ACCP_CONF)])

-             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'alwaysrecordlogin', 'yes')])

-             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'stateattrname', 'lastLoginTime')])

-             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'altstateattrname', 'createTimestamp')])

-             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'specattrname', 'acctPolicySubentry')])

-             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'limitattrname', 'accountInactivityLimit')])

-             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'accountInactivityLimit', '3600')])

+             topo.ms[inst_name].modify_s(ACCPOL_DN, [(ldap.MOD_REPLACE, 'nsslapd-pluginarg0', ensure_bytes(ACCP_CONF))])

+             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'alwaysrecordlogin', b'yes')])

+             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'stateattrname', b'lastLoginTime')])

+             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'altstateattrname', b'createTimestamp')])

+             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'specattrname', b'acctPolicySubentry')])

+             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'limitattrname', b'accountInactivityLimit')])

+             topo.ms[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'accountInactivityLimit', b'3600')])

          except ldap.LDAPError as e:

              log.error('Failed to configure {} plugin for inst-{} error: {}'.format(PLUGIN_ACCT_POLICY, inst_name, str(e)))

          topo.ms[inst_name].restart(timeout=10)
@@ -68,13 +68,13 @@ 

          topo.cs[inst_name].simple_bind_s(DN_DM, PASSWORD)

          try:

              topo.cs[inst_name].plugins.enable(name=PLUGIN_ACCT_POLICY)

-             topo.cs[inst_name].modify_s(ACCPOL_DN, [(ldap.MOD_REPLACE, 'nsslapd-pluginarg0', ACCP_CONF)])

-             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'alwaysrecordlogin', 'yes')])

-             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'stateattrname', 'lastLoginTime')])

-             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'altstateattrname', 'createTimestamp')])

-             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'specattrname', 'acctPolicySubentry')])

-             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'limitattrname', 'accountInactivityLimit')])

-             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'accountInactivityLimit', '3600')])

+             topo.cs[inst_name].modify_s(ACCPOL_DN, [(ldap.MOD_REPLACE, 'nsslapd-pluginarg0', ensure_bytes(ACCP_CONF))])

+             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'alwaysrecordlogin', b'yes')])

+             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'stateattrname', b'lastLoginTime')])

+             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'altstateattrname', b'createTimestamp')])

+             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'specattrname', b'acctPolicySubentry')])

+             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'limitattrname', b'accountInactivityLimit')])

+             topo.cs[inst_name].modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'accountInactivityLimit', b'3600')])

          except ldap.LDAPError as e:

              log.error('Failed to configure {} plugin for inst-{} error {}'.format(PLUGIN_ACCT_POLICY, inst_name, str(e)))

          topo.cs[inst_name].restart(timeout=10)

@@ -73,10 +73,10 @@ 

          log.error('CONSTRAINT VIOLATION ' + e.message['desc'])

      topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

  

-     assert (_check_status(topology_st, TEST_USER_DN, '- activated'))

+     assert (_check_status(topology_st, TEST_USER_DN, b'- activated'))

  

      time.sleep(int(INACTIVITY_LIMIT) + 5)

-     assert (_check_status(topology_st, TEST_USER_DN, '- inactivated (inactivity limit exceeded'))

+     assert (_check_status(topology_st, TEST_USER_DN, b'- inactivated (inactivity limit exceeded'))

  

  

  def test_ticket48956(topology_st):
@@ -88,14 +88,14 @@ 

      """

  

      topology_st.standalone.modify_s(ACCT_POLICY_PLUGIN_DN,

-                                     [(ldap.MOD_REPLACE, 'nsslapd-pluginarg0', ACCT_POLICY_CONFIG_DN)])

+                                     [(ldap.MOD_REPLACE, 'nsslapd-pluginarg0', ensure_bytes(ACCT_POLICY_CONFIG_DN))])

  

-     topology_st.standalone.modify_s(ACCT_POLICY_CONFIG_DN, [(ldap.MOD_REPLACE, 'alwaysrecordlogin', 'yes'),

-                                                             (ldap.MOD_REPLACE, 'stateattrname', 'lastLoginTime'),

-                                                             (ldap.MOD_REPLACE, 'altstateattrname', 'createTimestamp'),

-                                                             (ldap.MOD_REPLACE, 'specattrname', 'acctPolicySubentry'),

+     topology_st.standalone.modify_s(ACCT_POLICY_CONFIG_DN, [(ldap.MOD_REPLACE, 'alwaysrecordlogin', b'yes'),

+                                                             (ldap.MOD_REPLACE, 'stateattrname', b'lastLoginTime'),

+                                                             (ldap.MOD_REPLACE, 'altstateattrname', b'createTimestamp'),

+                                                             (ldap.MOD_REPLACE, 'specattrname', b'acctPolicySubentry'),

                                                              (ldap.MOD_REPLACE, 'limitattrname',

-                                                              'accountInactivityLimit')])

+                                                              b'accountInactivityLimit')])

  

      # Enable the plugins

      topology_st.standalone.plugins.enable(name=PLUGIN_ACCT_POLICY)

@@ -173,7 +173,7 @@ 

      if found:

          assert len(ents) == 1

          assert ents[0].hasAttr('homedirectory')

-         valueHome = "%s%d" % (HOMEHEAD, entry_ext)

+         valueHome = ensure_bytes("%s%d" % (HOMEHEAD, entry_ext))

          assert valueHome in ents[0].getValues('homedirectory')

      else:

          assert len(ents) == 0
@@ -210,7 +210,7 @@ 

      ents = topology.standalone.search_s(SUFFIX, ldap.SCOPE_SUBTREE, Filter)

      assert len(ents) == 1

      assert ents[0].hasAttr('homedirectory')

-     assert searchedHome in ents[0].getValues('homedirectory')

+     assert ensure_bytes(searchedHome) in ents[0].getValues('homedirectory')

      

      result = _find_next_notes(topology, Filter)

      log.info("result=%s" % result)
@@ -269,10 +269,10 @@ 

      entry_ext = 4

      

      log.info("\n\nindex homeDirectory in caseExactIA5Match and caseIgnoreIA5Match")

-     EXACTIA5_MR_NAME='caseExactIA5Match'

-     IGNOREIA5_MR_NAME='caseIgnoreIA5Match'

-     EXACT_MR_NAME='caseExactMatch'

-     IGNORE_MR_NAME='caseIgnoreMatch'

+     EXACTIA5_MR_NAME=b'caseExactIA5Match'

+     IGNOREIA5_MR_NAME=b'caseIgnoreIA5Match'

+     EXACT_MR_NAME=b'caseExactMatch'

+     IGNORE_MR_NAME=b'caseIgnoreMatch'

      mod = [(ldap.MOD_REPLACE, MATCHINGRULE, (EXACT_MR_NAME, IGNORE_MR_NAME, EXACTIA5_MR_NAME, IGNOREIA5_MR_NAME))]

      topology.standalone.modify_s(HOMEDIRECTORY_INDEX, mod)

  

@@ -39,7 +39,7 @@ 

  

      # Set the auto OC to an objectclass that does NOT allow memberOf

      B.modify_s('cn=MemberOf Plugin,cn=plugins,cn=config',

-                [(ldap.MOD_REPLACE, 'memberofAutoAddOC', 'referral')])

+                [(ldap.MOD_REPLACE, 'memberofAutoAddOC', b'referral')])

      B.restart(timeout=10)

  

      # add a few entries allowing memberof
@@ -87,7 +87,7 @@ 

      elements = B_RUV[0].getValues('nsds50ruv')

      ruv_before = 'ruv_before'

      for ruv in elements:

-         if 'replica 2' in ruv:

+         if b'replica 2' in ruv:

              ruv_before = ruv

  

      # add a group with members allowing memberof and members which don't
@@ -108,7 +108,7 @@ 

      elements = B_RUV[0].getValues('nsds50ruv')

      ruv_after = 'ruv_after'

      for ruv in elements:

-         if 'replica 2' in ruv:

+         if b'replica 2' in ruv:

              ruv_after = ruv

  

      log.info('ruv before fail: {}'.format(ruv_before))

@@ -55,7 +55,7 @@ 

          except subprocess.CalledProcessError as err:

              output = err.output

      log.info('output: {}'.format(output))

-     expected = "Successfully added task entry"

+     expected = b"Successfully added task entry"

      assert expected in output

      log_entry = topo.standalone.ds_error_log.match('.*Failed to get be backend.*')

      log.info('Error log out: {}'.format(log_entry))
@@ -96,7 +96,7 @@ 

          except subprocess.CalledProcessError as err:

              output = err.output

      log.info('output: {}'.format(output))

-     expected = "Successfully added task entry"

+     expected = b"Successfully added task entry"

      assert expected in output

      log_entry = topo.standalone.ds_error_log.match('.*Bad search filter.*')

      log.info('Error log out: {}'.format(log_entry))

@@ -28,7 +28,7 @@ 

          assert (entries[0].hasValue(attr))

      if entries[0].hasValue(attr):

          topology_st.standalone.log.info('Current value is %s' % entries[0].getValue(attr))

-         assert (entries[0].getValue(attr) == expected_value)

+         assert (entries[0].getValue(attr) == ensure_bytes(expected_value))

          

  def _update_db(topology_st):

      topology_st.standalone.add_s(
@@ -53,7 +53,7 @@ 

      

      # switch to wait mode

      topo.standalone.modify_s(ldbm_config,

-                                     [(ldap.MOD_REPLACE, txn_begin_flag, "on")])

+                                     [(ldap.MOD_REPLACE, txn_begin_flag, b"on")])

                                      # check default value is DB_TXN_NOWAIT

      _check_configured_value(topo, expected_value="on")

      _update_db(topo)
@@ -61,7 +61,7 @@ 

      

      # switch back to "normal mode"

      topo.standalone.modify_s(ldbm_config,

-                                     [(ldap.MOD_REPLACE, txn_begin_flag, "off")])

+                                     [(ldap.MOD_REPLACE, txn_begin_flag, b"off")])

      # check default value is DB_TXN_NOWAIT

      _check_configured_value(topo, expected_value="off")

      # tests we are able to update DB
@@ -69,7 +69,7 @@ 

      

      # check that settings are not reset by restart

      topo.standalone.modify_s(ldbm_config,

-                                     [(ldap.MOD_REPLACE, txn_begin_flag, "on")])

+                                     [(ldap.MOD_REPLACE, txn_begin_flag, b"on")])

                                      # check default value is DB_TXN_NOWAIT

      _check_configured_value(topo, expected_value="on")

      _update_db(topo)

@@ -36,24 +36,24 @@ 

              'telephonenumber': '555-555-5555'

          })))

      except ldap.LDAPError as e:

-             log.fatal('Failed to add test user: ' + e.message['desc'])

+             log.fatal('Failed to add test user: ' + e.args[0]['desc'])

              assert False

  

      for aci in acis:

          # Add ACI

          try:

              topo.standalone.modify_s(DEFAULT_SUFFIX,

-                           [(ldap.MOD_REPLACE, 'aci', aci)])

+                           [(ldap.MOD_REPLACE, 'aci', ensure_bytes(aci))])

  

          except ldap.LDAPError as e:

-             log.fatal('Failed to set aci: ' + aci + ': ' + e.message['desc'])

+             log.fatal('Failed to set aci: ' + aci + ': ' + e.args[0]['desc'])

              assert False

  

          # Set Anonymous Bind to test aci

          try:

              topo.standalone.simple_bind_s("", "")

          except ldap.LDAPError as e:

-             log.fatal('Failed to bind anonymously: ' + e.message['desc'])

+             log.fatal('Failed to bind anonymously: ' + e.args[0]['desc'])

              assert False

  

          # Search for entry - should not get any results
@@ -64,14 +64,14 @@ 

                  log.fatal('The entry was incorrectly returned')

                  assert False

          except ldap.LDAPError as e:

-             log.fatal('Failed to search anonymously: ' + e.message['desc'])

+             log.fatal('Failed to search anonymously: ' + e.args[0]['desc'])

              assert False

  

          # Set root DN Bind so we can update aci's

          try:

              topo.standalone.simple_bind_s(DN_DM, PASSWORD)

          except ldap.LDAPError as e:

-             log.fatal('Failed to bind anonymously: ' + e.message['desc'])

+             log.fatal('Failed to bind anonymously: ' + e.args[0]['desc'])

              assert False

  

      log.info("Test Passed")

@@ -30,7 +30,7 @@ 

                                        {'objectclass': 'top groupofnames extensibleObject'.split(),

                                         'cn': 'group'})))

      except ldap.LDAPError as e:

-         log.fatal('Failed to add group: error ' + e.message['desc'])

+         log.fatal('Failed to add group: error ' + e.args[0]['desc'])

          assert False

  

      # Add members to the group - set timeout
@@ -41,10 +41,10 @@ 

              topo.standalone.modify_s(group_dn,

                                        [(ldap.MOD_ADD,

                                          'member',

-                                         MEMBER_VAL)])

+                                         ensure_bytes(MEMBER_VAL))])

          except ldap.LDAPError as e:

              log.fatal('Failed to update group: member (%s) - error: %s' %

-                       (MEMBER_VAL, e.message['desc']))

+                       (MEMBER_VAL, e.args[0]['desc']))

              assert False

  

  def _check_memberof(topo, member=None, memberof=True, group_dn=None):
@@ -54,21 +54,21 @@ 

              USER_DN = ("uid=member%d,%s" % (idx, DEFAULT_SUFFIX))

              ent = topo.standalone.getEntry(USER_DN, ldap.SCOPE_BASE, "(objectclass=*)")

              if presence_flag:

-                 assert ent.hasAttr('memberof') and ent.getValue('memberof') == group_dn

+                 assert ent.hasAttr('memberof') and ent.getValue('memberof') == ensure_bytes(group_dn)

              else:

                  assert not ent.hasAttr('memberof')

          except ldap.LDAPError as e:

-             log.fatal('Failed to retrieve user (%s): error %s' % (USER_DN, e.message['desc']))

+             log.fatal('Failed to retrieve user (%s): error %s' % (USER_DN, e.args[0]['desc']))

              assert False

              

  def _check_memberof(topo, member=None, memberof=True, group_dn=None):

      ent = topo.standalone.getEntry(member, ldap.SCOPE_BASE, "(objectclass=*)")

      if memberof:

          assert group_dn

-         assert ent.hasAttr('memberof') and group_dn in ent.getValues('memberof')

+         assert ent.hasAttr('memberof') and ensure_bytes(group_dn) in ent.getValues('memberof')

      else:

          if ent.hasAttr('memberof'):

-             assert group_dn not in ent.getValues('memberof')

+             assert ensure_bytes(group_dn) not in ent.getValues('memberof')

  

              

  def test_ticket49184(topo):
@@ -92,7 +92,7 @@ 

                                            {'objectclass': 'top extensibleObject'.split(),

                                             'uid': 'member%d' % (idx)})))

          except ldap.LDAPError as e:

-             log.fatal('Failed to add user (%s): error %s' % (USER_DN, e.message['desc']))

+             log.fatal('Failed to add user (%s): error %s' % (USER_DN, e.args[0]['desc']))

              assert False

  

      # add all users in GROUP_DN_1 and checks each users is memberof GROUP_DN_1
@@ -115,17 +115,17 @@ 

      topo.standalone.modify_s(SUPER_GRP1,

                                        [(ldap.MOD_ADD,

                                          'member',

-                                         GROUP_DN_1),

+                                         ensure_bytes(GROUP_DN_1)),

                                          (ldap.MOD_ADD,

                                          'member',

-                                         GROUP_DN_2)])

+                                         ensure_bytes(GROUP_DN_2))])

      topo.standalone.modify_s(SUPER_GRP2,

                                        [(ldap.MOD_ADD,

                                          'member',

-                                         GROUP_DN_1),

+                                         ensure_bytes(GROUP_DN_1)),

                                          (ldap.MOD_ADD,

                                          'member',

-                                         GROUP_DN_2)])

+                                         ensure_bytes(GROUP_DN_2))])

      return

      topo.standalone.delete_s(GROUP_DN_2)

      for idx in range(1, 5):

@@ -39,7 +39,7 @@ 

              'objectclass': 'top organization'.split(),

              'o': 'hang.com'})))

      except ldap.LDAPError as e:

-         log.fatal('Failed to create 2nd suffix: error ' + e.message['desc'])

+         log.fatal('Failed to create 2nd suffix: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -54,7 +54,7 @@ 

                              'nsManagedRoleDefinition'],

              'cn': 'nsManagedDisabledRole'})))

      except ldap.LDAPError as e:

-         log.fatal('Failed to add managed role: error ' + e.message['desc'])

+         log.fatal('Failed to add managed role: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -66,7 +66,7 @@ 

              'cn': 'nsDisabledRole',

              'nsRoledn': 'cn=nsManagedDisabledRole,' + MY_SUFFIX})))

      except ldap.LDAPError as e:

-         log.fatal('Failed to add nested role: error ' + e.message['desc'])

+         log.fatal('Failed to add nested role: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -74,7 +74,7 @@ 

              'objectclass': ['top', 'nsContainer'],

              'cn': 'nsAccountInactivationTmp'})))

      except ldap.LDAPError as e:

-         log.fatal('Failed to add container: error ' + e.message['desc'])

+         log.fatal('Failed to add container: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -83,7 +83,7 @@ 

                              'ldapsubentry'],

              'nsAccountLock': 'true'})))

      except ldap.LDAPError as e:

-         log.fatal('Failed to add cos1: error ' + e.message['desc'])

+         log.fatal('Failed to add cos1: error ' + e.args[0]['desc'])

          assert False

  

      try:
@@ -95,7 +95,7 @@ 

              'cosSpecifier': 'nsRole',

              'cosAttribute': 'nsAccountLock operational'})))

      except ldap.LDAPError as e:

-         log.fatal('Failed to add cos2 : error ' + e.message['desc'])

+         log.fatal('Failed to add cos2 : error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -108,7 +108,7 @@ 

              'userpassword': 'password',

          })))

      except ldap.LDAPError as e:

-         log.fatal('Failed to add user: error ' + e.message['desc'])

+         log.fatal('Failed to add user: error ' + e.args[0]['desc'])

          assert False

  

      #
@@ -118,9 +118,9 @@ 

          topo.standalone.modify_s(USER_DN,

                                  [(ldap.MOD_ADD,

                                    'nsRoleDN',

-                                   'cn=nsManagedDisabledRole,' + MY_SUFFIX)])

+                                   ensure_bytes('cn=nsManagedDisabledRole,' + MY_SUFFIX))])

      except ldap.LDAPError as e:

-         log.fatal('Failed to disable user: error ' + e.message['desc'])

+         log.fatal('Failed to disable user: error ' + e.args[0]['desc'])

          assert False

  

      time.sleep(1)
@@ -133,14 +133,14 @@ 

      except ldap.UNWILLING_TO_PERFORM:

          log.info('Got error 53 as expected')

      except ldap.LDAPError as e:

-         log.fatal('Bind has unexpected error ' + e.message['desc'])

+         log.fatal('Bind has unexpected error ' + e.args[0]['desc'])

          assert False

  

      # Bind as root DN

      try:

          topo.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('RootDN Bind has unexpected error ' + e.message['desc'])

+         log.fatal('RootDN Bind has unexpected error ' + e.args[0]['desc'])

          assert False

  

      #

@@ -16,16 +16,16 @@ 

      logging.getLogger(__name__).setLevel(logging.INFO)

  log = logging.getLogger(__name__)

  

- DEFAULT_LEVEL = "16384"

- COMB_LEVEL = "73864"  # 65536+8192+128+8 = 73864

- COMB_DEFAULT_LEVEL = "90248"  # 65536+8192+128+8+16384 = 90248

+ DEFAULT_LEVEL = b"16384"

+ COMB_LEVEL = b"73864"  # 65536+8192+128+8 = 73864

+ COMB_DEFAULT_LEVEL = b"90248"  # 65536+8192+128+8+16384 = 90248

  

  

  def set_level(topo, level):

      ''' Set the error log level

      '''

      try:

-         topo.standalone.modify_s("cn=config", [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', level)])

+         topo.standalone.modify_s("cn=config", [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', ensure_bytes(level))])

          time.sleep(1)

      except ldap.LDAPError as e:

          log.fatal('Failed to set loglevel to %s - error: %s' % (level, str(e)))
@@ -66,7 +66,7 @@ 

      # Set connection logging

      set_level(topo, '8')

      level = get_level(topo)

-     if level != '8':

+     if level != b'8':

          log.fatal('Incorrect connection logging level: %s' % (level))

          assert False

  

@@ -3,7 +3,7 @@ 

  import os

  import ldap

  import time

- from lib389.utils import ds_is_older

+ from lib389.utils import *

  from lib389.topologies import topology_st as topo

  from lib389._constants import *

  from lib389.config import Config
@@ -40,7 +40,7 @@ 

          time.sleep(2)

          

  def update_member(server, member_dn, group_dn, op, sleep=True):

-     mod = [(op, 'member', member_dn)]

+     mod = [(op, 'member', ensure_bytes(member_dn))]

      server.modify_s(group_dn, mod)

      if sleep:

          time.sleep(2)
@@ -51,8 +51,8 @@ 

      MEMBEROF_PLUGIN_DN = ('cn=' + PLUGIN_MEMBER_OF + ',cn=plugins,cn=config')

      server.modify_s(MEMBEROF_PLUGIN_DN, [(ldap.MOD_REPLACE,

                                            'memberOfAllBackends',

-                                           'on'),

-                                           (ldap.MOD_REPLACE, 'memberOfAutoAddOC', 'nsMemberOf')])

+                                           b'on'),

+                                           (ldap.MOD_REPLACE, 'memberOfAutoAddOC', b'nsMemberOf')])

  

  

  def _find_memberof(server, member_dn, group_dn, find_result=True):
@@ -64,7 +64,7 @@ 

              server.log.info("!!!!!!! %s: memberof->%s" % (member_dn, val))

              server.log.info("!!!!!!! %s" % (val))

              server.log.info("!!!!!!! %s" % (group_dn))

-             if val.lower() == group_dn.lower():

+             if val.lower() == ensure_bytes(group_dn.lower()):

                  found = True

                  break

  

Another round of py3 fixes for tests in tickets/.

https://pagure.io/389-ds-base/issue/49588

Reviewed by: ???

rebased onto 69eeffb252a1964c8a1a4aa528a1fb2bb3fa9fc5

5 years ago

rebased onto a2cbef2

5 years ago

Pull-Request has been merged by vashirov

5 years ago

389-ds-base is moving from Pagure to Github. This means that new issues and pull requests
will be accepted only in 389-ds-base's github repository.

This pull request has been cloned to Github as issue and is available here:
- https://github.com/389ds/389-ds-base/issues/2869

If you want to continue to work on the PR, please navigate to the github issue,
download the patch from the attachments and file a new pull request.

Thank you for understanding. We apologize for all inconvenience.

Pull-Request has been closed by spichugi

3 years ago
Metadata
Changes Summary 40
+24 -24
file changed
dirsrvtests/tests/tickets/ticket47927_test.py
+14 -14
file changed
dirsrvtests/tests/tickets/ticket47931_test.py
+8 -8
file changed
dirsrvtests/tests/tickets/ticket47937_test.py
+3 -2
file changed
dirsrvtests/tests/tickets/ticket47953_test.py
+13 -12
file changed
dirsrvtests/tests/tickets/ticket47963_test.py
+5 -5
file changed
dirsrvtests/tests/tickets/ticket47970_test.py
+10 -10
file changed
dirsrvtests/tests/tickets/ticket47973_test.py
+2 -2
file changed
dirsrvtests/tests/tickets/ticket47976_test.py
+44 -44
file changed
dirsrvtests/tests/tickets/ticket47980_test.py
+16 -16
file changed
dirsrvtests/tests/tickets/ticket47981_test.py
+5 -5
file changed
dirsrvtests/tests/tickets/ticket48234_test.py
+3 -3
file changed
dirsrvtests/tests/tickets/ticket48270_test.py
+1 -1
file changed
dirsrvtests/tests/tickets/ticket48272_test.py
+19 -18
file changed
dirsrvtests/tests/tickets/ticket48294_test.py
+11 -10
file changed
dirsrvtests/tests/tickets/ticket48295_test.py
+8 -8
file changed
dirsrvtests/tests/tickets/ticket48312_test.py
+4 -4
file changed
dirsrvtests/tests/tickets/ticket48342_test.py
+4 -4
file changed
dirsrvtests/tests/tickets/ticket48362_test.py
+5 -5
file changed
dirsrvtests/tests/tickets/ticket48366_test.py
+3 -3
file changed
dirsrvtests/tests/tickets/ticket48497_test.py
+5 -5
file changed
dirsrvtests/tests/tickets/ticket48665_test.py
+3 -3
file changed
dirsrvtests/tests/tickets/ticket48745_test.py
+4 -4
file changed
dirsrvtests/tests/tickets/ticket48746_test.py
+6 -6
file changed
dirsrvtests/tests/tickets/ticket48784_test.py
+5 -5
file changed
dirsrvtests/tests/tickets/ticket48799_test.py
+9 -9
file changed
dirsrvtests/tests/tickets/ticket48808_test.py
+2 -2
file changed
dirsrvtests/tests/tickets/ticket48844_test.py
+1 -4
file changed
dirsrvtests/tests/tickets/ticket48891_test.py
+3 -3
file changed
dirsrvtests/tests/tickets/ticket48896_test.py
+14 -14
file changed
dirsrvtests/tests/tickets/ticket48944_test.py
+8 -8
file changed
dirsrvtests/tests/tickets/ticket48956_test.py
+6 -6
file changed
dirsrvtests/tests/tickets/ticket48973_test.py
+3 -3
file changed
dirsrvtests/tests/tickets/ticket49008_test.py
+2 -2
file changed
dirsrvtests/tests/tickets/ticket49072_test.py
+4 -4
file changed
dirsrvtests/tests/tickets/ticket49076_test.py
+6 -6
file changed
dirsrvtests/tests/tickets/ticket49095_test.py
+12 -12
file changed
dirsrvtests/tests/tickets/ticket49184_test.py
+11 -11
file changed
dirsrvtests/tests/tickets/ticket49192_test.py
+5 -5
file changed
dirsrvtests/tests/tickets/ticket49227_test.py
+5 -5
file changed
dirsrvtests/tests/tickets/ticket49386_test.py