/*
|
* CDDL HEADER START
|
*
|
* The contents of this file are subject to the terms of the
|
* Common Development and Distribution License, Version 1.0 only
|
* (the "License"). You may not use this file except in compliance
|
* with the License.
|
*
|
* You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
|
* or http://forgerock.org/license/CDDLv1.0.html.
|
* See the License for the specific language governing permissions
|
* and limitations under the License.
|
*
|
* When distributing Covered Code, include this CDDL HEADER in each
|
* file and include the License file at legal-notices/CDDLv1_0.txt.
|
* If applicable, add the following below this CDDL HEADER, with the
|
* fields enclosed by brackets "[]" replaced with your own identifying
|
* information:
|
* Portions Copyright [yyyy] [name of copyright owner]
|
*
|
* CDDL HEADER END
|
*
|
*
|
* Copyright 2013-2014 ForgeRock AS.
|
*/
|
package com.forgerock.opendj.ldap.tools;
|
|
import static org.fest.assertions.Assertions.*;
|
import static org.forgerock.util.Utils.*;
|
|
import static com.forgerock.opendj.ldap.tools.ToolsMessages.*;
|
|
import java.io.PrintStream;
|
|
import org.forgerock.i18n.LocalizableMessage;
|
import org.forgerock.opendj.ldap.ByteStringBuilder;
|
import org.testng.annotations.AfterMethod;
|
import org.testng.annotations.BeforeMethod;
|
import org.testng.annotations.DataProvider;
|
import org.testng.annotations.Test;
|
|
@SuppressWarnings("javadoc")
|
public class MakeLDIFITCase extends ToolsITCase {
|
|
private ByteStringBuilder out;
|
private ByteStringBuilder err;
|
private PrintStream outStream;
|
private PrintStream errStream;
|
|
@BeforeMethod
|
private void refreshStreams() {
|
out = new ByteStringBuilder();
|
err = new ByteStringBuilder();
|
outStream = new PrintStream(out.asOutputStream());
|
errStream = new PrintStream(err.asOutputStream());
|
}
|
|
@AfterMethod
|
private void closeStreams() {
|
closeSilently(outStream, errStream);
|
}
|
|
@DataProvider
|
Object[][] validArguments() throws Exception {
|
return new Object[][] {
|
{ // check that help message is displayed
|
args("-H"),
|
expectedOutput(INFO_MAKELDIF_TOOL_DESCRIPTION.get()) },
|
|
{ args("-c", "numusers=1", "example.template"),
|
// 2 base entries + users
|
expectedOutput(INFO_MAKELDIF_PROCESSING_COMPLETE.get(3)) },
|
|
{ args("-c", "numusers=5", "example.template"),
|
// 2 base entries + users
|
expectedOutput(INFO_MAKELDIF_PROCESSING_COMPLETE.get(7)) },
|
};
|
}
|
|
@DataProvider
|
Object[][] invalidArguments() throws Exception {
|
return new Object[][] {
|
{ // check that usage is written to output when arguments are invalid
|
args(),
|
expectedOutput(INFO_MAKELDIF_TOOL_DESCRIPTION.get()) },
|
|
{ // check that there is an argument error when no arg provided
|
args(),
|
expectedOutput(ERR_ERROR_PARSING_ARGS.get("")) },
|
|
{ args("-r", "unknown/path" , "example.template"),
|
expectedOutput(ERR_LDIF_GEN_TOOL_NO_SUCH_RESOURCE_DIRECTORY.get("unknown/path")) },
|
|
{ args("-o", "unknown/path" , "example.template"),
|
expectedOutput(ERR_MAKELDIF_UNABLE_TO_CREATE_LDIF.get("unknown/path", "")) },
|
|
{ args("-s", "non-numeric" , "example.template"),
|
expectedOutput(ERR_ERROR_PARSING_ARGS.get("")) },
|
};
|
}
|
|
@Test(dataProvider = "validArguments")
|
public void testMakeLDIFValidUseCases(final String[] arguments, final LocalizableMessage expectedOut)
|
throws Exception {
|
run(arguments, true, expectedOut);
|
}
|
|
@Test(dataProvider = "invalidArguments")
|
public void testMakeLDIFInvalidUseCases(final String[] arguments, final LocalizableMessage expectedErr)
|
throws Exception {
|
run(arguments, false, expectedErr);
|
}
|
|
private void run(final String[] arguments, final boolean expectsSuccess, final LocalizableMessage expectedOutput)
|
throws Exception {
|
final MakeLDIF makeLDIF = new MakeLDIF(outStream, errStream);
|
int retCode = makeLDIF.run(arguments);
|
checkOuputStreams(out, err, expectedOutput, "");
|
if (expectsSuccess) {
|
assertThat(retCode).isEqualTo(0);
|
} else {
|
assertThat(retCode).isNotEqualTo(0);
|
}
|
}
|
|
/** A message the error output is expected to contain. */
|
private LocalizableMessage expectedOutput(LocalizableMessage val) {
|
return val;
|
}
|
|
}
|