Esempio n. 1
0
 def test_search_string_guid(self):
     self.delete_at_teardown.append(
         add_user(self.connection,
                  testcase_id,
                  'sea-16',
                  attributes={'givenName': testcase_id + 'givenname-16'}))
     if test_server_type == 'EDIR':
         status, result, response, request = get_response_values(
             self.connection.search(search_base=test_base,
                                    search_filter='(givenname=' +
                                    testcase_id + 'givenname-16)',
                                    attributes=[
                                        test_name_attr, 'sn', 'guid'
                                    ]), self.connection)
     elif test_server_type == 'AD':  # not tested on AD yet
         status, result, response, request = get_response_values(
             self.connection.search(search_base=test_base,
                                    search_filter='(givenname=' +
                                    testcase_id + 'givenname-16)',
                                    attributes=[
                                        test_name_attr, 'sn', 'objectGuid'
                                    ]), self.connection)
     else:  # not tested on other kind of servers
         return
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(response), 1)
     if test_server_type == 'EDIR':
         if self.connection.check_names:
             status, result, response, request = get_response_values(
                 self.connection.search(
                     search_base=test_base,
                     search_filter='(guid=' +
                     response[0]['attributes']['guid'] + ')',
                     attributes=[test_name_attr, 'sn']), self.connection)
         else:
             status, result, response, request = get_response_values(
                 self.connection.search(
                     search_base=test_base,
                     search_filter='(guid=' + escape_bytes(
                         response[0]['raw_attributes']['guid'][0]) + ')',
                     attributes=[test_name_attr, 'sn']), self.connection)
     elif test_server_type == 'AD':  # not tested on AD yet
         status, result, response, request = get_response_values(
             self.connection.search(
                 search_base=test_base,
                 search_filter='(objectguid=' +
                 response[0]['attributes']['objectguid'] + ')',
                 attributes=[test_name_attr, 'sn']), self.connection)
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(response), 1)
     if test_server_type == 'EDIR':
         self.assertEqual(response[0]['attributes'][test_name_attr][0],
                          testcase_id + 'sea-16')
     elif test_server_type == 'AD':
         self.assertEqual(response[0]['attributes'][test_name_attr],
                          testcase_id + 'sea-16')
Esempio n. 2
0
 def test_abort_transaction(self):
     if test_server_type == 'EDIR' and not self.connection.strategy.pooled and not self.connection.strategy.no_real_dsa:
         self.delete_at_teardown.append(
             add_user(self.connection, testcase_id, 'user-1'))
         transaction_control = self.connection.extend.novell.start_transaction(
         )
         self.connection.modify(
             self.delete_at_teardown[0][0],
             {'givenName': (MODIFY_REPLACE, ['user-1b'])},
             controls=[transaction_control])
         self.connection.modify(self.delete_at_teardown[0][0],
                                {'sn': (MODIFY_REPLACE, ['sn-user-1b'])},
                                controls=[transaction_control])
         self.connection.extend.novell.end_transaction(
             commit=False, controls=[transaction_control])
         status, result, response, request = get_response_values(
             self.connection.search(self.delete_at_teardown[0][0],
                                    '(objectclass=*)',
                                    attributes=['givenName', 'sn']),
             self.connection)
         if response:
             # self.assertEqual(response[0]['attributes']['givenName'][0], 'user-1b')
             self.assertEqual(response[0]['attributes']['sn'][0], 'user-1')
         else:
             self.assertFalse(True,
                              self.delete_at_teardown[0][0] + ' not found')
