From caf74d75e44a4769e6d4489970838703eedb745f Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Mon, 31 Oct 2016 14:00:38 +0000
Subject: [PATCH] OPENDJ-2272 OPENDJ-2773 Tools unit tests migration

---
 opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/ToolsTestCase.java |   66 +++++++++++++++++++++++++++++++-
 1 files changed, 63 insertions(+), 3 deletions(-)

diff --git a/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/ToolsTestCase.java b/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/ToolsTestCase.java
index 2ea2c2e..eb7045f 100644
--- a/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/ToolsTestCase.java
+++ b/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/ToolsTestCase.java
@@ -12,19 +12,79 @@
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
  * Copyright 2010 Sun Microsystems, Inc.
- * Portions copyright 2012 ForgeRock AS.
+ * Portions copyright 2012-2016 ForgeRock AS.
  */
 
 package com.forgerock.opendj.ldap.tools;
 
+import static org.fest.assertions.Assertions.assertThat;
+import static org.forgerock.util.Utils.closeSilently;
+
+import java.io.PrintStream;
+
+import org.forgerock.opendj.ldap.ByteStringBuilder;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.testng.ForgeRockTestCase;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 /**
  * An abstract class that all tools unit tests should extend. A tool represents
  * the classes found directly under the package com.forgerock.opendj.ldap.tools.
  */
-
-@Test(groups = { "precommit", "tools", "sdk" })
+@Test
 public abstract class ToolsTestCase extends ForgeRockTestCase {
+
+    ByteStringBuilder out;
+    ByteStringBuilder err;
+    PrintStream outStream;
+    PrintStream errStream;
+
+    @BeforeMethod
+    void refreshStream() {
+        out = new ByteStringBuilder();
+        err = new ByteStringBuilder();
+        outStream = new PrintStream(out.asOutputStream());
+        errStream = new PrintStream(err.asOutputStream());
+    }
+
+    @AfterMethod
+    void closeStream() {
+        closeSilently(outStream, errStream);
+    }
+
+    /**
+     * Tests the LDAPSearch tool with sets of invalid arguments.
+     *
+     * @param args
+     *         The set of arguments to use for the LDAPDelete tool.
+     * @param invalidReason
+     *         The reason the provided set of arguments is invalid.
+     */
+    @Test(dataProvider = "invalidArgs")
+    public void testInvalidArguments(String[] args, String invalidReason) throws Exception {
+        assertThat(runTool(args)).isEqualTo(ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue());
+        assertThat(errOnSingleLine()).contains(invalidReason);
+        assertThat(out.toString()).isEmpty();
+    }
+
+    /** Tests the LDAPSearch tool with the "--help" option. */
+    @Test
+    public void testHelp() throws Exception {
+        final int success = ResultCode.SUCCESS.intValue();
+        assertThat(runTool("--help")).isEqualTo(success);
+        assertThat(runTool("-H")).isEqualTo(success);
+        assertThat(runTool("-?")).isEqualTo(success);
+    }
+
+    String errOnSingleLine() {
+        return err.toString().replace(System.lineSeparator(), " ");
+    }
+
+    int runTool(final String... args) {
+        return Utils.runTool(createInstance(), args);
+    }
+
+    abstract ToolConsoleApplication createInstance();
 }

--
Gitblit v1.10.0