From 067d31464e946bbfdb35106b9162155d621fc597 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 01 Mar 2013 10:41:48 +0000
Subject: [PATCH] OPENDJ-777 (CR-1343) ldapcompare should exit with different values w.r.t comparison is successful or not
---
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPCompareTestCase.java | 548 ++++++++++++++++++++++++++++++++++++++++++++++---
opendj-sdk/opends/src/server/org/opends/server/tools/LDAPCompare.java | 106 +++++++--
2 files changed, 589 insertions(+), 65 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPCompare.java b/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPCompare.java
index 0390d9b..806d814 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPCompare.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/LDAPCompare.java
@@ -23,16 +23,13 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012 ForgeRock AS.
+ * Portions Copyright 2012-2013 ForgeRock AS
*/
package org.opends.server.tools;
-import org.opends.admin.ads.util.ConnectionUtils;
-import org.opends.messages.Message;
-
import java.io.BufferedReader;
import java.io.FileReader;
-import java.io.InputStreamReader;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Reader;
@@ -41,11 +38,16 @@
import java.util.LinkedList;
import java.util.concurrent.atomic.AtomicInteger;
+import org.opends.admin.ads.util.ConnectionUtils;
+import org.opends.messages.Message;
+import org.opends.server.controls.LDAPAssertionRequestControl;
+import org.opends.server.loggers.debug.DebugTracer;
import org.opends.server.protocols.asn1.ASN1Exception;
import org.opends.server.protocols.ldap.CompareRequestProtocolOp;
import org.opends.server.protocols.ldap.CompareResponseProtocolOp;
import org.opends.server.protocols.ldap.LDAPFilter;
import org.opends.server.protocols.ldap.LDAPMessage;
+import org.opends.server.protocols.ldap.LDAPResultCode;
import org.opends.server.protocols.ldap.ProtocolOp;
import org.opends.server.types.*;
import org.opends.server.util.Base64;
@@ -58,15 +60,12 @@
import org.opends.server.util.args.IntegerArgument;
import org.opends.server.util.args.StringArgument;
-import static org.opends.server.loggers.debug.DebugLogger.*;
-import org.opends.server.loggers.debug.DebugTracer;
import static org.opends.messages.ToolMessages.*;
+import static org.opends.server.loggers.debug.DebugLogger.*;
import static org.opends.server.protocols.ldap.LDAPResultCode.*;
+import static org.opends.server.tools.ToolConstants.*;
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
-import static org.opends.server.tools.ToolConstants.*;
-
-import org.opends.server.controls.LDAPAssertionRequestControl;
/**
@@ -124,22 +123,27 @@
* @param attributeVal The attribute value to compare.
* @param lines The list of DNs to compare the attribute in.
* @param compareOptions The constraints for the compare request.
+ * @return the LDAP result code for the operation
*
* @throws IOException If a problem occurs while communicating with the
* Directory Server.
*
* @throws LDAPException If the server returns an error response.
*/
- public void readAndExecute(LDAPConnection connection, String attributeType,
+ public int readAndExecute(LDAPConnection connection, String attributeType,
byte[] attributeVal, ArrayList<String> lines,
LDAPCompareOptions compareOptions)
throws IOException, LDAPException
{
+ int aggResultCode = SUCCESS;
for(String line : lines)
{
- executeCompare(connection, attributeType, attributeVal, line,
- compareOptions);
+ int resultCode =
+ executeCompare(connection, attributeType, attributeVal, line,
+ compareOptions);
+ aggResultCode = aggregateResultCode(aggResultCode, resultCode);
}
+ return aggResultCode;
}
@@ -152,26 +156,57 @@
* @param attributeVal The attribute value to compare.
* @param reader The reader to read the list of DNs from.
* @param compareOptions The constraints for the compare request.
+ * @return the LDAP result code for the operation
*
* @throws IOException If a problem occurs while communicating with the
* Directory Server.
*
* @throws LDAPException If the server returns an error response.
*/
- public void readAndExecute(LDAPConnection connection, String attributeType,
+ public int readAndExecute(LDAPConnection connection, String attributeType,
byte[] attributeVal, Reader reader,
LDAPCompareOptions compareOptions)
throws IOException, LDAPException
{
+ int aggResultCode = 0;
BufferedReader in = new BufferedReader(reader);
String line = null;
while ((line = in.readLine()) != null)
{
- executeCompare(connection, attributeType, attributeVal, line,
- compareOptions);
+ int resultCode =
+ executeCompare(connection, attributeType, attributeVal, line,
+ compareOptions);
+ aggResultCode = aggregateResultCode(aggResultCode, resultCode);
}
in.close();
+ return aggResultCode;
+ }
+
+
+ /**
+ * Aggregates a new result code to the existing aggregated result codes. This
+ * method always overwrites the {@link LDAPResultCode#SUCCESS} and
+ * {@link LDAPResultCode#COMPARE_TRUE} result codes with the new result code.
+ * Then
+ *
+ * @param aggResultCodes
+ * the aggregated result codes (a.k.a "accumulator")
+ * @param newResultCode
+ * the new result code to aggregate
+ * @return the new aggregated result code
+ */
+ int aggregateResultCode(int aggResultCodes, int newResultCode)
+ {
+ if (aggResultCodes == SUCCESS || aggResultCodes == COMPARE_TRUE)
+ {
+ aggResultCodes = newResultCode;
+ }
+ else if (aggResultCodes == COMPARE_FALSE && newResultCode != COMPARE_TRUE)
+ {
+ aggResultCodes = newResultCode;
+ }
+ return aggResultCodes;
}
@@ -183,13 +218,14 @@
* @param attributeVal The attribute value to compare.
* @param line The DN to compare attribute in.
* @param compareOptions The constraints for the compare request.
+ * @return the LDAP result code for the operation
*
* @throws IOException If a problem occurs while communicating with the
* Directory Server.
*
* @throws LDAPException If the server returns an error response.
*/
- private void executeCompare(LDAPConnection connection, String attributeType,
+ private int executeCompare(LDAPConnection connection, String attributeType,
byte[] attributeVal, String line,
LDAPCompareOptions compareOptions)
throws IOException, LDAPException
@@ -231,11 +267,10 @@
}
else
{
-
Message msg = INFO_OPERATION_FAILED.get("COMPARE");
err.println(wrapText(msg, MAX_LINE_WIDTH));
err.println(wrapText(ae.getMessage(), MAX_LINE_WIDTH));
- return;
+ return OPERATIONS_ERROR;
}
}
@@ -274,13 +309,14 @@
}
} else
{
-
Message msg = INFO_OPERATION_FAILED.get("COMPARE");
LDAPToolUtils.printErrorMessage(err, msg, resultCode, errorMessage,
op.getMatchedDN());
}
}
+ return resultCode;
}
+ return SUCCESS;
}
/**
@@ -362,6 +398,7 @@
BooleanArgument noop = null;
BooleanArgument saslExternal = null;
BooleanArgument showUsage = null;
+ BooleanArgument useCompareResultCode = null;
BooleanArgument startTLS = null;
BooleanArgument trustAll = null;
BooleanArgument useSSL = null;
@@ -638,6 +675,13 @@
OPTION_LONG_HELP,
INFO_DESCRIPTION_SHOWUSAGE.get());
argParser.addArgument(showUsage);
+
+ useCompareResultCode =
+ new BooleanArgument("usecompareresultcode", 'm',
+ "useCompareResultCode", INFO_ENCPW_DESCRIPTION_USE_COMPARE_RESULT
+ .get());
+ argParser.addArgument(useCompareResultCode);
+
argParser.setUsageArgument(showUsage, out);
} catch (ArgumentException ae)
{
@@ -665,7 +709,7 @@
// then print it and exit.
if (argParser.usageOrVersionDisplayed())
{
- return 0;
+ return SUCCESS;
}
if(bindPassword.isPresent() && bindPasswordFile.isPresent())
@@ -1022,15 +1066,24 @@
return CLIENT_SIDE_PARAM_ERROR;
}
}
+ int resultCode;
if(rdr != null)
{
- ldapCompare.readAndExecute(connection, attributeType, attributeVal,
- rdr, compareOptions);
+ resultCode =
+ ldapCompare.readAndExecute(connection, attributeType, attributeVal,
+ rdr, compareOptions);
} else
{
- ldapCompare.readAndExecute(connection, attributeType, attributeVal,
- dnStrings, compareOptions);
+ resultCode =
+ ldapCompare.readAndExecute(connection, attributeType, attributeVal,
+ dnStrings, compareOptions);
}
+
+ if (useCompareResultCode.isPresent())
+ {
+ return resultCode;
+ }
+ return SUCCESS;
} catch(LDAPException le)
{
if (debugEnabled())
@@ -1064,7 +1117,7 @@
TRACER.debugCaught(DebugLogLevel.ERROR, e);
}
err.println(wrapText(e.getMessage(), MAX_LINE_WIDTH));
- return 1;
+ return OPERATIONS_ERROR;
} finally
{
if(connection != null)
@@ -1079,7 +1132,6 @@
}
}
}
- return 0;
}
private boolean isScriptFriendly()
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPCompareTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPCompareTestCase.java
index f020db6..f0e9be3 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPCompareTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPCompareTestCase.java
@@ -32,19 +32,24 @@
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
+import java.util.concurrent.atomic.AtomicInteger;
+import org.opends.server.TestCaseUtils;
+import org.opends.server.api.Backend;
+import org.opends.server.core.AddOperation;
+import org.opends.server.core.DirectoryServer;
+import org.opends.server.protocols.internal.InternalClientConnection;
+import org.opends.server.types.DN;
+import org.opends.server.types.Entry;
+import org.opends.server.types.ResultCode;
+import org.opends.server.util.Base64;
+import org.opends.server.util.StaticUtils;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-import org.opends.server.TestCaseUtils;
-import org.opends.server.core.AddOperation;
-import org.opends.server.core.DirectoryServer;
-import org.opends.server.protocols.internal.InternalClientConnection;
-import org.opends.server.types.Entry;
-import org.opends.server.types.ResultCode;
-import org.opends.server.util.Base64;
+import static org.opends.server.protocols.ldap.LDAPResultCode.*;
import static org.testng.Assert.*;
@@ -66,18 +71,18 @@
*
* @throws Exception If an unexpected problem occurs.
*/
- @BeforeClass()
+ @BeforeClass
public void startServerAndCreatePasswordFiles()
throws Exception
{
TestCaseUtils.startServer();
-
+
TestCaseUtils.dsconfig(
"set-sasl-mechanism-handler-prop",
"--handler-name", "DIGEST-MD5",
"--set", "server-fqdn:" + "127.0.0.1");
-
+
File pwFile = File.createTempFile("valid-bind-password-", ".txt");
pwFile.deleteOnExit();
FileWriter fileWriter = new FileWriter(pwFile);
@@ -94,7 +99,6 @@
@AfterClass
public void tearDown() throws Exception {
-
TestCaseUtils.dsconfig(
"set-sasl-mechanism-handler-prop",
"--handler-name", "DIGEST-MD5",
@@ -384,7 +388,7 @@
@Test(dataProvider = "invalidArgs")
public void testInvalidArguments(String[] args, String invalidReason)
{
- assertFalse(LDAPCompare.mainCompare(args, false, null, null) == 0,
+ assertFalse(LDAPCompare.mainCompare(args, false, null, null) == SUCCESS,
"Should have been invalid because: " + invalidReason);
}
@@ -413,7 +417,23 @@
"o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "2",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "o:test",
+ "o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -441,7 +461,23 @@
"o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "o:test",
+ "o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -469,10 +505,192 @@
"o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "o:nottest",
+ "o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_FALSE);
}
+ /**
+ * Tests two LDAPv3 compares in which the assertion is true for all.
+ *
+ * @throws Exception
+ * If an unexpected problem occurs.
+ */
+ @Test
+ public void testMultipleCompareAllTrue() throws Exception
+ {
+ TestCaseUtils.initializeTestBackend(true);
+ Backend memoryBackend =
+ DirectoryServer.getBackend(TestCaseUtils.TEST_BACKEND_ID);
+ String dn1 = "arg=success,o=test1,o=test";
+ String dn2 = "arg=success,o=test2,o=test";
+ addEntriesUpToParentDN(memoryBackend, DN.decode(dn1));
+ addEntriesUpToParentDN(memoryBackend, DN.decode(dn2));
+
+ String[] args =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--continueOnError",
+ "arg:success",
+ dn1,
+ dn2
+ };
+
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "--continueOnError",
+ "arg:success",
+ dn1,
+ dn2
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
+ }
+
+
+ /**
+ * Tests two LDAPv3 compares in which one assertion is true and one is false.
+ *
+ * @throws Exception
+ * If an unexpected problem occurs.
+ */
+ @Test
+ public void testMultipleCompareOneCompareIsFalse() throws Exception
+ {
+ TestCaseUtils.initializeTestBackend(true);
+ Backend memoryBackend =
+ DirectoryServer.getBackend(TestCaseUtils.TEST_BACKEND_ID);
+ String dn1 = "arg=success,o=test1,o=test";
+ String dn2 = "arg=fail,o=test2,o=test";
+ addEntriesUpToParentDN(memoryBackend, DN.decode(dn1));
+ addEntriesUpToParentDN(memoryBackend, DN.decode(dn2));
+
+ String[] args =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--continueOnError",
+ "arg:success",
+ dn1,
+ dn2
+ };
+
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "--continueOnError",
+ "arg:success",
+ dn1,
+ dn2
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_FALSE);
+ }
+
+ /**
+ * Tests two LDAPv3 compares in which one assertion is true and one returns no
+ * such object.
+ *
+ * @throws Exception
+ * If an unexpected problem occurs.
+ */
+ @Test
+ public void testMultipleCompareOneNoSuchObject() throws Exception
+ {
+ TestCaseUtils.initializeTestBackend(true);
+ Backend memoryBackend =
+ DirectoryServer.getBackend(TestCaseUtils.TEST_BACKEND_ID);
+ String dn1 = "arg=success,o=test1,o=test";
+ addEntriesUpToParentDN(memoryBackend, DN.decode(dn1));
+
+ String[] args =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--continueOnError",
+ "arg:success",
+ dn1,
+ "arg=fail,o=test2,o=test"
+ };
+
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "--continueOnError",
+ "arg:success",
+ dn1,
+ "arg=fail,o=test2,o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), NO_SUCH_OBJECT);
+ }
+
+
+ private void addEntriesUpToParentDN(Backend backend, DN entryDN)
+ throws Exception
+ {
+ if (!backend.entryExists(entryDN.getParent()))
+ {
+ addEntriesUpToParentDN(backend, entryDN.getParent());
+ }
+ backend.addEntry(StaticUtils.createEntry(entryDN), null);
+ }
/**
* Tests a simple compare using SSL with blind trust.
@@ -498,7 +716,24 @@
"o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapsPort()),
+ "-Z",
+ "-X",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "o:test",
+ "o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -530,7 +765,24 @@
"o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapsPort()),
+ "-Z",
+ "-P", trustStorePath,
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "o:test",
+ "o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -559,7 +811,24 @@
"o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-q",
+ "-X",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "o:test",
+ "o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -591,7 +860,24 @@
"o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-q",
+ "-P", trustStorePath,
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "o:test",
+ "o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -646,7 +932,25 @@
"cn=Test User,o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapsPort()),
+ "-Z",
+ "-K", keyStorePath,
+ "-W", "password",
+ "-P", trustStorePath,
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "-r",
+ "cn:Test User",
+ "cn=Test User,o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -702,7 +1006,26 @@
"cn=Test User,o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapsPort()),
+ "-Z",
+ "-K", keyStorePath,
+ "-W", "password",
+ "-N", "client-cert",
+ "-P", trustStorePath,
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "-r",
+ "cn:Test User",
+ "cn=Test User,o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -758,7 +1081,7 @@
"cn=Test User,o=test"
};
- assertFalse(LDAPCompare.mainCompare(args, false, null, null) == 0);
+ assertFalse(LDAPCompare.mainCompare(args, false, null, null) == SUCCESS);
}
@@ -813,7 +1136,25 @@
"cn=Test User,o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-q",
+ "-K", keyStorePath,
+ "-W", "password",
+ "-P", trustStorePath,
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "-r",
+ "cn:Test User",
+ "cn=Test User,o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -864,7 +1205,23 @@
"uid=test.user,o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-o", "mech=CRAM-MD5",
+ "-o", "authid=u:test.user",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "givenName:Test",
+ "uid=test.user,o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -903,7 +1260,7 @@
e.getOperationalAttributes());
assertEquals(addOperation.getResultCode(), ResultCode.SUCCESS);
-
+
String[] args =
{
"-h", "127.0.0.1",
@@ -917,7 +1274,24 @@
"uid=test.user,o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-o", "mech=DIGEST-MD5",
+ "-o", "authid=u:test.user",
+ "-o", "authzid=u:test.user",
+ "-w", "password",
+ "--useCompareResultCode",
+ "--noPropertiesFile",
+ "givenName:Test",
+ "uid=test.user,o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -965,7 +1339,23 @@
"uid=test.user,o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-o", "mech=PLAIN",
+ "-o", "authid=dn:cn=Directory Manager",
+ "-w", "password",
+ "--noPropertiesFile",
+ "--useCompareResultCode",
+ "givenName:Test",
+ "uid=test.user,o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -994,7 +1384,23 @@
"o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--useCompareResultCode",
+ "--noPropertiesFile",
+ "o::" + Base64.encode("test".getBytes("UTF-8")),
+ "o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -1023,7 +1429,7 @@
"o=test"
};
- assertFalse(LDAPCompare.mainCompare(args, false, null, null) == 0);
+ assertFalse(LDAPCompare.mainCompare(args, false, null, null) == SUCCESS);
}
@@ -1057,7 +1463,23 @@
"o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--useCompareResultCode",
+ "--noPropertiesFile",
+ "o:<" + f.getAbsolutePath(),
+ "o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -1084,7 +1506,7 @@
"o=test"
};
- assertFalse(LDAPCompare.mainCompare(args, false, null, null) == 0);
+ assertFalse(LDAPCompare.mainCompare(args, false, null, null) == SUCCESS);
}
@@ -1114,7 +1536,24 @@
"o=test"
};
- assertEquals(LDAPCompare.mainCompare(args, false, null, System.err), 0);
+ String[] argsUseCompare =
+ {
+ "-h", "127.0.0.1",
+ "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
+ "-V", "3",
+ "-D", "cn=Directory Manager",
+ "-w", "password",
+ "--assertionFilter", "(o=test)",
+ "--useCompareResultCode",
+ "--noPropertiesFile",
+ "o:test",
+ "o=test"
+ };
+
+ assertEquals(LDAPCompare.mainCompare(args, false, null, System.err),
+ SUCCESS);
+ assertEquals(LDAPCompare.mainCompare(argsUseCompare, false, null,
+ System.err), COMPARE_TRUE);
}
@@ -1143,8 +1582,7 @@
"o:test",
"o=test"
};
-
- assertFalse(LDAPCompare.mainCompare(args, false, null, null) == 0);
+ assertFalse(LDAPCompare.mainCompare(args, false, null, null) == SUCCESS);
}
@@ -1211,7 +1649,7 @@
"o:test",
};
- assertFalse(LDAPCompare.mainCompare(args, false, null, null) == 0);
+ assertFalse(LDAPCompare.mainCompare(args, false, null, null) == SUCCESS);
}
@@ -1223,13 +1661,47 @@
public void testHelp()
{
String[] args = { "--help" };
- assertEquals(LDAPCompare.mainCompare(args, false, null, null), 0);
+ assertEquals(LDAPCompare.mainCompare(args, false, null, null), SUCCESS);
args = new String[] { "-H" };
- assertEquals(LDAPCompare.mainCompare(args, false, null, null), 0);
+ assertEquals(LDAPCompare.mainCompare(args, false, null, null), SUCCESS);
args = new String[] { "-?" };
- assertEquals(LDAPCompare.mainCompare(args, false, null, null), 0);
+ assertEquals(LDAPCompare.mainCompare(args, false, null, null), SUCCESS);
+ }
+
+
+
+ @DataProvider(name = "aggregateResults")
+ public Object[][] getAggregateResultCodeParamsAndResults()
+ {
+ return new Object[][] { { SUCCESS, SUCCESS, SUCCESS },
+ { SUCCESS, COMPARE_TRUE, COMPARE_TRUE },
+ { SUCCESS, COMPARE_FALSE, COMPARE_FALSE },
+ { SUCCESS, OPERATIONS_ERROR, OPERATIONS_ERROR },
+ { COMPARE_TRUE, COMPARE_TRUE, COMPARE_TRUE },
+ { COMPARE_TRUE, COMPARE_FALSE, COMPARE_FALSE },
+ { COMPARE_TRUE, OPERATIONS_ERROR, OPERATIONS_ERROR },
+ { COMPARE_FALSE, COMPARE_TRUE, COMPARE_FALSE },
+ { COMPARE_FALSE, COMPARE_FALSE, COMPARE_FALSE },
+ { COMPARE_FALSE, OPERATIONS_ERROR, OPERATIONS_ERROR },
+ { OPERATIONS_ERROR, COMPARE_TRUE, OPERATIONS_ERROR },
+ { OPERATIONS_ERROR, COMPARE_FALSE, OPERATIONS_ERROR },
+ { OPERATIONS_ERROR, OPERATIONS_ERROR, OPERATIONS_ERROR } };
+ }
+
+ /**
+ * Test the results of calling function
+ * {@link LDAPCompare#aggregateResultCode(int, int)}.
+ */
+ @Test(dataProvider = "aggregateResults")
+ public void testAggregateResultCode(int currentAggregatedResult,
+ int newResultCode, int finalAggregatedResult)
+ {
+ LDAPCompare obj = new LDAPCompare(new AtomicInteger(), null, null);
+ assertEquals(obj
+ .aggregateResultCode(currentAggregatedResult, newResultCode),
+ finalAggregatedResult);
}
}
--
Gitblit v1.10.0