Esempio n. 3
0
 def test_search_string_guid_with_backslash(self):
     ldap_escaped = '\\7e\\18\\2a\\9c\\60\\5c\\61\\43\\af\\f5\\89\\f5\\e6\\d8\\45\\6d'
     ldap_bytes = ldap_escape_to_bytes(ldap_escaped)
     self.delete_at_teardown.append(
         add_user(self.connection,
                  testcase_id,
                  'sea-17',
                  attributes={
                      'givenName': testcase_id + 'givenname-17',
                      'audio': ldap_bytes
                  }))
     if test_server_type == 'EDIR':
         status, result, response, request = get_response_values(
             self.connection.search(
                 search_base=test_base,
                 search_filter='(audio=%s)' % ldap_escaped,
                 attributes=[
                     test_name_attr, 'sn', 'givenname', 'guid', 'audio'
                 ]), self.connection)
     else:  # not tested on other kind of servers
         return
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(response), 1)
     if test_server_type == 'EDIR':
         self.assertEqual(response[0]['attributes'][test_name_attr][0],
                          testcase_id + 'sea-17')
         if self.connection.check_names:
             self.assertEqual(response[0]['attributes']['audio'][0],
                              ldap_bytes)
         else:
             self.assertEqual(response[0]['raw_attributes']['audio'][0],
                              ldap_bytes)
Esempio n. 4
0
 def test_invalid_transaction_cookie(self):
     if test_server_type == 'EDIR' and not self.connection.strategy.pooled and not self.connection.strategy.no_real_dsa:
         self.delete_at_teardown.append(
             add_user(self.connection, testcase_id, 'user-1'))
         transaction_control = self.connection.extend.novell.start_transaction(
         )
         invalid_transaction_control = build_control(
             '2.16.840.1.113719.1.27.103.7',
             True,
             Integer(12345678),
             encode_control_value=True)
         self.connection.modify(
             self.delete_at_teardown[0][0],
             {'givenName': (MODIFY_REPLACE, ['user-1b'])},
             controls=[transaction_control])
         self.connection.modify(self.delete_at_teardown[0][0],
                                {'sn': (MODIFY_REPLACE, ['sn-user-1b'])},
                                controls=[invalid_transaction_control])
         self.connection.extend.novell.end_transaction(
             commit=True, controls=[transaction_control])
         status, result, response, request = get_response_values(
             self.connection.search(self.delete_at_teardown[0][0],
                                    '(objectclass=*)',
                                    attributes=['givenName', 'sn']),
             self.connection)
         if response:
             self.assertEqual(response[0]['attributes']['givenName'][0],
                              'user-1b')
             self.assertEqual(response[0]['attributes']['sn'][0], 'user-1')
         else:
             self.assertFalse(True,
                              self.delete_at_teardown[0][0] + ' not found')
Esempio n. 5
0
 def test_search_substring_many(self):
     status, result, response, request = get_response_values(
         self.connection.search(
             search_base=test_base,
             search_filter='(' + test_name_attr + '=' + testcase_id + '*)',
             attributes=[test_name_attr, 'givenName']), self.connection)
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(response), 4)
Esempio n. 6
0
 def test_search_present(self):
     status, result, response, request = get_response_values(
         self.connection.search(search_base=test_base,
                                search_filter='(' + test_name_attr + '=*)',
                                search_scope=SUBTREE,
                                attributes=[test_name_attr, 'givenName']),
         self.connection)
     self.assertEqual(result['description'], 'success')
     self.assertTrue(len(response) >= 2)
Esempio n. 7
0
 def test_search_integer_greater_than(self):
     status, result, response, request = get_response_values(
         self.connection.search(
             search_base=test_base,
             search_filter='(&(' + test_name_attr + '=' + testcase_id +
             '*)(' + test_int_attr + ' >=-1))',
             attributes=[test_name_attr, test_int_attr]), self.connection)
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(response), 4)
Esempio n. 8
0
 def test_search_not_match(self):
     status, result, response, request = get_response_values(
         self.connection.search(search_base=test_base,
                                search_filter='(!(' + test_name_attr + '=' +
                                testcase_id + 'sea-1))',
                                attributes=[test_name_attr, 'givenName']),
         self.connection)
     self.assertEqual(result['description'], 'success')
     self.assertTrue(len(response) >= 1)
