#49637 Issue 49586 - Add py3 support to plugins test suite
Closed 3 years ago by spichugi. Opened 5 years ago by aadhikari.
aadhikari/389-ds-base plugin  into  master

@@ -33,13 +33,13 @@ 

      topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      try:

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

-         topology_st.standalone.modify_s(ACCPOL_DN, [(ldap.MOD_REPLACE, 'nsslapd-pluginarg0', ACCP_CONF)])

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

-         topology_st.standalone.modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'stateattrname', 'lastLoginTime')])

-         topology_st.standalone.modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'altstateattrname', 'createTimestamp')])

-         topology_st.standalone.modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'specattrname', 'acctPolicySubentry')])

-         topology_st.standalone.modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'limitattrname', 'accountInactivityLimit')])

-         topology_st.standalone.modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'accountInactivityLimit', '12')])

+         topology_st.standalone.modify_s(ACCPOL_DN, [(ldap.MOD_REPLACE, 'nsslapd-pluginarg0', ensure_bytes(ACCP_CONF))])

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

+         topology_st.standalone.modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'stateattrname', b'lastLoginTime')])

+         topology_st.standalone.modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'altstateattrname', b'createTimestamp')])

+         topology_st.standalone.modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'specattrname', b'acctPolicySubentry')])

+         topology_st.standalone.modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'limitattrname', b'accountInactivityLimit')])

+         topology_st.standalone.modify_s(ACCP_CONF, [(ldap.MOD_REPLACE, 'accountInactivityLimit', b'12')])

          topology_st.standalone.config.set('passwordexp', 'on')

          topology_st.standalone.config.set('passwordmaxage', '400')

          topology_st.standalone.config.set('passwordwarning', '1')
@@ -136,14 +136,14 @@ 

          if (bindusr == "DirMgr"):

              topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

              try:

-                 topology_st.standalone.modify_s(userdn, [(ldap.MOD_REPLACE, 'userPassword', newpasw)])

+                 topology_st.standalone.modify_s(userdn, [(ldap.MOD_REPLACE, 'userPassword', ensure_bytes(newpasw))])

              except ldap.LDAPError as e:

                  log.error('Unable to reset userPassword for user-{}'.format(userdn))

                  raise e

          elif (bindusr == "RegUsr"):

              topology_st.standalone.simple_bind_s(userdn, bindpw)

              try:

-                 topology_st.standalone.modify_s(userdn, [(ldap.MOD_REPLACE, 'userPassword', newpasw)])

+                 topology_st.standalone.modify_s(userdn, [(ldap.MOD_REPLACE, 'userPassword', ensure_bytes(newpasw))])

              except ldap.LDAPError as e:

                  log.error('Unable to reset userPassword for user-{}'.format(userdn))

                  raise e
@@ -173,7 +173,7 @@ 

              except subprocess.CalledProcessError as err:

                  output = err.output

          log.info('output: {}'.format(output))

-         assert expected in output

+         assert ensure_bytes(expected) in output

          nousrs = nousrs - 1

          time.sleep(1)

  
@@ -184,7 +184,7 @@ 

      log.info('Modify attribute value for a given DN')

      topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      try:

-         topology_st.standalone.modify_s(base_dn, [(ldap.MOD_REPLACE, attr_name, attr_val)])

+         topology_st.standalone.modify_s(base_dn, [(ldap.MOD_REPLACE, attr_name, ensure_bytes(attr_val))])

      except ldap.LDAPError as e:

          log.error('Failed to replace lastLoginTime attribute for user-{} {}'.format(userdn, e.message['desc']))

          assert False
@@ -217,7 +217,7 @@ 

          usrrdn = '{}{}'.format(userid, nousrs)

          userdn = 'uid={},{},{}'.format(usrrdn, subtree, suffix)

          try:

-             topology_st.standalone.modify_s(userdn, [(ldap.MOD_REPLACE, attr_name, new_attr_val)])

+             topology_st.standalone.modify_s(userdn, [(ldap.MOD_REPLACE, attr_name, ensure_bytes(new_attr_val))])

          except ldap.LDAPError as e:

              log.error('Failed to add/replace {} attribute to-{}, for user-{}'.format(attr_name, new_attr_val, userdn))

              raise e
@@ -235,7 +235,7 @@ 

          usrrdn = '{}{}'.format(userid, nousrs)

          userdn = 'uid={},{},{}'.format(usrrdn, subtree, suffix)

          try:

-             topology_st.standalone.modify_s(userdn, [(ldap.MOD_REPLACE, attr_name, attr_value)])

+             topology_st.standalone.modify_s(userdn, [(ldap.MOD_REPLACE, attr_name, ensure_bytes(attr_value))])

          except ldap.LDAPError as e:

              log.error('Failed to add/replace {} attribute to-{}, for user-{}'.format(attr_name, attr_value, userdn))

              raise e

