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