Esempio n. 9
0
    def test_remove_member_from_group_transactional(self):
        if test_server_type == 'EDIR' and not self.connection.strategy.pooled and not self.connection.strategy.no_real_dsa:
            self.delete_at_teardown.append(add_user(self.connection, testcase_id, 'user-5'))
            self.delete_at_teardown.append(add_group(self.connection, testcase_id, 'group-5', self.delete_at_teardown))
            self.connection.extend.novell.add_members_to_groups(self.delete_at_teardown[0][0],
                                                                self.delete_at_teardown[1][0],
                                                                fix=True,
                                                                transaction=True)
            status, result, response, request = get_response_values(self.connection.search(self.delete_at_teardown[0][0], '(objectclass=*)', attributes=['securityEquals', 'groupMembership']), self.connection)

            if response:
                self.assertTrue(self.delete_at_teardown[1][0] in (response[0]['attributes']['securityEquals'] if 'securityEquals' in response[0]['attributes'] else []))
                self.assertTrue(self.delete_at_teardown[1][0] in (response[0]['attributes']['groupMembership'] if 'groupMembership' in response[0]['attributes'] else []))
            else:
                self.assertFalse(True, self.delete_at_teardown[1][0] + ' not found')

            status, result, response, request = get_response_values(self.connection.search(self.delete_at_teardown[1][0], '(objectclass=*)', attributes=['member', 'equivalentToMe']), self.connection)

            if response:
                self.assertTrue(self.delete_at_teardown[0][0] in (response[0]['attributes']['member'] if 'member' in response[0]['attributes'] else []))
                self.assertTrue(self.delete_at_teardown[0][0] in (response[0]['attributes']['equivalentToMe'] if 'equivalentToMe' in response[0]['attributes'] else []))
            else:
                self.assertFalse(True, self.delete_at_teardown[0][0] + ' not found')

            self.connection.extend.novell.remove_members_from_groups(self.delete_at_teardown[0][0],
                                                                     self.delete_at_teardown[1][0],
                                                                     fix=False,
                                                                     transaction=False)

            status, result, response, request = get_response_values(self.connection.search(self.delete_at_teardown[0][0], '(objectclass=*)', attributes=['securityEquals', 'groupMembership']), self.connection)

            if response:
                self.assertTrue(self.delete_at_teardown[1][0] not in (response[0]['attributes']['securityEquals'] if 'securityEquals' in response[0]['attributes'] else []))
                self.assertTrue(self.delete_at_teardown[1][0] not in (response[0]['attributes']['groupMembership'] if 'groupMembership' in response[0]['attributes'] else []))
            else:
                self.assertFalse(True, self.delete_at_teardown[1][0] + ' not found')

            status, result, response, request = get_response_values(self.connection.search(self.delete_at_teardown[1][0], '(objectclass=*)', attributes=['member', 'equivalentToMe']), self.connection)

            if response:
                self.assertTrue(self.delete_at_teardown[0][0] not in (response[0]['attributes']['member'] if 'member' in response[0]['attributes'] else []))
                self.assertTrue(self.delete_at_teardown[0][0] not in (response[0]['attributes']['equivalentToMe'] if 'equivalentToMe' in response[0]['attributes'] else []))
            else:
                self.assertFalse(True, self.delete_at_teardown[0][0] + ' not found')