@@ -24,7 +24,7 @@ 

      Enable dynamic plugins - makes things easier

      '''

      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'])

          assert False
@@ -40,7 +40,7 @@ 

      #

      try:

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

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

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

  

      except ldap.LDAPError as e:

          log.fatal('test_attr_uniqueness: Failed to configure plugin for "uid": error ' + e.message['desc'])
@@ -78,7 +78,7 @@ 

      #

      try:

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

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

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

  

      except ldap.LDAPError as e:

          log.fatal('test_attr_uniqueness: Failed to configure plugin for "mail": error ' + e.message['desc'])
@@ -105,9 +105,9 @@ 

      #

      try:

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

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

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

                                           (ldap.MOD_ADD, 'uniqueness-attribute-name',

-                                           'mailAlternateAddress')])

+                                           b'mailAlternateAddress')])

      except ldap.LDAPError as e:

          log.error('test_attr_uniqueness: Failed to reconfigure plugin for "mail mailAlternateAddress": error ' +

                    e.message['desc'])

@@ -58,8 +58,8 @@ 

          })))

      except ldap.ALREADY_EXISTS:

          try:

-             topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'dnaNextValue', '1'),

-                                                         (ldap.MOD_REPLACE, 'dnaMagicRegen', '-1')])

+             topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'dnaNextValue', b'1'),

+                                                         (ldap.MOD_REPLACE, 'dnaMagicRegen', b'-1')])

          except ldap.LDAPError as e:

              log.fatal('test_dna: Failed to set the DNA plugin: error ' + e.message['desc'])

              assert False
@@ -96,7 +96,7 @@ 

  

      # Test the magic regen value

      try:

-         topology_st.standalone.modify_s(USER1_DN, [(ldap.MOD_REPLACE, 'uidNumber', '-1')])

+         topology_st.standalone.modify_s(USER1_DN, [(ldap.MOD_REPLACE, 'uidNumber', b'-1')])

      except ldap.LDAPError as e:

          log.fatal('test_dna: Failed to set the magic reg value: error ' + e.message['desc'])

          assert False
@@ -116,7 +116,7 @@ 

      ################################################################################

  

      try:

-         topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'dnaMagicRegen', '-2')])

+         topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'dnaMagicRegen', b'-2')])

      except ldap.LDAPError as e:

          log.fatal('test_dna: Failed to set the magic reg value to -2: error ' + e.message['desc'])

          assert False
@@ -127,7 +127,7 @@ 

  

      # Test the magic regen value

      try:

-         topology_st.standalone.modify_s(USER1_DN, [(ldap.MOD_REPLACE, 'uidNumber', '-2')])

+         topology_st.standalone.modify_s(USER1_DN, [(ldap.MOD_REPLACE, 'uidNumber', b'-2')])

      except ldap.LDAPError as e:

          log.fatal('test_dna: Failed to set the magic reg value: error ' + e.message['desc'])

          assert False

@@ -37,84 +37,82 @@ 

      topology_st.standalone.modify_s(MEMBEROF_PLUGIN_DN,

                                      [(ldap.MOD_ADD,

                                        PLUGIN_MEMBEROF_GRP_ATTR,

-                                       values)])

+                                       ensure_bytes(values))])

  

  

  def _get_user_rdn(ext):

-     return "uid=%s_%s" % (USER_RDN, ext)

- 

+     return ensure_bytes("uid=%s_%s" % (USER_RDN, ext))

  

  def _get_user_dn(ext):

-     return "%s,%s" % (_get_user_rdn(ext), USERS_CONTAINER)

+     return ensure_bytes("%s,%s" % (ensure_str(_get_user_rdn(ext)), USERS_CONTAINER))

  

  

  def _get_group_rdn(ext):

-     return "cn=%s_%s" % (GROUP_RDN, ext)

+     return ensure_bytes("cn=%s_%s" % (GROUP_RDN, ext))

  

  

  def _get_group_dn(ext):

-     return "%s,%s" % (_get_group_rdn(ext), GROUPS_CONTAINER)

+     return ensure_bytes("%s,%s" % (ensure_str(_get_group_rdn(ext)), GROUPS_CONTAINER))

  

  

  def _create_user(topology_st, ext):

-     user_dn = _get_user_dn(ext)

+     user_dn = ensure_str(_get_user_dn(ext))

      topology_st.standalone.add_s(Entry((user_dn, {

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

-         'uid': _get_user_rdn(ext)

+         'uid': ensure_str(_get_user_rdn(ext))

      })))

      log.info("Create user %s" % user_dn)

-     return user_dn

+     return ensure_bytes(user_dn)

  

  

  def _delete_user(topology_st, ext):

-     user_dn = _get_user_dn(ext)

+     user_dn = ensure_str(_get_user_dn(ext))

      topology_st.standalone.delete_s(user_dn)

      log.info("Delete user %s" % user_dn)

  

  

  def _create_group(topology_st, ext):

-     group_dn = _get_group_dn(ext)

+     group_dn = ensure_str(_get_group_dn(ext))

      topology_st.standalone.add_s(Entry((group_dn, {

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

-         'ou': _get_group_rdn(ext)

+         'ou': ensure_str(_get_group_rdn(ext))

      })))

      log.info("Create group %s" % group_dn)

-     return group_dn

+     return ensure_bytes(group_dn)

  

  

  def _delete_group(topology_st, ext):

-     group_dn = _get_group_dn(ext)

+     group_dn = ensure_str(_get_group_dn(ext))

      topology_st.standalone.delete_s(group_dn)

      log.info("Delete group %s" % group_dn)

  

  

  def _check_memberattr(topology_st, entry, memberattr, value):

      log.info("Check %s.%s = %s" % (entry, memberattr, value))

-     entry = topology_st.standalone.getEntry(entry, ldap.SCOPE_BASE, '(objectclass=*)', [memberattr])

-     assert entry

-     if not entry.hasAttr(memberattr):

+     entry = topology_st.standalone.getEntry(ensure_str(entry), ldap.SCOPE_BASE, '(objectclass=*)', [memberattr])

+     if not entry.hasAttr(ensure_str(memberattr)):

          return False

  

      found = False

-     for val in entry.getValues(memberattr):

-         log.info("%s: %s" % (memberattr, val))

-         if value.lower() == val.lower():

+     for val in entry.getValues(ensure_str(memberattr)):

+         log.info("%s: %s" % (memberattr, ensure_str(val)))

+         if ensure_str(value.lower()) == ensure_str(val.lower()):

              found = True

              break

      return found

  

  

+ 

  def _check_memberof(topology_st, member, group):

      log.info("Lookup memberof from %s" % member)

-     entry = topology_st.standalone.getEntry(member, ldap.SCOPE_BASE, '(objectclass=*)', ['memberof'])

-     assert entry

+     entry = topology_st.standalone.getEntry(ensure_str(member), ldap.SCOPE_BASE, '(objectclass=*)', ['memberof'])

      if not entry.hasAttr('memberof'):

          return False

  

      found = False

      for val in entry.getValues('memberof'):

-         log.info("memberof: %s" % val)

-         if group.lower() == val.lower():

+         log.info("memberof: %s" % ensure_str(val))

+         if ensure_str(group.lower()) == ensure_str(val.lower()):

              found = True

              log.info("--> membership verified")

              break
@@ -128,7 +126,21 @@ 

      topology_st.standalone.modify_s(MEMBEROF_PLUGIN_DN,

                                      [(ldap.MOD_REPLACE,

                                        PLUGIN_TYPE,

-                                       'betxnpostoperation')])

+                                       b'betxnpostoperation')])

+     topology_st.standalone.restart()

+     ent = topology_st.standalone.getEntry(MEMBEROF_PLUGIN_DN, ldap.SCOPE_BASE, "(objectclass=*)", [PLUGIN_TYPE])

+     assert ent.hasAttr(PLUGIN_TYPE)

+     assert ent.getValue(PLUGIN_TYPE) == 'betxnpostoperation'

+ 

+ 

+ def text_memberof_683241_01(topology_st):

+     """

+     Test Modify the memberof plugin to use the new type

+     """

+     topology_st.standalone.modify_s(MEMBEROF_PLUGIN_DN,

+                                     [(ldap.MOD_REPLACE,

+                                       PLUGIN_TYPE,

+                                       b'betxnpostoperation')])

      topology_st.standalone.restart()

      ent = topology_st.standalone.getEntry(MEMBEROF_PLUGIN_DN, ldap.SCOPE_BASE, "(objectclass=*)", [PLUGIN_TYPE])

      assert ent.hasAttr(PLUGIN_TYPE)
@@ -143,8 +155,8 @@ 

      ent = topology_st.standalone.getEntry(MEMBEROF_PLUGIN_DN, ldap.SCOPE_BASE, "(objectclass=*)",

                                            [PLUGIN_MEMBEROF_GRP_ATTR])

      assert ent.hasAttr(PLUGIN_MEMBEROF_GRP_ATTR)

-     assert 'member'.lower() in [x.lower() for x in ent.getValues(PLUGIN_MEMBEROF_GRP_ATTR)]

-     assert 'uniqueMember'.lower() in [x.lower() for x in ent.getValues(PLUGIN_MEMBEROF_GRP_ATTR)]

+     assert b'member'.lower() in [x.lower() for x in ent.getValues(PLUGIN_MEMBEROF_GRP_ATTR)]

+     assert b'uniqueMember'.lower() in [x.lower() for x in ent.getValues(PLUGIN_MEMBEROF_GRP_ATTR)]

  

  

  def test_memberof_MultiGrpAttr_003(topology_st):
@@ -156,7 +168,7 @@ 

      topology_st.standalone.restart()

      ent = topology_st.standalone.getEntry(MEMBEROF_PLUGIN_DN, ldap.SCOPE_BASE, "(objectclass=*)", [PLUGIN_ENABLED])

      assert ent.hasAttr(PLUGIN_ENABLED)

-     assert ent.getValue(PLUGIN_ENABLED).lower() == 'on'

+     assert ent.getValue(PLUGIN_ENABLED).lower() == b'on'

  

  

  def test_memberof_MultiGrpAttr_004(topology_st):
@@ -172,11 +184,11 @@ 

      mods = [(ldap.MOD_ADD, 'member', memofenh1), (ldap.MOD_ADD, 'uniqueMember', memofenh2)]

      log.info("Update %s is memberof %s (member)" % (memofenh1, memofegrp1))

      log.info("Update %s is memberof %s (uniqueMember)" % (memofenh2, memofegrp1))

-     topology_st.standalone.modify_s(memofegrp1, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp1), mods)

  

      log.info("Update %s is memberof %s (member)" % (memofenh1, memofegrp2))

      log.info("Update %s is memberof %s (uniqueMember)" % (memofenh2, memofegrp2))

-     topology_st.standalone.modify_s(memofegrp2, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp2), mods)

  

      # assert enh1 is member of grp1 and grp2

      assert _check_memberof(topology_st, member=memofenh1, group=memofegrp1)
@@ -196,10 +208,9 @@ 

  

      memofegrp1 = _get_group_dn('memofegrp1')

      memofegrp2 = _get_group_dn('memofegrp2')

- 

      log.info("Update %s is no longer memberof %s (member)" % (memofenh1, memofegrp1))

      mods = [(ldap.MOD_DELETE, 'member', memofenh1)]

-     topology_st.standalone.modify_s(memofegrp1, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp1), mods)

  

      # assert enh1 is NOT member of grp1 and  is member of grp2

      assert not _check_memberof(topology_st, member=memofenh1, group=memofegrp1)
@@ -222,7 +233,7 @@ 

  

      log.info("Update %s is no longer memberof %s (uniqueMember)" % (memofenh1, memofegrp1))

      mods = [(ldap.MOD_DELETE, 'uniqueMember', memofenh2)]

-     topology_st.standalone.modify_s(memofegrp2, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp2), mods)

  

      # assert enh1 is NOT member of grp1 and  is member of grp2

      assert not _check_memberof(topology_st, member=memofenh1, group=memofegrp1)
@@ -245,11 +256,11 @@ 

  

      log.info("Update %s is no longer memberof %s (uniqueMember)" % (memofenh2, memofegrp1))

      mods = [(ldap.MOD_DELETE, 'uniqueMember', memofenh2)]

-     topology_st.standalone.modify_s(memofegrp1, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp1), mods)

  

      log.info("Update %s is no longer memberof %s (member)" % (memofenh1, memofegrp2))

      mods = [(ldap.MOD_DELETE, 'member', memofenh1)]

-     topology_st.standalone.modify_s(memofegrp2, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp2), mods)

  

      # assert enh1 is NOT member of grp1 and  is member of grp2

      assert not _check_memberof(topology_st, member=memofenh1, group=memofegrp1)
@@ -272,11 +283,11 @@ 

  

      mods = [(ldap.MOD_ADD, 'member', memofenh1)]

      log.info("Update %s is memberof %s (member)" % (memofenh1, memofegrp1))

-     topology_st.standalone.modify_s(memofegrp1, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp1), mods)

  

      mods = [(ldap.MOD_ADD, 'uniqueMember', memofenh2)]

      log.info("Update %s is memberof %s (uniqueMember)" % (memofenh2, memofegrp2))

-     topology_st.standalone.modify_s(memofegrp2, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp2), mods)

  

      # assert enh1 is member of grp1 and  is NOT member of grp2

      assert _check_memberof(topology_st, member=memofenh1, group=memofegrp1)
@@ -290,7 +301,7 @@ 

      topology_st.standalone.modify_s(MEMBEROF_PLUGIN_DN,

                                      [(ldap.MOD_DELETE,

                                        PLUGIN_MEMBEROF_GRP_ATTR,

-                                       ['uniqueMember'])])

+                                       [b'uniqueMember'])])

      topology_st.standalone.restart()

  

      log.info("Assert that this change of configuration did change the already set values")
@@ -336,7 +347,7 @@ 

      mods = [(ldap.MOD_ADD, 'member', memofenh1)]

      log.info("Try %s is memberof %s (member)" % (memofenh1, memofegrp1))

      try:

-         topology_st.standalone.modify_s(memofegrp1, mods)

+         topology_st.standalone.modify_s(ensure_str(memofegrp1), mods)

          log.error(

              "Should not be allowed to add %s member of %s (because it was already member)" % (memofenh1, memofegrp1))

          assert False
@@ -376,7 +387,7 @@ 

      mods = [(ldap.MOD_ADD, 'uniqueMember', memofenh2)]

      log.info("Try %s is memberof %s (member)" % (memofenh2, memofegrp2))

      try:

-         topology_st.standalone.modify_s(memofegrp2, mods)

+         topology_st.standalone.modify_s(ensure_str(memofegrp2), mods)

          log.error(

              "Should not be allowed to add %s member of %s (because it was already member)" % (memofenh2, memofegrp2))

          assert False
@@ -473,7 +484,7 @@ 

      mods = [(ldap.MOD_ADD, 'member', memofenh1), (ldap.MOD_ADD, 'uniqueMember', memofenh1)]

      log.info("Update %s is memberof %s (member)" % (memofenh1, memofegrp3))

      log.info("Update %s is memberof %s (uniqueMember)" % (memofenh1, memofegrp3))

-     topology_st.standalone.modify_s(memofegrp3, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp3), mods)

  

      # assert enh1 is member of

      #       - grp1 (member)
@@ -485,11 +496,11 @@ 

  

      mods = [(ldap.MOD_DELETE, 'member', memofenh1)]

      log.info("Update %s is not memberof %s (member)" % (memofenh1, memofegrp3))

-     topology_st.standalone.modify_s(memofegrp3, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp3), mods)

  

      mods = [(ldap.MOD_ADD, 'member', memofenh2)]

      log.info("Update %s is memberof %s (member)" % (memofenh2, memofegrp3))

-     topology_st.standalone.modify_s(memofegrp3, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp3), mods)

  

      # assert enh1 is member of

      #       - grp1 (member)
@@ -507,13 +518,13 @@ 

      assert _check_memberof(topology_st, member=memofenh2, group=memofegrp2)

      assert _check_memberof(topology_st, member=memofenh2, group=memofegrp3)

  

-     ent = topology_st.standalone.getEntry(memofegrp3, ldap.SCOPE_BASE, "(objectclass=*)", ['member', 'uniqueMember'])

+     ent = topology_st.standalone.getEntry(ensure_str(memofegrp3), ldap.SCOPE_BASE, "(objectclass=*)", ['member', 'uniqueMember'])

      assert ent.hasAttr('member')

-     assert memofenh1 not in ent.getValues('member')

-     assert memofenh2 in ent.getValues('member')

+     assert ensure_bytes(memofenh1) not in ent.getValues('member')

+     assert ensure_bytes(memofenh2) in ent.getValues('member')

      assert ent.hasAttr('uniqueMember')

-     assert memofenh1 in ent.getValues('uniqueMember')

-     assert memofenh2 not in ent.getValues('uniqueMember')

+     assert ensure_bytes(memofenh1) in ent.getValues('uniqueMember')

+     assert ensure_bytes(memofenh2) not in ent.getValues('uniqueMember')

  

      log.info("Checking final status")

      # assert enh1 is member of
@@ -593,15 +604,15 @@ 

      mods = [(ldap.MOD_ADD, 'member', dummy1), (ldap.MOD_ADD, 'uniqueMember', dummy2)]

      log.info("Update %s is memberof %s (member)" % (dummy1, memofegrp015))

      log.info("Update %s is memberof %s (uniqueMember)" % (dummy2, memofegrp015))

-     topology_st.standalone.modify_s(memofegrp015, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp015), mods)

  

-     ent = topology_st.standalone.getEntry(memofegrp015, ldap.SCOPE_BASE, "(objectclass=*)", ['member', 'uniqueMember'])

+     ent = topology_st.standalone.getEntry(ensure_str(memofegrp015), ldap.SCOPE_BASE, "(objectclass=*)", ['member', 'uniqueMember'])

      assert ent.hasAttr('member')

-     assert dummy1 in ent.getValues('member')

-     assert dummy2 not in ent.getValues('member')

+     assert ensure_bytes(dummy1) in ent.getValues('member')

+     assert ensure_bytes(dummy2) not in ent.getValues('member')

      assert ent.hasAttr('uniqueMember')

-     assert dummy1 not in ent.getValues('uniqueMember')

-     assert dummy2 in ent.getValues('uniqueMember')

+     assert ensure_bytes(dummy1) not in ent.getValues('uniqueMember')

+     assert ensure_bytes(dummy2) in ent.getValues('uniqueMember')

  

      # assert enh1 is member of

      #       - grp1 (member)
@@ -690,7 +701,7 @@ 

      mods = [(ldap.MOD_ADD, 'member', memofenh1), (ldap.MOD_ADD, 'uniqueMember', memofenh1)]

      log.info("Update %s is memberof %s (member)" % (memofenh1, memofegrp016))

      log.info("Update %s is memberof %s (uniqueMember)" % (memofenh1, memofegrp016))

-     topology_st.standalone.modify_s(memofegrp016, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp016), mods)

  

      # assert enh1 is member of

      #       - grp1 (member)
@@ -718,23 +729,23 @@ 

  

      mods = [(ldap.MOD_ADD, 'member', dummy1), ]

      log.info("Update %s is memberof %s (member)" % (dummy1, memofegrp016))

-     topology_st.standalone.modify_s(memofegrp016, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp016), mods)

  

-     ent = topology_st.standalone.getEntry(memofegrp016, ldap.SCOPE_BASE, "(objectclass=*)", ['member', 'uniqueMember'])

+     ent = topology_st.standalone.getEntry(ensure_str(memofegrp016), ldap.SCOPE_BASE, "(objectclass=*)", ['member', 'uniqueMember'])

      assert ent.hasAttr('member')

-     assert dummy1 in ent.getValues('member')

+     assert ensure_bytes(dummy1) in ent.getValues('member')

      assert ent.hasAttr('uniqueMember')

-     assert dummy1 not in ent.getValues('uniqueMember')

+     assert ensure_bytes(dummy1) not in ent.getValues('uniqueMember')

  

      mods = [(ldap.MOD_ADD, 'uniqueMember', dummy1), ]

      log.info("Update %s is memberof %s (uniqueMember)" % (dummy1, memofegrp016))

-     topology_st.standalone.modify_s(memofegrp016, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp016), mods)

  

-     ent = topology_st.standalone.getEntry(memofegrp016, ldap.SCOPE_BASE, "(objectclass=*)", ['member', 'uniqueMember'])

+     ent = topology_st.standalone.getEntry(ensure_str(memofegrp016), ldap.SCOPE_BASE, "(objectclass=*)", ['member', 'uniqueMember'])

      assert ent.hasAttr('member')

-     assert dummy1 in ent.getValues('member')

+     assert ensure_bytes(dummy1) in ent.getValues('member')

      assert ent.hasAttr('uniqueMember')

-     assert dummy1 in ent.getValues('uniqueMember')

+     assert ensure_bytes(dummy1) in ent.getValues('uniqueMember')

  

      # assert enh1 is member of

      #       - grp1 (member)
@@ -799,7 +810,7 @@ 

              - not grp017

  

          user1 is member of

-             - not grp1 

+             - not grp1

              - not grp2

              - not grp3

              - not grp015
@@ -889,7 +900,7 @@ 

      log.info("Update %s is memberof %s (member)" % (memofuser1, memofegrp017))

      log.info("Update %s is memberof %s (uniqueMember)" % (memofuser2, memofegrp017))

      log.info("Update %s is memberof %s (memberuid)" % (memofuser3, memofegrp017))

-     topology_st.standalone.modify_s(memofegrp017, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp017), mods)

  

      # assert enh1 is member of

      #       - grp1 (member)
@@ -922,7 +933,7 @@ 

      # assert user1 is member of

      #       - not grp1

      #       - not grp2

-     #       - not grp3 

+     #       - not grp3

      #       - not grp15

      #       - not grp16

      #       - grp17 (member)
@@ -936,7 +947,7 @@ 

      # assert user2 is member of

      #       - not grp1

      #       - not grp2

-     #       - not grp3 

+     #       - not grp3

      #       - not grp15

      #       - not grp16

      #       - grp17 (uniqueMember)
@@ -950,7 +961,7 @@ 

      # assert user3 is member of

      #       - not grp1

      #       - not grp2

-     #       - not grp3 

+     #       - not grp3

      #       - not grp15

      #       - not grp16

      #       - NOT grp17 (memberuid)
@@ -985,7 +996,7 @@ 

              - not grp017

  

          user1 is member of

-             - not grp1 

+             - not grp1

              - not grp2

              - not grp3

              - not grp015
@@ -1070,7 +1081,7 @@ 

      # assert user1 is member of

      #       - not grp1

      #       - not grp2

-     #       - not grp3 

+     #       - not grp3

      #       - not grp15

      #       - not grp16

      #       - grp17 (member)
@@ -1084,7 +1095,7 @@ 

      # assert user2 is member of

      #       - not grp1

      #       - not grp2

-     #       - not grp3 

+     #       - not grp3

      #       - not grp15

      #       - not grp16

      #       - grp17 (uniqueMember)
@@ -1098,7 +1109,7 @@ 

      # assert user3 is member of

      #       - not grp1

      #       - not grp2

-     #       - not grp3 

+     #       - not grp3

      #       - not grp15

      #       - not grp16

      #       - NOT grp17 (memberuid)
@@ -1118,12 +1129,12 @@ 

      log.info("Update %s is memberof %s (member)" % (memofuser1, memofegrp017))

      log.info("Update %s is memberof %s (uniqueMember)" % (memofuser1, memofegrp017))

      log.info("Update %s is memberof %s (memberuid)" % (memofuser1, memofegrp017))

-     topology_st.standalone.modify_s(memofegrp018, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp018), mods)

  

      # assert user1 is member of

      #       - not grp1

      #       - not grp2

-     #       - not grp3 

+     #       - not grp3

      #       - not grp15

      #       - not grp16

      #       - grp17 (member)
@@ -1139,12 +1150,12 @@ 

      mods = [(ldap.MOD_DELETE, 'member', memofuser1), (ldap.MOD_DELETE, 'uniqueMember', memofuser1)]

      log.info("Update %s is no longer memberof %s (member)" % (memofuser1, memofegrp018))

      log.info("Update %s is no longer memberof %s (uniqueMember)" % (memofuser1, memofegrp018))

-     topology_st.standalone.modify_s(memofegrp018, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp018), mods)

  

      # assert user1 is member of

      #       - not grp1

      #       - not grp2

-     #       - not grp3 

+     #       - not grp3

      #       - not grp15

      #       - not grp16

      #       - grp17 (member)
@@ -1158,10 +1169,10 @@ 

      assert not _check_memberof(topology_st, member=memofuser1, group=memofegrp018)

  

      # DEL user1, user2, user3, grp17

-     topology_st.standalone.delete_s(memofuser1)

-     topology_st.standalone.delete_s(memofuser2)

-     topology_st.standalone.delete_s(memofuser3)

-     topology_st.standalone.delete_s(memofegrp017)

+     topology_st.standalone.delete_s(ensure_str(memofuser1))

+     topology_st.standalone.delete_s(ensure_str(memofuser2))

+     topology_st.standalone.delete_s(ensure_str(memofuser3))

+     topology_st.standalone.delete_s(ensure_str(memofegrp017))

  

      # assert enh1 is member of

      #       - grp1 (member)
@@ -1198,7 +1209,7 @@ 

      Add user3 to grp19_3

      Add grp19_2 and grp_19_3 to grp19_1

  

-     At the beginning:        

+     At the beginning:

          enh1 is member of

              - grp1 (member)

              - not grp2
@@ -1278,26 +1289,26 @@ 

      # Create a group grp019_2 with user2 member

      memofegrp019_2 = _create_group(topology_st, 'memofegrp019_2')

      mods = [(ldap.MOD_ADD, 'member', memofuser2)]

-     topology_st.standalone.modify_s(memofegrp019_2, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp019_2), mods)

  

      # Create a group grp019_3 with user3 member

      memofegrp019_3 = _create_group(topology_st, 'memofegrp019_3')

      mods = [(ldap.MOD_ADD, 'member', memofuser3)]

-     topology_st.standalone.modify_s(memofegrp019_3, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp019_3), mods)

  

-     mods = [(ldap.MOD_ADD, 'objectClass', 'inetUser')]

-     topology_st.standalone.modify_s(memofegrp019_2, mods)

-     topology_st.standalone.modify_s(memofegrp019_3, mods)

+     mods = [(ldap.MOD_ADD, 'objectClass', b'inetUser')]

+     topology_st.standalone.modify_s(ensure_str(memofegrp019_2), mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp019_3), mods)

  

      # Create a group grp019_1 with memofegrp019_2, memofegrp019_3 member

      memofegrp019_1 = _create_group(topology_st, 'memofegrp019_1')

      mods = [(ldap.MOD_ADD, 'member', memofegrp019_2), (ldap.MOD_ADD, 'member', memofegrp019_3)]

-     topology_st.standalone.modify_s(memofegrp019_1, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp019_1), mods)

  

      # assert memofegrp019_1 is member of

      #       - not grp1

-     #       - not grp2 

-     #       - not grp3 

+     #       - not grp2

+     #       - not grp3

      #       - not grp15

      #       - not grp16

      #       - not grp018
@@ -1395,11 +1406,11 @@ 

      assert _check_memberof(topology_st, member=memofuser3, group=memofegrp019_3)

  

      # DEL user2, user3, grp19*

-     topology_st.standalone.delete_s(memofuser2)

-     topology_st.standalone.delete_s(memofuser3)

-     topology_st.standalone.delete_s(memofegrp019_1)

-     topology_st.standalone.delete_s(memofegrp019_2)

-     topology_st.standalone.delete_s(memofegrp019_3)

+     topology_st.standalone.delete_s(ensure_str(memofuser2))

+     topology_st.standalone.delete_s(ensure_str(memofuser3))

+     topology_st.standalone.delete_s(ensure_str(memofegrp019_1))

+     topology_st.standalone.delete_s(ensure_str(memofegrp019_2))

+     topology_st.standalone.delete_s(ensure_str(memofegrp019_3))

  

      # assert enh1 is member of

      #       - grp1 (member)
@@ -1437,7 +1448,7 @@ 

      Add grp[1-4] member of grp5

      Check user1 is member of grp[1-5]

  

-     At the beginning:        

+     At the beginning:

          enh1 is member of

              - grp1 (member)

              - not grp2
@@ -1505,20 +1516,20 @@ 

      memofegrp020_3 = _create_group(topology_st, 'memofegrp020_3')

      memofegrp020_4 = _create_group(topology_st, 'memofegrp020_4')

      memofegrp020_5 = _create_group(topology_st, 'memofegrp020_5')

-     mods = [(ldap.MOD_ADD, 'objectClass', 'inetUser')]

+     mods = [(ldap.MOD_ADD, 'objectClass', b'inetUser')]

      for grp in [memofegrp020_1, memofegrp020_2, memofegrp020_3, memofegrp020_4, memofegrp020_5]:

-         topology_st.standalone.modify_s(grp, mods)

+         topology_st.standalone.modify_s(ensure_str(grp), mods)

  

      # add user1 to grp[1-4] (uniqueMember)

      mods = [(ldap.MOD_ADD, 'uniqueMember', memofuser1)]

      for grp in [memofegrp020_1, memofegrp020_2, memofegrp020_3, memofegrp020_4]:

-         topology_st.standalone.modify_s(grp, mods)

+         topology_st.standalone.modify_s(ensure_str(grp), mods)

  

      # create grp5 with grp[1-4] as member

      mods = []

      for grp in [memofegrp020_1, memofegrp020_2, memofegrp020_3, memofegrp020_4]:

          mods.append((ldap.MOD_ADD, 'member', grp))

-     topology_st.standalone.modify_s(memofegrp020_5, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp020_5), mods)

  

      assert _check_memberof(topology_st, member=memofuser1, group=memofegrp020_1)

      assert _check_memberof(topology_st, member=memofuser1, group=memofegrp020_2)
@@ -1527,9 +1538,9 @@ 

      assert _check_memberof(topology_st, member=memofuser1, group=memofegrp020_5)

  

      # DEL user1, grp20*

-     topology_st.standalone.delete_s(memofuser1)

+     topology_st.standalone.delete_s(ensure_str(memofuser1))

      for grp in [memofegrp020_1, memofegrp020_2, memofegrp020_3, memofegrp020_4, memofegrp020_5]:

-         topology_st.standalone.delete_s(grp)

+         topology_st.standalone.delete_s(ensure_str(grp))

  

  

  def test_memberof_MultiGrpAttr_021(topology_st):
@@ -1542,7 +1553,7 @@ 

      Check that user1 is member of Grp1 and Grp5

      check that user* are members of Grp5

  

-     At the beginning:        

+     At the beginning:

          enh1 is member of

              - grp1 (member)

              - not grp2
@@ -1578,7 +1589,7 @@ 

             - not grp018

             - not grp20*

  

-         user1 is member of grp20_5 

+         user1 is member of grp20_5

          userX is uniquemember of grp20_X

          grp[1-4] are member of grp20_5

  
@@ -1638,15 +1649,15 @@ 

                (memofegrp020_2, memofuser2),

                (memofegrp020_3, memofuser3),

                (memofegrp020_4, memofuser4)]:

-         mods = [(ldap.MOD_ADD, 'objectClass', 'inetUser'), (ldap.MOD_ADD, 'uniqueMember', x[1])]

-         topology_st.standalone.modify_s(x[0], mods)

+         mods = [(ldap.MOD_ADD, 'objectClass', b'inetUser'), (ldap.MOD_ADD, 'uniqueMember', x[1])]

+         topology_st.standalone.modify_s(ensure_str(x[0]), mods)

  

      # create grp5 with grp[1-4] as member + user1

      memofegrp020_5 = _create_group(topology_st, 'memofegrp020_5')

      mods = [(ldap.MOD_ADD, 'member', memofuser1)]

      for grp in [memofegrp020_1, memofegrp020_2, memofegrp020_3, memofegrp020_4]:

          mods.append((ldap.MOD_ADD, 'member', grp))

-     topology_st.standalone.modify_s(memofegrp020_5, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp020_5), mods)

  

      # assert user[1-4] are member of grp20_5

      for user in [memofuser1, memofuser2, memofuser3, memofuser4]:
@@ -1722,7 +1733,7 @@ 

      add Grp5 as uniquemember of GrpX (this create a loop)

  

  

-     At the beginning:        

+     At the beginning:

          enh1 is member of

             - grp1 (member)

             - not grp2
@@ -1741,7 +1752,7 @@ 

             - not grp20*

  

  

-         user1 is member of grp20_5 

+         user1 is member of grp20_5

          userX is uniquemember of grp20_X

          grp[1-4] are member of grp20_5

  
@@ -1866,7 +1877,7 @@ 

                (memofegrp020_3, memofuser3),

                (memofegrp020_4, memofuser4)]:

          mods = [(ldap.MOD_ADD, 'member', x[1])]

-         topology_st.standalone.modify_s(x[0], mods)

+         topology_st.standalone.modify_s(ensure_str(x[0]), mods)

  

      # check that user[1-4] are 'member' and 'uniqueMember' of the grp20_[1-4]

      for x in [(memofegrp020_1, memofuser1),
@@ -1876,11 +1887,11 @@ 

          assert _check_memberattr(topology_st, x[0], 'uniqueMember', x[1])

          assert _check_memberattr(topology_st, x[0], 'member', x[1])

  

-     # add Grp[1-4] (uniqueMember) to grp5 

+     # add Grp[1-4] (uniqueMember) to grp5

      # it creates a membership loop !!!

      mods = [(ldap.MOD_ADD, 'uniqueMember', memofegrp020_5)]

      for grp in [memofegrp020_1, memofegrp020_2, memofegrp020_3, memofegrp020_4]:

-         topology_st.standalone.modify_s(grp, mods)

+         topology_st.standalone.modify_s(ensure_str(grp), mods)

  

      time.sleep(5)

      # assert user[1-4] are member of grp20_[1-4]
@@ -1957,14 +1968,14 @@ 

            /----member ---> G1 ---uniqueMember -------\

           /                                            V

      G5 ------------------------>member ----------  --->U1

-          | 

+          |

           |----member ---> G2 ---member/uniqueMember -> U2

           |<--uniquemember-/

           |

           |----member ---> G3 ---member/uniqueMember -> U3

-          |<--uniquemember-/                              

+          |<--uniquemember-/

           |----member ---> G4 ---member/uniqueMember -> U4

-          |<--uniquemember-/  

+          |<--uniquemember-/

      """

      for x in [memofegrp020_1, memofegrp020_2, memofegrp020_3, memofegrp020_4]:

          assert _check_memberattr(topology_st, memofegrp020_5, 'member', x)
@@ -2003,7 +2014,7 @@ 

  

  

  

-     At the beginning:        

+     At the beginning:

         enh1 is member of

             - grp1 (member)

             - not grp2
@@ -2029,14 +2040,14 @@ 

            /----member ---> G1 ---member/uniqueMember -\

           /<--uniquemember-                            V

      G5 ------------------------>member ----------  --->U1

-          | 

+          |

           |----member ---> G2 ---member/uniqueMember -> U2

           |<--uniquemember-/

           |

           |----member ---> G3 ---member/uniqueMember -> U3

-          |<--uniquemember-/                              

+          |<--uniquemember-/

           |----member ---> G4 ---member/uniqueMember -> U4

-          |<--uniquemember-/                               

+          |<--uniquemember-/

  

  

  
@@ -2045,14 +2056,14 @@ 

            /----member ---> G1 ---uniqueMember -------\

           /                                            V

      G5 ------------------------>member ----------  --->U1

-          | 

+          |

           |----member ---> G2 ---member/uniqueMember -> U2

           |<--uniquemember-/

           |

           |----member ---> G3 ---member/uniqueMember -> U3

-          |<--uniquemember-/                              

+          |<--uniquemember-/

           |----member ---> G4 ---member/uniqueMember -> U4

-          |<--uniquemember-/  

+          |<--uniquemember-/

  

      """

      memofenh1 = _get_user_dn('memofenh1')
@@ -2161,10 +2172,10 @@ 

  

      # DEL user1 as 'member' of grp20_1

      mods = [(ldap.MOD_DELETE, 'member', memofuser1)]

-     topology_st.standalone.modify_s(memofegrp020_1, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp020_1), mods)

  

      mods = [(ldap.MOD_DELETE, 'uniqueMember', memofegrp020_5)]

-     topology_st.standalone.modify_s(memofegrp020_1, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp020_1), mods)

  

      """

            /----member ---> G1 ---uniqueMember -------\
@@ -2189,14 +2200,14 @@ 

            /----member ---> G1 ---member/uniqueMember -\

           /                                             V

      G5 ------------------------>member ----------  --->U1

-          | 

+          |

           |----member ---> G2 ---member/uniqueMember -> U2

           |<--uniquemember-/

           |

           |----member ---> G3 ---member/uniqueMember -> U3

-          |<--uniquemember-/                              

+          |<--uniquemember-/

           |----member ---> G4 ---member/uniqueMember -> U4

-          |<--uniquemember-/  

+          |<--uniquemember-/

      """

      for x in [memofegrp020_1, memofegrp020_2, memofegrp020_3, memofegrp020_4]:

          assert _check_memberattr(topology_st, memofegrp020_5, 'member', x)
@@ -2231,33 +2242,33 @@ 

  

  def test_memberof_MultiGrpAttr_024(topology_st):

      """

-     At the beginning:        

+     At the beginning:

  

  

            /----member ---> G1 ---uniqueMember -------\

           /                                            V

      G5 ------------------------>member ----------  --->U1

-          | 

+          |

           |----member ---> G2 ---member/uniqueMember -> U2

           |<--uniquemember-/

           |

           |----member ---> G3 ---member/uniqueMember -> U3

-          |<--uniquemember-/                              

+          |<--uniquemember-/

           |----member ---> G4 ---member/uniqueMember -> U4

-          |<--uniquemember-/  

+          |<--uniquemember-/

  

      At the end:

            /----member ---> G1 ---member/uniqueMember -\

           /                                             V

      G5 ------------------------>member ----------  --->U1

-          | 

+          |

           |----member ---> G2 ---member/uniqueMember -> U2

           |<--uniquemember-/

           |

           |----member ---> G3 ---member/uniqueMember -> U3

-          |<--uniquemember-/                              

+          |<--uniquemember-/

           |----member ---> G4 ---member/uniqueMember -> U4

-          |<--uniquemember-/  

+          |<--uniquemember-/

      """

  

      memofuser1 = _get_user_dn('memofuser1')
@@ -2275,7 +2286,7 @@ 

  

      # ADD user1 as 'member' of grp20_1

      mods = [(ldap.MOD_ADD, 'member', memofuser1)]

-     topology_st.standalone.modify_s(memofegrp020_1, mods)

+     topology_st.standalone.modify_s(ensure_str(memofegrp020_1), mods)

      verify_post_024(topology_st, memofegrp020_1, memofegrp020_2, memofegrp020_3, memofegrp020_4, memofegrp020_5,

                      memofuser1, memofuser2, memofuser3, memofuser4)

  
@@ -2283,12 +2294,12 @@ 

  def verify_post_025(topology_st, memofegrp020_1, memofegrp020_2, memofegrp020_3, memofegrp020_4, memofegrp020_5,

                      memofuser1, memofuser2, memofuser3, memofuser4):

      """

-           /----member ---> G1 

-          /                                             

+           /----member ---> G1

+          /

      G5 ------------------------>member ----------  --->U1

-          | 

+          |

           |----member ---> G2

-          |----member ---> G3                            

+          |----member ---> G3

           |----member ---> G4

  

      """
@@ -2318,27 +2329,27 @@ 

  

  def test_memberof_MultiGrpAttr_025(topology_st):

      """

-     At the beginning:        

+     At the beginning:

  

  

            /----member ---> G1 ---member/uniqueMember -\

           /                                             V

      G5 ------------------------>member ----------  --->U1

-          | 

+          |

           |----member ---> G2 ---member/uniqueMember -> U2

           |<--uniquemember-/

           |

           |----member ---> G3 ---member/uniqueMember -> U3

-          |<--uniquemember-/                              

+          |<--uniquemember-/

           |----member ---> G4 ---member/uniqueMember -> U4

-          |<--uniquemember-/  

+          |<--uniquemember-/

      At the end:

-           /----member ---> G1 

-          /                                             

+           /----member ---> G1

+          /

      G5 ------------------------>member ----------  --->U1

-          | 

+          |

           |----member ---> G2

-          |----member ---> G3                            

+          |----member ---> G3

           |----member ---> G4

  

      """
@@ -2366,7 +2377,7 @@ 

                (memofegrp020_4, memofuser4)]:

          mods = [(ldap.MOD_DELETE, 'member', x[1]),

                  (ldap.MOD_DELETE, 'uniqueMember', x[1])]

-         topology_st.standalone.modify_s(x[0], mods)

+         topology_st.standalone.modify_s(ensure_str(x[0]), mods)

      """

            /----member ---> G1 

           /                                             
@@ -2383,7 +2394,7 @@ 

  

      for x in [memofegrp020_2, memofegrp020_3, memofegrp020_4]:

          mods = [(ldap.MOD_DELETE, 'uniqueMember', memofegrp020_5)]

-         topology_st.standalone.modify_s(x, mods)

+         topology_st.standalone.modify_s(ensure_str(x), mods)

      """

            /----member ---> G1 

           /                                             
@@ -2409,7 +2420,7 @@ 

          topology_st.standalone.modify_s(DN_CONFIG,

                                          [(ldap.MOD_REPLACE,

                                            'nsslapd-dynamic-plugins',

-                                           'on')])

+                                           b'on')])

      except ldap.LDAPError as e:

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

          assert False
@@ -2459,7 +2470,7 @@ 

          topology_st.standalone.modify_s(MEMBEROF_PLUGIN_DN,

                                          [(ldap.MOD_REPLACE,

                                            'memberofAutoAddOC',

-                                           'invalid123')])

+                                           b'invalid123')])

          log.fatal('Incorrectly added invalid objectclass!')

          assert False

      except ldap.UNWILLING_TO_PERFORM:
@@ -2475,7 +2486,7 @@ 

          topology_st.standalone.modify_s(MEMBEROF_PLUGIN_DN,

                                          [(ldap.MOD_REPLACE,

                                            'memberofAutoAddOC',

-                                           'inetuser')])

+                                           b'inetuser')])

      except ldap.LDAPError as e:

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

          assert False
@@ -2528,7 +2539,7 @@ 

          topology_st.standalone.modify_s(GROUP_DN,

                                          [(ldap.MOD_ADD,

                                            'member',

-                                           USER2_DN)])

+                                           ensure_bytes(USER2_DN))])

      except ldap.LDAPError as e:

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

          assert False

@@ -8,13 +8,14 @@ 

  #

  import logging

  import socket

- 

+ import ldap

  import pytest

+ from lib389.utils import *

  from lib389.tasks import *

  from lib389.tools import DirSrvTools

  from lib389.topologies import topology_st

  

- from lib389._constants import PLUGIN_ROOTDN_ACCESS, DN_CONFIG, DEFAULT_SUFFIX, DN_DM, PASSWORD

+ from lib389._constants import PLUGIN_ROOTDN_ACCESS, DN_CONFIG, DEFAULT_SUFFIX, DN_DM, PASSWORD, LOCALHOST_IP

  

  logging.getLogger(__name__).setLevel(logging.DEBUG)

  log = logging.getLogger(__name__)
@@ -47,10 +48,10 @@ 

      ACI = ('(target ="ldap:///cn=config")(targetattr = "*")(version 3.0' +

             ';acl "all access";allow (all)(userdn="ldap:///anyone");)')

      try:

-         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_ADD, 'aci', ACI)])

+         topology_st.standalone.modify_s(DN_CONFIG, [(ldap.MOD_ADD, 'aci', ensure_bytes(ACI))])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_init: Failed to add aci to config: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_init: Failed to add aci to config: error {}'

+                   .format(e))

          assert False

  

      #
@@ -61,17 +62,17 @@ 

                                                         'uid': 'user1',

                                                         'userpassword': PASSWORD})))

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_init: Failed to add test user ' + USER1_DN + ': error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_init: Failed to add test user ' + USER1_DN + ': error {}'

+                   .format(e))

          assert False

  

      #

      # 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('test_rootdn_init: Failed to set dynamic plugins: error ' + e.message['desc'])

+         log.fatal('test_rootdn_init: Failed to set dynamic plugins: error {}'.format(e))

          assert False

  

      #
@@ -99,11 +100,11 @@ 

          close_time = '1800'

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD, 'rootdn-open-time', open_time),

-                                                     (ldap.MOD_ADD, 'rootdn-close-time', close_time)])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD, 'rootdn-open-time', ensure_bytes(open_time)),

+                                                     (ldap.MOD_ADD, 'rootdn-close-time', ensure_bytes(close_time))])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_specific_time: Failed to set (blocking) open/close times: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_specific_time: Failed to set (blocking) open/close times: error {}'

+                   .format(e))

          assert False

  

      #
@@ -129,36 +130,36 @@ 

          assert False

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', '0000'),

-                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', '2359')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', b'0000'),

+                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', b'2359')])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_specific_time: Failed to set (open) open/close times: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_specific_time: Failed to set (open) open/close times: error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_specific_time: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_specific_time: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      #

      # Cleanup - undo the changes we made so the next test has a clean slate

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_DELETE, 'rootdn-open-time', None),

-                                                     (ldap.MOD_DELETE, 'rootdn-close-time', None)])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_DELETE, 'rootdn-open-time', ensure_bytes(None)),

+                                                     (ldap.MOD_DELETE, 'rootdn-close-time', ensure_bytes(None))])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_specific_time: Failed to delete open and close time: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_specific_time: Failed to delete open and close time: error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_specific_time: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_specific_time: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      log.info('test_rootdn_access_specific_time: PASSED')
@@ -194,10 +195,10 @@ 

      #

      try:

          topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed',

-                                                      deny_days)])

+                                                      ensure_bytes(deny_days))])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_day_of_week: Failed to set the deny days: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_day_of_week: Failed to set the deny days: error {}'

+                   .format(e))

          assert False

  

      #
@@ -224,34 +225,34 @@ 

  

      try:

          topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed',

-                                                      allow_days)])

+                                                      ensure_bytes(allow_days))])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_day_of_week: Failed to set the deny days: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_day_of_week: Failed to set the deny days: error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_day_of_week: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_day_of_week: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      #

      # Cleanup - undo the changes we made so the next test has a clean slate

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_DELETE, 'rootdn-days-allowed', None)])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_DELETE, 'rootdn-days-allowed', ensure_bytes(None))])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_day_of_week: Failed to set rootDN plugin config: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_day_of_week: Failed to set rootDN plugin config: error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_day_of_week: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_day_of_week: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      log.info('test_rootdn_access_day_of_week: PASSED')
@@ -259,32 +260,32 @@ 

  

  def test_rootdn_access_denied_ip(topology_st):

      '''

