Polish ReturnAttributes Override
Closes gh-465
This commit is contained in:
@@ -22,6 +22,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.ArgumentMatcher;
|
||||
import org.mockito.verification.VerificationMode;
|
||||
|
||||
import org.springframework.LdapDataEntry;
|
||||
import org.springframework.dao.EmptyResultDataAccessException;
|
||||
@@ -31,6 +32,7 @@ import org.springframework.ldap.NameNotFoundException;
|
||||
import org.springframework.ldap.PartialResultException;
|
||||
import org.springframework.ldap.UncategorizedLdapException;
|
||||
import org.springframework.ldap.filter.EqualsFilter;
|
||||
import org.springframework.ldap.filter.Filter;
|
||||
import org.springframework.ldap.odm.core.ObjectDirectoryMapper;
|
||||
import org.springframework.ldap.query.LdapQuery;
|
||||
import org.springframework.ldap.query.LdapQueryBuilder;
|
||||
@@ -685,6 +687,56 @@ public class LdapTemplateTest {
|
||||
verify(dirContextMock).close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findWhenSearchControlsReturningAttributesSpecifiedThenOverridesOdmReturningAttributes() throws Exception {
|
||||
Class<Object> expectedClass = Object.class;
|
||||
|
||||
Filter filter = new EqualsFilter("ou", "somevalue");
|
||||
when(contextSourceMock.getReadOnlyContext()).thenReturn(dirContextMock);
|
||||
when(odmMock.filterFor(any(Class.class), any(Filter.class))).thenReturn(filter);
|
||||
SearchControls controls = new SearchControls();
|
||||
controls.setReturningAttributes(new String[] { "attribute" });
|
||||
DirContextAdapter expectedObject = new DirContextAdapter();
|
||||
SearchResult searchResult = new SearchResult("", expectedObject, new BasicAttributes());
|
||||
setupSearchResults(controls, searchResult);
|
||||
Object expectedResult = expectedObject;
|
||||
when(odmMock.mapFromLdapDataEntry(expectedObject, expectedClass)).thenReturn(expectedResult, expectedResult);
|
||||
|
||||
List<Object> results = tested.find(nameMock, filter, controls, expectedClass);
|
||||
assertThat(results).hasSize(1);
|
||||
verify(odmMock, never()).manageClass(any(Class.class));
|
||||
|
||||
verify(namingEnumerationMock).close();
|
||||
verify(dirContextMock).close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findWhenSearchControlsReturningAttributesUnspecifiedThenOdmReturningAttributesOverrides() throws Exception {
|
||||
Class<Object> expectedClass = Object.class;
|
||||
String[] expectedReturningAttributes = new String[] { "odmattribute" };
|
||||
SearchControls expectedControls = new SearchControls();
|
||||
expectedControls.setReturningObjFlag(true);
|
||||
expectedControls.setReturningAttributes(expectedReturningAttributes);
|
||||
|
||||
Filter filter = new EqualsFilter("ou", "somevalue");
|
||||
when(contextSourceMock.getReadOnlyContext()).thenReturn(dirContextMock);
|
||||
when(odmMock.filterFor(eq(expectedClass), any(Filter.class))).thenReturn(filter);
|
||||
when(odmMock.manageClass(eq(expectedClass))).thenReturn(expectedReturningAttributes);
|
||||
SearchControls controls = new SearchControls();
|
||||
DirContextAdapter expectedObject = new DirContextAdapter();
|
||||
SearchResult searchResult = new SearchResult("", expectedObject, new BasicAttributes());
|
||||
setupSearchResults(expectedControls, searchResult);
|
||||
Object expectedResult = expectedObject;
|
||||
when(odmMock.mapFromLdapDataEntry(expectedObject, expectedClass)).thenReturn(expectedResult, expectedResult);
|
||||
|
||||
List<Object> results = tested.find(nameMock, filter, controls, expectedClass);
|
||||
assertThat(results).hasSize(1);
|
||||
verify(odmMock).manageClass(eq(expectedClass));
|
||||
|
||||
verify(namingEnumerationMock).close();
|
||||
verify(dirContextMock).close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSearch_ContextMapper_ReturningAttrs() throws Exception {
|
||||
expectGetReadOnlyContext();
|
||||
@@ -1818,7 +1870,7 @@ public class LdapTemplateTest {
|
||||
setupSearchResults(controls, new SearchResult[] { searchResult });
|
||||
}
|
||||
|
||||
private void setupSearchResults(SearchControls controls, SearchResult[] searchResults) throws Exception {
|
||||
private void setupSearchResults(SearchControls controls, SearchResult... searchResults) throws Exception {
|
||||
when(dirContextMock.search(
|
||||
eq(nameMock),
|
||||
eq("(ou=somevalue)"),
|
||||
|
||||
Reference in New Issue
Block a user