Esempio n. 10
0
 def test_search_integer_exact_match(self):
     status, result, response, request = get_response_values(
         self.connection.search(
             search_base=test_base,
             search_filter='(&(' + test_name_attr + '=' + testcase_id +
             '*)(' + test_int_attr + '=0))',
             attributes=[test_name_attr, test_int_attr]), self.connection)
     entries = self.connection._get_entries(response, request)
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(entries), 2)
Esempio n. 11
0
    def test_search_exact_match_with_parentheses_in_filter(self):
        self.delete_at_teardown.append(add_user(self.connection, testcase_id, '(search)-3', attributes={'givenName': 'givenname-3'}))
        status, result, response, request = get_response_values(self.connection.search(search_base=test_base, search_filter='(&(' + test_name_attr + '=' + testcase_id + '*)(' + test_name_attr + '=*' + escape_bytes(')') + '*))', attributes=[test_name_attr, 'sn']), self.connection)
        json_response = self.connection.response_to_json(search_result=response)
        json_entries = json.loads(json_response)['entries']

        self.assertEqual(len(json_entries), 1)
        if test_server_type == 'AD':
            self.assertEqual(json_entries[0]['attributes'][test_name_attr], testcase_id + '(search)-3')
        else:
            self.assertEqual(json_entries[0]['attributes'][test_name_attr][0], testcase_id + '(search)-3')
Esempio n. 12
0
 def test_search_extensible_match(self):
     if test_server_type == 'EDIR' and not self.connection.strategy.no_real_dsa:
         status, result, response, request = get_response_values(
             self.connection.search(
                 search_base=test_base,
                 search_filter=
                 '(&(ou:dn:=fixtures)(objectclass=inetOrgPerson))',
                 attributes=[test_name_attr, 'givenName', 'sn']),
             self.connection)
         self.assertEqual(result['description'], 'success')
         self.assertTrue(len(response) >= 2)
Esempio n. 13
0
    def test_valid_assertion(self):
        self.delete_at_teardown.append(
            add_user(self.connection, testcase_id, 'chk-1'))

        status, result, response, request = get_response_values(
            self.connection.search(search_base=test_base,
                                   search_filter='(' + test_name_attr + '=' +
                                   testcase_id + 'chk-1)',
                                   attributes=[test_name_attr]),
            self.connection)
        self.assertEqual(result['description'], 'success')
        self.assertEqual(len(response), 1)
Esempio n. 14
0
 def test_search_exact_match(self):
     status, result, response, request = get_response_values(
         self.connection.search(search_base=test_base,
                                search_filter='(' + test_name_attr + '=' +
                                testcase_id + 'sea-1)',
                                attributes=[test_name_attr, 'givenName']),
         self.connection)
     entries = self.connection._get_entries(response, request)
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(entries), 1)
     self.assertEqual(entries[0].givenName.value, 'givenname-1')
     self.assertEqual(entries[0].givenname.value, 'givenname-1')
     self.assertEqual(entries[0].GIVENNAME.value, 'givenname-1')
Esempio n. 15
0
 def test_search_with_operational_attributes(self):
     status, result, response, request = get_response_values(
         self.connection.search(search_base=test_base,
                                search_filter='(' + test_name_attr + '=' +
                                testcase_id + 'sea-1)',
                                search_scope=SUBTREE,
                                attributes=[test_name_attr, 'givenName'],
                                get_operational_attributes=True),
         self.connection)
     entries = self.connection._get_entries(response, request)
     self.assertEqual(result['description'], 'success')
     if self.connection.check_names:
         self.assertEqual(entries[0].entry_dn.lower(),
                          self.delete_at_teardown[0][0].lower())
Esempio n. 16
0
 def test_search_exact_match_with_unescaped_chars(self):
     status, result, response, request = get_response_values(
         self.connection.search(search_base=test_base,
                                search_filter='(' + test_name_attr + '=' +
                                testcase_id + u'sea-4-�����)',
                                attributes=[test_name_attr, 'givenName']),
         self.connection)
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(response), 1)
     if test_server_type == 'AD':
         self.assertEqual(response[0]['attributes']['givenName'],
                          'givenname-4')
     else:
         self.assertEqual(response[0]['attributes']['givenName'][0],
                          'givenname-4')