-     Test denied IP feature - we can just test denying 127.0.01

+     Test denied IP feature - we can just test denying 127.0.0.1

      '''

  

      log.info('Running test_rootdn_access_denied_ip...')

- 

      try:

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

                                                       'rootdn-deny-ip',

-                                                      '127.0.0.1'),

+                                                      b'127.0.0.1'),

                                                      (ldap.MOD_ADD,

                                                       'rootdn-deny-ip',

-                                                      '::1')])

+                                                      b'::1')])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_denied_ip: Failed to set rootDN plugin config: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_denied_ip: Failed to set rootDN plugin config: error {}'

+                   .format(e))

          assert False

  

      #

      # Bind as Root DN - should fail

      #

      try:

-         topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

+         conn = ldap.initialize('ldap://{}:{}'.format(LOCALHOST_IP, topology_st.standalone.port))

+         topology_st.standalone.restart()

+         conn.simple_bind_s(DN_DM, PASSWORD)

          succeeded = True

      except ldap.LDAPError as e:

          succeeded = False

- 

      if succeeded:

          log.fatal('test_rootdn_access_denied_ip: Root DN was incorrectly able to bind')

          assert False
@@ -299,17 +300,17 @@ 

          assert False

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-ip', '255.255.255.255')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-ip', b'255.255.255.255')])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_denied_ip: Failed to set rootDN plugin config: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_denied_ip: Failed to set rootDN plugin config: error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_denied_ip: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_denied_ip: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      #
@@ -318,15 +319,15 @@ 

      try:

          topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_DELETE, 'rootdn-deny-ip', None)])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_denied_ip: Failed to set rootDN plugin config: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_denied_ip: Failed to set rootDN plugin config: error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_denied_ip: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_denied_ip: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      log.info('test_rootdn_access_denied_ip: PASSED')
@@ -343,14 +344,14 @@ 

      try:

          topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,

                                                       'rootdn-deny-host',

-                                                      hostname)])

+                                                      ensure_bytes(hostname))])

          if localhost != hostname:

              topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,

                                                           'rootdn-deny-host',

-                                                          localhost)])

+                                                          ensure_bytes(localhost))])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_denied_host: Failed to set deny host: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_denied_host: Failed to set deny host: error {}'

+                   .format(e))

          assert False

  

      #
@@ -376,17 +377,17 @@ 

          assert False

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-host', 'i.dont.exist.com')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-host', b'i.dont.exist.com')])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_denied_host: Failed to set rootDN plugin config: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_denied_host: Failed to set rootDN plugin config: error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_denied_host: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_denied_host: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      #
@@ -395,15 +396,15 @@ 

      try:

          topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_DELETE, 'rootdn-deny-host', None)])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_denied_host: Failed to set rootDN plugin config: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_denied_host: Failed to set rootDN plugin config: error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_denied_host: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_denied_host: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      log.info('test_rootdn_access_denied_host: PASSED')
@@ -420,10 +421,12 @@ 

      # Set allowed host to an unknown host - blocks the Root DN

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-ip', '255.255.255.255')])

+         conn = ldap.initialize('ldap://{}:{}'.format(LOCALHOST_IP, topology_st.standalone.port))

+         topology_st.standalone.restart()

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-ip', b'255.255.255.255')])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_allowed_ip: Failed to set allowed host: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_allowed_ip: Failed to set allowed host: error {}'

+                   .format(e))

          assert False

  

      #
@@ -449,18 +452,20 @@ 

          assert False

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-ip', '127.0.0.1'),

-                                                     (ldap.MOD_ADD, 'rootdn-allow-ip', '::1')])

+         #ipv4 = socket.gethostbyname(socket.gethostname())

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-ip', b'127.0.0.1'),

+                                                     (ldap.MOD_ADD, 'rootdn-allow-ip', b'::1')])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_allowed_ip: Failed to set allowed host: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_allowed_ip: Failed to set allowed host: error {}'

+                   .format(e))

          assert False

  

      try:

-         topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

+         #topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

+         conn.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_allowed_ip: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_allowed_ip: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      #
@@ -469,15 +474,15 @@ 

      try:

          topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_DELETE, 'rootdn-allow-ip', None)])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_allowed_ip: Failed to delete(rootdn-allow-ip): error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_allowed_ip: Failed to delete(rootdn-allow-ip): error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_allowed_ip: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_allowed_ip: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      log.info('test_rootdn_access_allowed_ip: PASSED')
@@ -494,10 +499,10 @@ 

      # Set allowed host to an unknown host - blocks the Root DN

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-host', 'i.dont.exist.com')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-host', b'i.dont.exist.com')])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_allowed_host: Failed to set allowed host: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_allowed_host: Failed to set allowed host: error {}'

+                   .format(e))

          assert False

  

      #
@@ -530,21 +535,21 @@ 

                                                       None)])

          topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,

                                                       'rootdn-allow-host',

-                                                      localhost)])

+                                                      ensure_bytes(localhost))])

          if hostname != localhost:

              topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,

                                                           'rootdn-allow-host',

-                                                          hostname)])

+                                                          ensure_bytes(hostname))])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_allowed_host: Failed to set allowed host: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_allowed_host: Failed to set allowed host: error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_allowed_host: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_allowed_host: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      #
@@ -553,15 +558,15 @@ 

      try:

          topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_DELETE, 'rootdn-allow-host', None)])

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_allowed_host: Failed to delete(rootdn-allow-host): error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_allowed_host: Failed to delete(rootdn-allow-host): error {}'

+                   .format(e))

          assert False

  

      try:

          topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

      except ldap.LDAPError as e:

-         log.fatal('test_rootdn_access_allowed_host: Root DN bind failed unexpectedly failed: error ' +

-                   e.message['desc'])

+         log.fatal('test_rootdn_access_allowed_host: Root DN bind failed unexpectedly failed: error {}'

+                   .format(e))

          assert False

  

      log.info('test_rootdn_access_allowed_host: PASSED')
@@ -583,39 +588,39 @@ 

      # Test rootdn-open-time

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', '0000')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', b'0000')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to just add "rootdn-open-time" ')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD, 'rootdn-open-time', '0000'),

-                                                     (ldap.MOD_ADD, 'rootdn-open-time', '0001')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD, 'rootdn-open-time', b'0000'),

+                                                     (ldap.MOD_ADD, 'rootdn-open-time', b'0001')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add multiple "rootdn-open-time"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', '-1'),

-                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', '0000')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', b'-1'),

+                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', b'0000')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-open-time: -1"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', '2400'),

-                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', '0000')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', b'2400'),

+                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', b'0000')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-open-time: 2400"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', 'aaaaa'),

-                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', '0000')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', b'aaaaa'),

+                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', b'0000')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-open-time: aaaaa"')

          assert False

      except ldap.LDAPError:
@@ -625,39 +630,39 @@ 

      # Test rootdn-close-time

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-close-time', '0000')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-close-time', b'0000')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add just "rootdn-close-time"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD, 'rootdn-close-time', '0000'),

-                                                     (ldap.MOD_ADD, 'rootdn-close-time', '0001')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD, 'rootdn-close-time', b'0000'),

+                                                     (ldap.MOD_ADD, 'rootdn-close-time', b'0001')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add multiple "rootdn-open-time"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', '0000'),

-                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', '-1')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', b'0000'),

+                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', b'-1')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-close-time: -1"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', '0000'),

-                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', '2400')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', b'0000'),

+                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', b'2400')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-close-time: 2400"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', '0000'),

-                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', 'aaaaa')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-open-time', b'0000'),

+                                                     (ldap.MOD_REPLACE, 'rootdn-close-time', b'aaaaa')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-close-time: aaaaa"')

          assert False

      except ldap.LDAPError:
@@ -667,36 +672,36 @@ 

      # Test days allowed

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD, 'rootdn-days-allowed', 'Mon'),

-                                                     (ldap.MOD_ADD, 'rootdn-days-allowed', 'Tue')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD, 'rootdn-days-allowed', b'Mon'),

+                                                     (ldap.MOD_ADD, 'rootdn-days-allowed', b'Tue')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add two "rootdn-days-allowed"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed', 'Mon1')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed', b'Mon1')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-days-allowed: Mon1"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed', 'Tue, Mon1')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed', b'Tue, Mon1')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-days-allowed: Tue, Mon1"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed', 'm111m')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed', b'm111m')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-days-allowed: 111"')

          assert False

      except ldap.LDAPError:

          pass

  

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed', 'Gur')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed', b'Gur')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-days-allowed: Gur"')

          assert False

      except ldap.LDAPError:
@@ -706,7 +711,7 @@ 

      # Test allow ips

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-ip', '12.12.Z.12')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-ip', b'12.12.Z.12')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-allow-ip: 12.12.Z.12"')

          assert False

      except ldap.LDAPError:
@@ -716,7 +721,7 @@ 

      # Test deny ips

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-ip', '12.12.Z.12')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-ip', b'12.12.Z.12')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-deny-ip: 12.12.Z.12"')

          assert False

      except ldap.LDAPError:
@@ -726,7 +731,7 @@ 

      # Test allow hosts

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-host', 'host._.com')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-host', b'host._.com')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-allow-host: host._.com"')

          assert False

      except ldap.LDAPError:
@@ -736,7 +741,7 @@ 

      # Test deny hosts

      #

      try:

-         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-host', 'host.####.com')])

+         topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-host', b'host.####.com')])

          log.fatal('test_rootdn_config_validate: Incorrectly allowed to add invalid "rootdn-deny-host: host.####.com"')

          assert False

      except ldap.LDAPError:

@@ -88,6 +88,7 @@ 

  

  # So uh  .... localhost.localdomain doesn't always exist. Stop. Using. It.

  # LOCALHOST = "localhost.localdomain"

+ LOCALHOST_IP = "127.0.0.1"

  LOCALHOST = "localhost"

  LOCALHOST_SHORT = "localhost"

  DEFAULT_PORT = 389

Description: Added py3 support by explicitly changing strings to bytes.
Added code for creating a new connection to make ldap communicate on localhost.

https://pagure.io/389-ds-base/issue/49586

rebased onto 219c2216ef041ab2ead5c0df9795fac95733667d

5 years ago

I think a more efficient way to fix the test suite is to fix the functions: _create_user, _create_group, etc. So they return the Bytes type values.
Fixing every variable through the tests seems not very efficient.

@spichugi yes mate that make sense, but it if we change that in the function it will return values in bytes but it will fail in https://pagure.io/389-ds-base/pull-request/49637#_4,74 as it will take 1st arg as string and won't take bytes.

@spichugi yes mate that make sense, but it if we change that in the function it will return values in bytes but it will fail in https://pagure.io/389-ds-base/pull-request/49637#_4,74 as it will take 1st arg as string and won't take bytes.

The appearance of this thing is much less common than the one you've changed.
You can use 'ensure_str' there.

rebased onto 10878617828a64715670dbb1758524d8cbcc077d

5 years ago

rebased onto a174d537f85c896b2b9e6faa1759e678b58e102b

5 years ago

It doesn't make sense. You can leave None as it is because it has NoneType anyway.

As I mentioned before, it is better to change it in one place: in the return of the function. So in this case, _get_group_dn should return bytes.

rebased onto fae125ee766f3fe133acdf7b8bf99902de02067b

5 years ago

rebased onto 248642d366f36d63a8b9f30cab1f499c8d43b0ad

5 years ago

Ok, I see why we can remove the assert.
When we do 'assert Entry', it returns Falso when there is no data.
https://pagure.io/389-ds-base/blob/master/f/src/lib389/lib389/_entry.py#_82

So it doesn't make sense to have the function in the test suite.

Currently, we generate parameters for the instance here:
https://pagure.io/389-ds-base/blob/master/f/src/lib389/lib389/utils.py#_850

We don't use constants as PORT_STANDALONE anymore. I think we should use all the info from DirSrv() object instance itself - like topology_st.standalone.port

Beside that, LGTM. The test suites pass.

rebased onto e306a2d

5 years ago

Pull-Request has been merged by spichugi

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/2696

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