private SearchResultAttributeCollection GetLdapAttributes(SafeHandle ld, IntPtr entry, ref IntPtr ber) { var attributes = new SearchResultAttributeCollection(); for (var attr = Native.ldap_first_attribute(ld, entry, ref ber); attr != IntPtr.Zero; attr = Native.ldap_next_attribute(ld, entry, ber)) { var vals = Native.ldap_get_values_len(ld, entry, attr); if (vals != IntPtr.Zero) { var attrName = Encoder.Instance.PtrToString(attr); if (attrName != null) { var directoryAttribute = new DirectoryAttribute { Name = attrName }; directoryAttribute.AddValues(MarshalUtils.BerValArrayToByteArrays(vals)); attributes.Add(directoryAttribute); } Native.ldap_value_free_len(vals); } Native.ldap_memfree(attr); } return(attributes); }
public void AttributeCollection_CaseInsensitivity() { var searchCollection = new SearchResultAttributeCollection(); var modifyCollection = new ModifyAttributeCollection(); var gnAttr = new DirectoryAttribute { Name = LdapAttributes.GivenName.ToLowerInvariant() }; var modifAttr = new DirectoryModificationAttribute { Name = LdapAttributes.GivenName.ToLowerInvariant() }; searchCollection.Add(gnAttr); modifyCollection.Add(modifAttr); Assert.True(searchCollection.Contains(LdapAttributes.GivenName.ToUpperInvariant())); Assert.True(modifyCollection.Contains(LdapAttributes.GivenName.ToUpperInvariant())); }