Esempio n. 17
0
    def test_add_members_to_groups(self):
        if test_server_type == 'EDIR' and not self.connection.strategy.pooled and not self.connection.strategy.no_real_dsa:
            self.delete_at_teardown.append(add_user(self.connection, testcase_id, 'user-2'))
            self.delete_at_teardown.append(add_user(self.connection, testcase_id, 'user-3'))
            self.delete_at_teardown.append(add_user(self.connection, testcase_id, 'user-4'))
            self.delete_at_teardown.append(add_group(self.connection, testcase_id, 'group-2', self.delete_at_teardown))
            self.delete_at_teardown.append(add_group(self.connection, testcase_id, 'group-3'))
            self.delete_at_teardown.append(add_group(self.connection, testcase_id, 'group-4'))
            self.connection.extend.novell.add_members_to_groups([self.delete_at_teardown[0][0],
                                                                 self.delete_at_teardown[1][0],
                                                                 self.delete_at_teardown[2][0]],
                                                                [self.delete_at_teardown[3][0],
                                                                 self.delete_at_teardown[4][0],
                                                                 self.delete_at_teardown[5][0]],
                                                                fix=True,
                                                                transaction=False
                                                                )
            for i in range(0, 2):
                status, result, response, request = get_response_values(self.connection.search(self.delete_at_teardown[i][0], '(objectclass=*)', attributes=['securityEquals', 'groupMembership']), self.connection)

                if response:
                    for j in range(3, 5):
                        self.assertTrue(self.delete_at_teardown[j][0] in (response[0]['attributes']['securityEquals'] if 'securityEquals' in response[0]['attributes'] else []))
                        self.assertTrue(self.delete_at_teardown[j][0] in (response[0]['attributes']['groupMembership'] if 'groupMembership' in response[0]['attributes'] else []))
                else:
                    self.assertFalse(True, self.delete_at_teardown[i][0] + ' not found')

            for j in range(3, 5):
                status, result, response, request = get_response_values(self.connection.search(self.delete_at_teardown[j][0], '(objectclass=*)', attributes=['member', 'equivalentToMe']), self.connection)

                if response:
                    for i in range(0, 2):
                        self.assertTrue(self.delete_at_teardown[i][0] in (response[0]['attributes']['member'] if 'member' in response[0]['attributes'] else []))
                        self.assertTrue(self.delete_at_teardown[i][0] in (response[0]['attributes']['equivalentToMe'] if 'equivalentToMe' in response[0]['attributes'] else []))
                else:
                    self.assertFalse(True, self.delete_at_teardown[j][0] + ' not found')
Esempio n. 18
0
 def test_search_with_operational_attributes(self):
     status, result, response, request = get_response_values(
         self.connection.search(search_base=test_base,
                                search_filter='(' + test_name_attr + '=' +
                                testcase_id + 'sea-1)',
                                search_scope=SUBTREE,
                                attributes=[test_name_attr, 'givenName'],
                                get_operational_attributes=True),
         self.connection)
     self.assertEqual(result['description'], 'success')
     if self.connection.check_names:
         if test_server_type == 'AD':
             self.assertEqual(response[0]['dn'].lower(),
                              self.delete_at_teardown[0][0].lower())
         else:
             self.assertEqual(response[0]['attributes']['entryDN'],
                              self.delete_at_teardown[0][0])
Esempio n. 19
0
 def test_search_exact_match_with_parentheses_in_filter(self):
     self.delete_at_teardown.append(
         add_user(self.connection,
                  testcase_id,
                  '(search)-10',
                  attributes={'givenName': 'givenname-10'}))
     status, result, response, request = get_response_values(
         self.connection.search(
             search_base=test_base,
             search_filter='(' + test_name_attr + '=' + testcase_id + '*' +
             escape_bytes(')') + '*)',
             attributes=[test_name_attr, 'sn']), self.connection)
     entries = self.connection._get_entries(response, request)
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(entries), 1)
     self.assertEqual(entries[0][test_name_attr][0],
                      testcase_id + '(search)-10')
