Fix issues raised in Code Review.
Conflicts:
src/com/google/enterprise/adaptor/ad/AdServer.java
test/com/google/enterprise/adaptor/ad/AdServerTest.java
test/com/google/enterprise/adaptor/ad/MockLdapContext.java
diff --git a/src/com/google/enterprise/adaptor/ad/AdServer.java b/src/com/google/enterprise/adaptor/ad/AdServer.java
index b125701..aaefd1f 100644
--- a/src/com/google/enterprise/adaptor/ad/AdServer.java
+++ b/src/com/google/enterprise/adaptor/ad/AdServer.java
@@ -48,8 +48,8 @@
private static final Logger LOGGER
= Logger.getLogger(AdServer.class.getName());
- private LdapContext ldapContext = null;
- private SearchControls searchCtls;
+ private final LdapContext ldapContext;
+ private final SearchControls searchCtls;
// properties necessary for connection
private final String hostName;
@@ -109,9 +109,8 @@
env.put(Context.SECURITY_PRINCIPAL, principal);
env.put(Context.SECURITY_CREDENTIALS, password);
- String ldapUrl =
- connectMethod.protocol() + hostName + ":" + port;
- LOGGER.info("LDAP provider url: " + ldapUrl);
+ String ldapUrl = connectMethod.protocol() + hostName + ":" + port;
+ LOGGER.config("LDAP provider url: " + ldapUrl);
env.put(Context.PROVIDER_URL, ldapUrl);
try {
return new InitialLdapContext(env, null);
@@ -140,7 +139,7 @@
public void initialize() {
try {
connect();
- sid = AdEntity.getTextSid((byte[])get(
+ sid = AdEntity.getTextSid((byte[]) get(
"distinguishedName=" + dn, "objectSid;binary", dn));
invocationID = AdEntity.getTextGuid((byte[]) get(
"distinguishedName=" + dsServiceName,
diff --git a/test/com/google/enterprise/adaptor/ad/AdServerTest.java b/test/com/google/enterprise/adaptor/ad/AdServerTest.java
index da5d5eb..b80a81a 100644
--- a/test/com/google/enterprise/adaptor/ad/AdServerTest.java
+++ b/test/com/google/enterprise/adaptor/ad/AdServerTest.java
@@ -64,7 +64,6 @@
@Test
public void testIAEOnEmptyPrincipal() throws Exception {
thrown.expect(IllegalArgumentException.class);
- MockLdapContext ldapContext = new MockLdapContext();
AdServer adServer = new AdServer(Method.SSL, "hostname", 1234, "", "pw");
}
@@ -123,13 +122,13 @@
SearchControls searchControls) throws NamingException {
if (!("dn=empty".equals(filter))) {
return super.search(base, filter, searchControls);
- };
+ }
// prepare "broken" SearchResult
Vector<SearchResult> brokenSRs = new Vector<SearchResult>();
brokenSRs.add(new SearchResult("search result name", brokenSRs,
- new BasicAttributes()));
+ new BasicAttributes()));
return new MockLdapContext.SearchResultsNamingEnumeration(brokenSRs);
- };
+ }
};
addStandardKeysAndResults(ldapContext);
ldapContext.addSearchResult("dn=empty", "attr1", "basedn", "val1");
@@ -146,9 +145,9 @@
SearchControls searchControls) throws NamingException {
if (!("dn=empty".equals(filter))) {
return super.search(base, filter, searchControls);
- };
+ }
throw new NamingException("Gotcha");
- };
+ }
};
addStandardKeysAndResults(ldapContext);
ldapContext.addSearchResult("dn=empty", "attr1", "basedn", "val1");
@@ -162,9 +161,9 @@
thrown.expect(RuntimeException.class);
MockLdapContext ldapContext = new MockLdapContext() {
@Override
- public Attributes getAttributes(String name) throws NamingException {
+ public Attributes getAttributes(String name) throws NamingException {
throw new NamingException("Can't connect");
- };
+ }
};
addStandardKeysAndResults(ldapContext);
ldapContext.addSearchResult("dn=empty", "attr1", "basedn", "val1");
@@ -210,6 +209,29 @@
}
@Test
+ public void testSetControlsThrowsException() throws Exception {
+ MockLdapContext ldapContext = new MockLdapContext() {
+ @Override
+ public void setRequestControls(Control[] requestControls)
+ throws NamingException {
+ controls = requestControls;
+ throw new NamingException("testing exception path");
+ }
+ };
+ addStandardKeysAndResults(ldapContext);
+ // populate additional attributes with values we can test
+ final String filter = "ou=Users";
+ final String userDn = "DN_for_default_naming_context";
+ ldapContext.addSearchResult(filter, "cn", userDn, "user1")
+ .addSearchResult(filter, "primaryGroupId", userDn, "users");
+ AdServer adServer = new AdServer("localhost", ldapContext);
+ adServer.initialize();
+ Set<AdEntity> resultSet = adServer.search(filter, false,
+ new String[] { "cn", "primaryGroupId", "objectGUID;binary" });
+ assertEquals(0, resultSet.size());
+ }
+
+ @Test
public void testSearchReturnsOneDeletedUser() throws Exception {
MockLdapContext ldapContext = new MockLdapContext();
addStandardKeysAndResults(ldapContext);
@@ -385,8 +407,8 @@
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
- data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
- + Character.digit(s.charAt(i+1), 16));
+ data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ + Character.digit(s.charAt(i+1), 16));
}
return data;
}
diff --git a/test/com/google/enterprise/adaptor/ad/MockLdapContext.java b/test/com/google/enterprise/adaptor/ad/MockLdapContext.java
index 1cfcf68..cfc87ac 100644
--- a/test/com/google/enterprise/adaptor/ad/MockLdapContext.java
+++ b/test/com/google/enterprise/adaptor/ad/MockLdapContext.java
@@ -25,16 +25,14 @@
import javax.naming.ldap.InitialLdapContext;
/**
- * Mock of {@link Config}.
+ * Mock of {@link LdapContext}.
*/
public class MockLdapContext extends InitialLdapContext {
private BasicAttributes attributes = new BasicAttributes();
private Hashtable<String, Object> searchResults
= new Hashtable<String, Object>();
- private Control[] controls = new Control[0];
-
- // A hack to throw exactly 2 exceptions on calls to setRequestControls()
- static int numberOfTimesSetRequestControlsWasCalled = 0;
+ @VisibleForTesting
+ Control[] controls = new Control[0];
public MockLdapContext() throws NamingException {
}
@@ -122,17 +120,11 @@
return controls;
};
- /** Sets the controls (which this class does nothing with)
- *
- * <p>throws Exceptions exactly once, to test the Exception processing code.
- */
+ /** Sets the controls (which this class does nothing with) */
@Override
public void setRequestControls(Control[] requestControls)
throws NamingException {
controls = requestControls;
- if (++numberOfTimesSetRequestControlsWasCalled == 2) {
- throw new NamingException("calling setRequestControls for second time");
- }
};
@VisibleForTesting