Skip to content
Prev Previous commit
Next Next commit
Add test for LDAP sort control against a real LDAP server
  • Loading branch information
lscorcia committed Mar 8, 2022
commit 2493b9503ba3d1db2ca7ff958a8400d40a9fd287
Original file line number Diff line number Diff line change
Expand Up @@ -533,6 +533,58 @@ public void TestPageRequests()
}
}

[ConditionalFact(nameof(IsLdapConfigurationExist))]
public void TestSortedSearch()
{
using (LdapConnection connection = GetConnection())
{
string ouName = "ProtocolsGroup10";
string dn = "ou=" + ouName;

try
{
for (int i=0; i<10; i++)
{
DeleteEntry(connection, "ou=ProtocolsSubGroup10." + i + "," + dn);
}
DeleteEntry(connection, dn);

AddOrganizationalUnit(connection, dn);
SearchResultEntry sre = SearchOrganizationalUnit(connection, LdapConfiguration.Configuration.SearchDn, ouName);
Assert.NotNull(sre);

for (int i=0; i<10; i++)
{
AddOrganizationalUnit(connection, "ou=ProtocolsSubGroup10." + i + "," + dn);
}

string filter = "(objectClass=*)";
SearchRequest searchRequest = new SearchRequest(
dn + "," + LdapConfiguration.Configuration.SearchDn,
filter,
SearchScope.Subtree,
null);

var sortRequestControl = new SortRequestControl("ou", true);
searchRequest.Controls.Add(sortRequestControl);

SearchResponse searchResponse = (SearchResponse) connection.SendRequest(searchRequest);
Assert.Equal(1, searchResponse.Controls.Length);
Assert.True(searchResponse.Controls[0] is SortResponseControl);
Assert.True(searchResponse.Entries.Count > 0);
Assert.Equal("ou=ProtocolsSubGroup10.9," + dn + "," + LdapConfiguration.Configuration.SearchDn, searchResponse.Entries[0].DistinguishedName);
}
finally
{
for (int i=0; i<20; i++)
{
DeleteEntry(connection, "ou=ProtocolsSubGroup10." + i + "," + dn);
}
DeleteEntry(connection, dn);
}
}
}

private void DeleteAttribute(LdapConnection connection, string entryDn, string attributeName)
{
string dn = entryDn + "," + LdapConfiguration.Configuration.SearchDn;
Expand Down