Esempio n. 20
0
    def test_search_with_operational_attributes(self):
        if test_server_type == 'EDIR':
            test_operation_attribute = 'entryDN'
        elif test_server_type == 'SLAPD':
            test_operation_attribute = 'entryDN'
        else:
            test_operation_attribute = 'xxx'
        status, result, response, request = get_response_values(self.connection.search(search_base=test_base, search_filter='(' + test_name_attr + '=' + testcase_id + 'sea-1)', search_scope=SUBTREE, attributes=[test_name_attr, 'givenName'], get_operational_attributes=True), self.connection)
        json_response = self.connection.response_to_json(search_result=response)
        json_entries = json.loads(json_response)['entries']

        if self.connection.check_names:
            if test_server_type == 'AD':
                self.assertEqual(json_entries[0]['dn'].lower(), self.delete_at_teardown[0][0].lower())
            elif test_server_type == 'SLAPD':
                self.assertEqual(json_entries[0]['attributes'][test_operation_attribute], self.delete_at_teardown[0][0])
            else:
                self.assertEqual(json_entries[0]['attributes'][test_operation_attribute], self.delete_at_teardown[0][0])
Esempio n. 21
0
 def test_search_exact_match_with_escaped_backslash_in_filter(self):
     self.delete_at_teardown.append(
         add_user(self.connection,
                  testcase_id,
                  'sea-14',
                  attributes={'givenName': testcase_id + 'givenname\\-14'}))
     status, result, response, request = get_response_values(
         self.connection.search(
             search_base=test_base,
             search_filter='(givenname=' + testcase_id + '*\\5c*)',
             attributes=[test_name_attr, 'sn']), self.connection)
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(response), 1)
     if test_server_type == 'AD':
         self.assertEqual(response[0]['attributes'][test_name_attr],
                          testcase_id + 'sea-14')
     else:
         self.assertEqual(response[0]['attributes'][test_name_attr][0],
                          testcase_id + 'sea-14')
Esempio n. 22
0
 def test_search_exact_match_with_escaped_parentheses_in_filter(self):
     self.delete_at_teardown.append(
         add_user(self.connection,
                  testcase_id,
                  '(s)-12',
                  attributes={'givenName': 'givenname-12'}))
     status, result, response, request = get_response_values(
         self.connection.search(
             search_base=test_base,
             search_filter='(' + test_name_attr + '=' + testcase_id + '*' +
             escape_bytes(')') + '*)',
             attributes=[test_name_attr, 'sn']), self.connection)
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(response), 1)
     if test_server_type == 'AD':
         self.assertEqual(response[0]['attributes'][test_name_attr],
                          testcase_id + '(s)-12')
     else:
         self.assertEqual(response[0]['attributes'][test_name_attr][0],
                          testcase_id + '(s)-12')
Esempio n. 23
0
    def test_custom_formatter(self):
        def to_upper(byte_value):
            if str != bytes:  # python 3
                return str(byte_value, encoding='UTF-8').upper()
            else:
                return unicode(byte_value, encoding='UTF-8').upper()

        if str != bytes:  # python3
            formatter = {
                'cn': to_upper,  # name to upper
                '2.5.4.4':
                lambda v: str(v, encoding='UTF-8')[::-1],  # sn reversed
                '1.3.6.1.4.1.1466.115.121.1.27': lambda v: int(v) + 1000
            }  # integer syntax incremented by 1000
        else:
            formatter = {
                'cn': to_upper,  # name to upper
                '2.5.4.4':
                lambda v: unicode(v, encoding='UTF-8')[::-1],  # sn reversed
                '1.3.6.1.4.1.1466.115.121.1.27': lambda v: int(v) + 1000
            }  # integer syntax incremented by 1000
        self.connection.server.custom_formatter = formatter
        status, result, response, request = get_response_values(
            self.connection.search(search_base=test_base,
                                   search_filter='(' + test_name_attr + '=' +
                                   testcase_id + 'chk-1*)',
                                   attributes=[
                                       test_name_attr, 'sn', test_int_attr
                                   ]), self.connection)
        self.assertEqual(result['description'], 'success')
        self.assertEqual(len(response), 1)
        if test_server_type == 'AD':
            self.assertTrue('CHK-1' in response[0]['attributes']
                            ['cn'])  # cn is single-valued in Active Directory
            self.assertEqual(
                response[0]['attributes']['sn'],
                '1-khc')  # sn is single-valued in Active Directory
        else:
            self.assertTrue('CHK-1' in response[0]['attributes']['cn'][0])
            self.assertEqual(response[0]['attributes']['sn'][0], '1-khc')
        self.assertEqual(response[0]['attributes'][test_int_attr], 1000)
