/* * The contents of this file are subject to the terms of the Common Development and * Distribution License (the License). You may not use this file except in compliance with the * License. * * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the * specific language governing permission and limitations under the License. * * When distributing Covered Software, include this CDDL Header Notice in each file and include * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL * Header, with the fields enclosed by brackets [] replaced by your own identifying * information: "Portions Copyright [year] [name of copyright owner]". * * Copyright 2016 ForgeRock AS. */ package com.forgerock.opendj.ldap.tools; import static com.forgerock.opendj.ldap.tools.ToolLdapServer.DIRECTORY_MANAGER; import static org.fest.assertions.Assertions.assertThat; import static com.forgerock.opendj.ldap.tools.ToolsTestUtils.buildArgs; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.forgerock.opendj.ldap.tools.ToolsTestUtils.Args; import org.forgerock.opendj.ldap.ResultCode; import org.forgerock.opendj.ldap.controls.Control; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @SuppressWarnings("javadocs") @Test abstract class LDAPToolsTestCase extends ToolsTestCase { List controls; ToolLdapServer server; @BeforeClass void setUp() throws IOException { server = createFakeServer(); server.start(); } @AfterClass void tearDown() throws IOException { server.stop(); } @BeforeMethod void initializeTest() { controls = new ArrayList<>(); } void assertThatControlsHaveBeenSentInRequest(final List requestControls) { if (!controls.isEmpty()) { int i = 0; assertThat(requestControls.size()).isEqualTo(controls.size()); for (final Control requestControl : requestControls) { final Control clientControl = controls.get(i++); assertThat(requestControl.getOID()).isEqualTo(clientControl.getOID()); assertThat(requestControl.isCritical()).isEqualTo(clientControl.isCritical()); assertThat(requestControl.getValue()).isEqualTo(clientControl.getValue()); } } } /** * Run this ldap* tool on this mocked server. * Use root user DN and root user password common to the tests. * Other constant arguments should be added by the tool implementation by overriding * {@link LDAPToolsTestCase#toolConstantArguments()} * * @param specificTestArgs * Arguments specific for a test case. * @return An int which represents the code returned by the ldap* tool */ int runToolOnMockedServer(final String... specificTestArgs) { return runToolOnMockedServer(ResultCode.SUCCESS, specificTestArgs); } int runToolOnMockedServer(final ResultCode expectedRC, final String... specificTestArgs) { final int res = runTool(buildArgs().add("-h", server.getHostName()) .add("-p", server.getPort()) .add("-D", DIRECTORY_MANAGER) .add("-w", "password") .addAll(toolConstantArguments()) .addAll(specificTestArgs) .toArray()); assertThat(res).isEqualTo(expectedRC.intValue()); return res; } Args toolConstantArguments() { return buildArgs(); } abstract ToolLdapServer createFakeServer(); }