Esempio n. 24
0
    def test_search_and_delete_entry(self):
        add_user(self.connection, testcase_id, 'del1', attributes={'givenName': 'givenname-delete'})
        read_only_entry = self.get_entry('del1')
        self.assertEqual(read_only_entry.entry_status, STATUS_READ)
        writable_entry = read_only_entry.entry_writable('inetorgperson')
        self.assertEqual(writable_entry.entry_status, STATUS_WRITABLE)
        writable_entry.entry_delete()
        self.assertEqual(writable_entry.entry_status, STATUS_READY_FOR_DELETION)
        result = writable_entry.entry_commit_changes()
        self.assertEqual(writable_entry.entry_status, STATUS_DELETED)
        self.assertTrue(result)
        counter = 20
        while counter > 0:  # waits for at maximum 20 times - delete operation can take some time to complete
            status, result, response, request = get_response_values(self.connection.search(search_base=test_base, search_filter='(' + test_name_attr + '=' + testcase_id + 'del1)', attributes=[test_name_attr, 'givenName']), self.connection)
            entries = self.connection._get_entries(response, request)
            if len(entries) == 0:
                break
            sleep(3)
            counter -= 1

        self.assertEqual(result['description'], 'success')
        self.assertEqual(len(entries), 0)
        self.compare_entries(read_only_entry, writable_entry)
Esempio n. 25
0
 def test_search_checked_attributes(self):
     status, result, response, request = get_response_values(
         self.connection.search(search_base=test_base,
                                search_filter='(' + test_name_attr + '=' +
                                testcase_id + 'chk-1*)',
                                attributes=[
                                    test_name_attr, 'sn', test_int_attr
                                ]), self.connection)
     self.assertEqual(result['description'], 'success')
     self.assertEqual(len(response), 1)
     if test_server_type == 'AD':
         self.assertEqual(response[0]['attributes']['sn'],
                          'chk-1')  # sn is single-value in Active Directory
     else:
         self.assertEqual(response[0]['attributes']['sn'][0], 'chk-1')
     self.assertEqual(response[0]['attributes'][test_int_attr], 0)
     if str != bytes:  # python3
         self.assertTrue(isinstance(response[0]['attributes']['sn'][0],
                                    str))
     else:  # python2
         self.assertTrue(
             isinstance(response[0]['attributes']['sn'][0], unicode))
     self.assertTrue(
         isinstance(response[0]['attributes'][test_int_attr], int))
Esempio n. 26
0
    def test_search_simple_paged(self):
        if not self.connection.strategy.pooled and not self.connection.strategy.no_real_dsa:
            self.delete_at_teardown.append(
                add_user(self.connection,
                         testcase_id,
                         'sea-5',
                         attributes={'givenName': 'givenname-3'}))
            self.delete_at_teardown.append(
                add_user(self.connection,
                         testcase_id,
                         'sea-6',
                         attributes={'givenName': 'givenname-4'}))
            self.delete_at_teardown.append(
                add_user(self.connection,
                         testcase_id,
                         'sea-7',
                         attributes={'givenName': 'givenname-5'}))
            self.delete_at_teardown.append(
                add_user(self.connection,
                         testcase_id,
                         'sea-8',
                         attributes={'givenName': 'givenname-6'}))
            self.delete_at_teardown.append(
                add_user(self.connection,
                         testcase_id,
                         'sea-9',
                         attributes={'givenName': 'givenname-7'}))
            self.delete_at_teardown.append(
                add_user(self.connection,
                         testcase_id,
                         'sea-10',
                         attributes={'givenName': 'givenname-8'}))
            self.delete_at_teardown.append(
                add_user(self.connection,
                         testcase_id,
                         'sea-11',
                         attributes={'givenName': 'givenname-9'}))

            paged_size = 4
            total_entries = 0
            status, result, response, request = get_response_values(
                self.connection.search(
                    search_base=test_base,
                    search_filter='(' + test_name_attr + '=' + testcase_id +
                    '*)',
                    search_scope=SUBTREE,
                    attributes=[test_name_attr, 'givenName'],
                    paged_size=paged_size), self.connection)
            self.assertEqual(result['description'], 'success')
            self.assertEqual(len(response), paged_size)
            total_entries += len(response)
            cookie = result['controls']['1.2.840.113556.1.4.319']['value'][
                'cookie']
            while cookie:
                status, result, response, request = get_response_values(
                    self.connection.search(
                        search_base=test_base,
                        search_filter='(' + test_name_attr + '=' +
                        testcase_id + '*)',
                        search_scope=SUBTREE,
                        attributes=[test_name_attr, 'givenName'],
                        paged_size=paged_size,
                        paged_cookie=cookie), self.connection)
                self.assertEqual(result['description'], 'success')
                total_entries += len(response)
                self.assertTrue(len(response) <= paged_size)
                cookie = result['controls']['1.2.840.113556.1.4.319']['value'][
                    'cookie']
            self.assertEqual(total_entries, 11)
Esempio n. 27
0
 def test_search_integer_greater_than(self):
     status, result, response, request = get_response_values(self.connection.search(search_base=test_base, search_filter='(&(' + test_name_attr + '=' + testcase_id + '*)(' + test_int_attr + '>=-1))', attributes=[test_name_attr, test_int_attr]), self.connection)
     json_response = self.connection.response_to_json(search_result=response)
     json_entries = json.loads(json_response)['entries']
     self.assertEqual(len(json_entries), 2)
Esempio n. 28
0
 def test_search_extensible_match(self):
     if test_server_type == 'EDIR' and not self.connection.strategy.no_real_dsa:
         status, result, response, request = get_response_values(self.connection.search(search_base=test_base, search_filter='(&(ou:dn:=fixtures)(objectclass=inetOrgPerson))', attributes=[test_name_attr, 'givenName', 'sn']), self.connection)
         json_response = self.connection.response_to_json(search_result=response)
         json_entries = json.loads(json_response)['entries']
         self.assertTrue(len(json_entries) >= 2)
Esempio n. 29
0
 def test_search_present(self):
     status, result, response, request = get_response_values(self.connection.search(search_base=test_base, search_filter='(' + test_name_attr + '=*)', search_scope=SUBTREE, attributes=[test_name_attr, 'givenName']), self.connection)
     json_response = self.connection.response_to_json(search_result=response)
     json_entries = json.loads(json_response)['entries']
     self.assertTrue(len(json_entries) >= 2)
Esempio n. 30
0
 def test_search_substring_many(self):
     status, result, response, request = get_response_values(self.connection.search(search_base=test_base, search_filter='(' + test_name_attr + '=' + testcase_id + '*)', attributes=[test_name_attr, 'givenName']), self.connection)
     json_response = self.connection.response_to_json(search_result=response)
     json_entries = json.loads(json_response)['entries']
     self.assertEqual(len(json_entries), 2)