From b9ec7066756ce4ae444f761cfd0cd78acf8d3878 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 12 Aug 2015 10:37:52 +0000
Subject: [PATCH] Extracted methods to remove duplicated code
---
opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxPrivilegeTestCase.java | 212 ++++++++++++++--------------------------------------
1 files changed, 59 insertions(+), 153 deletions(-)
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxPrivilegeTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxPrivilegeTestCase.java
index a896f6e..54888ab 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxPrivilegeTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxPrivilegeTestCase.java
@@ -38,9 +38,6 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.opends.server.TestCaseUtils;
-import org.opends.server.backends.task.Task;
-import org.opends.server.backends.task.TaskBackend;
-import org.opends.server.backends.task.TaskState;
import org.opends.server.controls.ProxiedAuthV1Control;
import org.opends.server.controls.ProxiedAuthV2Control;
import org.opends.server.core.AddOperationBasis;
@@ -61,6 +58,7 @@
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
+import static org.forgerock.opendj.ldap.ModificationType.*;
import static org.opends.messages.ProtocolMessages.*;
import static org.opends.server.protocols.internal.InternalClientConnection.*;
import static org.opends.server.protocols.internal.Requests.*;
@@ -219,38 +217,23 @@
// Build the array of connections we will use to perform the tests.
- JmxConnectionHandler jmxCtx = getJmxConnectionHandler();
ArrayList<JmxClientConnection> connList = new ArrayList<>();
ArrayList<Boolean> successList = new ArrayList<>();
- String userDN ;
- Entry userEntry ;
- AuthenticationInfo authInfo;
+ JmxConnectionHandler jmxCtx = getJmxConnectionHandler();
connList.add(new JmxClientConnection(jmxCtx,new AuthenticationInfo()));
successList.add(false);
- userDN = "cn=Unprivileged Root,cn=Root DNs,cn=config";
- userEntry = DirectoryServer.getEntry(DN.valueOf(userDN));
- authInfo = new AuthenticationInfo(userEntry, true);
- connList.add(new JmxClientConnection(jmxCtx,authInfo));
+ connList.add(newJmxClientConnection(jmxCtx, "cn=Unprivileged Root,cn=Root DNs,cn=config", true));
successList.add(false);
- userDN = "cn=Proxy Root,cn=Root DNs,cn=config";
- userEntry = DirectoryServer.getEntry(DN.valueOf(userDN));
- authInfo = new AuthenticationInfo(userEntry, true);
- connList.add(new JmxClientConnection(jmxCtx,authInfo));
+ connList.add(newJmxClientConnection(jmxCtx, "cn=Proxy Root,cn=Root DNs,cn=config", true));
successList.add(true);
- userDN = "cn=Unprivileged User,o=test";
- userEntry = DirectoryServer.getEntry(DN.valueOf(userDN));
- authInfo = new AuthenticationInfo(userEntry, false);
- connList.add(new JmxClientConnection(jmxCtx,authInfo));
+ connList.add(newJmxClientConnection(jmxCtx, "cn=Unprivileged User,o=test", false));
successList.add(false);
- userDN = "cn=Privileged User,o=test";
- userEntry = DirectoryServer.getEntry(DN.valueOf(userDN));
- authInfo = new AuthenticationInfo(userEntry, false);
- connList.add(new JmxClientConnection(jmxCtx,authInfo));
+ connList.add(newJmxClientConnection(jmxCtx, "cn=Privileged User,o=test", false));
successList.add(true);
@@ -287,7 +270,13 @@
);
}
-
+ private JmxClientConnection newJmxClientConnection(JmxConnectionHandler jmxCtx, String userDN, boolean isRoot)
+ throws DirectoryException
+ {
+ Entry userEntry = DirectoryServer.getEntry(DN.valueOf(userDN));
+ AuthenticationInfo authInfo = new AuthenticationInfo(userEntry, isRoot);
+ return new JmxClientConnection(jmxCtx, authInfo);
+ }
/**
* Cleans up anything that might be left around after running the tests in
@@ -299,43 +288,16 @@
public void cleanUp()
throws Exception
{
- InternalClientConnection conn = InternalClientConnection
- .getRootConnection();
-
- DeleteOperation deleteOperation = conn.processDelete(DN
- .valueOf("cn=Unprivileged Root,cn=Root DNs,cn=config"));
- assertEquals(deleteOperation.getResultCode(), ResultCode.SUCCESS);
-
- deleteOperation = conn.processDelete(DN
- .valueOf("cn=Unprivileged JMX Root,cn=Root DNs,cn=config"));
- assertEquals(deleteOperation.getResultCode(), ResultCode.SUCCESS);
-
- deleteOperation = conn.processDelete(DN
- .valueOf("cn=Proxy Root,cn=Root DNs,cn=config"));
- assertEquals(deleteOperation.getResultCode(), ResultCode.SUCCESS);
-
- deleteOperation = conn.processDelete(DN
- .valueOf("cn=Privileged User,o=test"));
- assertEquals(deleteOperation.getResultCode(), ResultCode.SUCCESS);
-
- deleteOperation = conn.processDelete(DN
- .valueOf("cn=UnPrivileged User,o=test"));
- assertEquals(deleteOperation.getResultCode(), ResultCode.SUCCESS);
-
- deleteOperation = conn.processDelete(DN
- .valueOf("cn=PWReset Target,o=test"));
- assertEquals(deleteOperation.getResultCode(), ResultCode.SUCCESS);
-
- deleteOperation = conn.processDelete(DN
- .valueOf("cn=test1 user,dc=unindexed,dc=jeb"));
- assertEquals(deleteOperation.getResultCode(), ResultCode.SUCCESS);
-
- deleteOperation = conn.processDelete(DN
- .valueOf("cn=test2 user,dc=unindexed,dc=jeb"));
- assertEquals(deleteOperation.getResultCode(), ResultCode.SUCCESS);
-
- deleteOperation = conn.processDelete(DN.valueOf("dc=unindexed,dc=jeb"));
- assertEquals(deleteOperation.getResultCode(), ResultCode.SUCCESS);
+ processDelete(
+ "cn=Unprivileged Root,cn=Root DNs,cn=config",
+ "cn=Unprivileged JMX Root,cn=Root DNs,cn=config",
+ "cn=Proxy Root,cn=Root DNs,cn=config",
+ "cn=Privileged User,o=test",
+ "cn=UnPrivileged User,o=test",
+ "cn=PWReset Target,o=test",
+ "cn=test1 user,dc=unindexed,dc=jeb",
+ "cn=test2 user,dc=unindexed,dc=jeb",
+ "dc=unindexed,dc=jeb");
for (int i = 0; connections != null && i < connections.length; i++)
{
@@ -345,7 +307,14 @@
TestCaseUtils.disableBackend("unindexedRoot");
}
-
+ private void processDelete(String... userDNs) throws DirectoryException
+ {
+ for (String userDN : userDNs)
+ {
+ DeleteOperation deleteOp = getRootConnection().processDelete(DN.valueOf(userDN));
+ assertEquals(deleteOp.getResultCode(), ResultCode.SUCCESS);
+ }
+ }
/**
* Retrieves a set of data that can be used for performing the tests. The
@@ -382,7 +351,7 @@
OpendsJmxConnector opendsConnector;
int jmxPort = TestCaseUtils.getServerJmxPort() ;
HashMap<String, Object> env = new HashMap<>();
- String user = "cn=Unprivileged JMX Root,cn=Root DNs,cn=config";
+ final String user = "cn=Unprivileged JMX Root,cn=Root DNs,cn=config";
String password = "password";
String[] credentials = new String[] { user, password };
env.put("jmx.remote.credentials", credentials);
@@ -405,13 +374,12 @@
assertEquals(message.toString(), e.getMessage());
}
+ final DN userDN = DN.valueOf(user);
+
// Add JMX_READ privilege
InternalClientConnection rootConnection = getRootConnection();
- ArrayList<Modification> mods = new ArrayList<>();
- mods.add(new Modification(ModificationType.ADD, Attributes.create(
- "ds-privilege-name", "jmx-read")));
- ModifyOperation modifyOperation =
- rootConnection.processModify(DN.valueOf(user), mods);
+ ArrayList<Modification> mods = newModifications(ADD, "ds-privilege-name", "jmx-read");
+ ModifyOperation modifyOperation = rootConnection.processModify(userDN, mods);
assertEquals(modifyOperation.getResultCode(), ResultCode.SUCCESS);
// Try connection withoutJMX_READ privilege
@@ -430,11 +398,8 @@
}
// remove JMX_READ privilege
- mods = new ArrayList<>();
- mods.add(new Modification(ModificationType.DELETE,
- Attributes.create("ds-privilege-name", "jmx-read")));
- modifyOperation =
- rootConnection.processModify(DN.valueOf(user), mods);
+ mods = newModifications(DELETE, "ds-privilege-name", "jmx-read");
+ modifyOperation = rootConnection.processModify(userDN, mods);
assertEquals(modifyOperation.getResultCode(), ResultCode.SUCCESS);
// Try connection withoutJMX_READ privilege
@@ -605,8 +570,7 @@
// Try to modify the entry to add a description.
- ArrayList<Modification> mods =
- newArrayList(new Modification(ModificationType.REPLACE, Attributes.create("description", "foo")));
+ ArrayList<Modification> mods = newModifications(REPLACE, "description", "foo");
ModifyOperationBasis modifyOperation = new ModifyOperationBasis(conn,
conn.nextOperationID(), conn.nextMessageID(), controls, e.getName(),
@@ -661,9 +625,7 @@
assertEquals(deleteOperation.getResultCode(),
ResultCode.AUTHORIZATION_DENIED);
- InternalClientConnection rootConnection =
- InternalClientConnection.getRootConnection();
- DeleteOperation delOp = rootConnection.processDelete(newEntryDN);
+ DeleteOperation delOp = getRootConnection().processDelete(newEntryDN);
assertEquals(delOp.getResultCode(), ResultCode.SUCCESS);
}
}
@@ -793,8 +755,7 @@
// Try to modify the entry to add a description.
- ArrayList<Modification> mods =
- newArrayList(new Modification(ModificationType.REPLACE, Attributes.create("description", "foo")));
+ ArrayList<Modification> mods = newModifications(REPLACE, "description", "foo");
ModifyOperationBasis modifyOperation =
new ModifyOperationBasis(conn,
@@ -856,14 +817,15 @@
ResultCode.AUTHORIZATION_DENIED,
"Unexpected delete success for user " + authDN);
- InternalClientConnection rootConnection =
- InternalClientConnection.getRootConnection();
- DeleteOperation delOp = rootConnection.processDelete(newEntryDN);
+ DeleteOperation delOp = getRootConnection().processDelete(newEntryDN);
assertEquals(delOp.getResultCode(), ResultCode.SUCCESS);
}
}
-
+ private ArrayList<Modification> newModifications(ModificationType modType, String attrName, String attrValue)
+ {
+ return newArrayList(new Modification(modType, Attributes.create(attrName, attrValue)));
+ }
/**
* Tests to ensure that the use of the Directory Server will properly respect
@@ -967,9 +929,7 @@
// Modify the user entry to add the JMX_READ privilege and verify that
// the client connection reflects that.
- ArrayList<Modification> mods = new ArrayList<>();
- mods.add(new Modification(ModificationType.ADD,
- Attributes.create("ds-privilege-name", "jmx-read")));
+ ArrayList<Modification> mods = newModifications(ADD, "ds-privilege-name", "jmx-read");
ModifyOperation modifyOperation = rootConnection.processModify(dn, mods);
assertEquals(modifyOperation.getResultCode(), ResultCode.SUCCESS);
assertTrue(testConnection.hasPrivilege(Privilege.JMX_READ, null));
@@ -977,9 +937,7 @@
// Take the privilege away from the user and verify that it is recognized
// immediately.
- mods.clear();
- mods.add(new Modification(ModificationType.DELETE,
- Attributes.create("ds-privilege-name", "jmx-read")));
+ mods = newModifications(DELETE, "ds-privilege-name", "jmx-read");
modifyOperation = rootConnection.processModify(dn, mods);
assertEquals(modifyOperation.getResultCode(), ResultCode.SUCCESS);
assertFalse(testConnection.hasPrivilege(Privilege.JMX_READ, null));
@@ -1000,94 +958,42 @@
public void testUpdateRootPrivileges()
throws Exception
{
- // Make sure that a root connection doesn't have the proxied auth
- // privilege.
- DN unprivRootDN = DN.valueOf("cn=Unprivileged Root,cn=Root DNs,cn=config");
- Entry unprivRootEntry = DirectoryServer.getEntry(unprivRootDN);
- AuthenticationInfo authInfo = new AuthenticationInfo(unprivRootEntry, true);
+ // Make sure that a root connection doesn't have the proxied auth privilege.
JmxConnectionHandler jmxCtx = getJmxConnectionHandler();
- JmxClientConnection unprivRootConn =
- new JmxClientConnection(jmxCtx,authInfo);
+ DN unprivRootDN = DN.valueOf("cn=Unprivileged Root,cn=Root DNs,cn=config");
+ JmxClientConnection unprivRootConn = newJmxClientConnection(jmxCtx, unprivRootDN);
assertFalse(unprivRootConn.hasPrivilege(Privilege.PROXIED_AUTH, null));
// Update the set of root privileges to include proxied auth.
InternalClientConnection conn = getRootConnection();
- ArrayList<Modification> mods = new ArrayList<>();
- mods.add(new Modification(ModificationType.ADD,
- Attributes.create("ds-cfg-default-root-privilege-name",
- "proxied-auth")));
+ ArrayList<Modification> mods = newModifications(ADD, "ds-cfg-default-root-privilege-name", "proxied-auth");
ModifyOperation modifyOperation =
conn.processModify(DN.valueOf("cn=Root DNs,cn=config"), mods);
assertEquals(modifyOperation.getResultCode(), ResultCode.SUCCESS);
// Get a new root connection and verify that it now has proxied auth.
- unprivRootEntry = DirectoryServer.getEntry(unprivRootDN);
- authInfo = new AuthenticationInfo(unprivRootEntry, true);
- unprivRootConn = new JmxClientConnection(jmxCtx,authInfo);
+ unprivRootConn = newJmxClientConnection(jmxCtx, unprivRootDN);
assertTrue(unprivRootConn.hasPrivilege(Privilege.PROXIED_AUTH, null));
// Update the set of root privileges to revoke proxied auth.
- mods.clear();
- mods.add(new Modification(ModificationType.DELETE,
- Attributes.create("ds-cfg-default-root-privilege-name",
- "proxied-auth")));
+ mods = newModifications(DELETE, "ds-cfg-default-root-privilege-name", "proxied-auth");
modifyOperation =
conn.processModify(DN.valueOf("cn=Root DNs,cn=config"), mods);
assertEquals(modifyOperation.getResultCode(), ResultCode.SUCCESS);
- // Get a new root connection and verify that it no longer has proxied auth.
- unprivRootEntry = DirectoryServer.getEntry(unprivRootDN);
- authInfo = new AuthenticationInfo(unprivRootEntry, true);
- unprivRootConn = new JmxClientConnection(jmxCtx,authInfo);
+ unprivRootConn = newJmxClientConnection(jmxCtx, unprivRootDN);
assertFalse(unprivRootConn.hasPrivilege(Privilege.PROXIED_AUTH, null));
}
-
-
- /**
- * Retrieves the specified task from the server, waiting for it to finish all
- * the running its going to do before returning.
- *
- * @param taskEntryDN The DN of the entry for the task to retrieve.
- *
- * @return The requested task entry.
- *
- * @throws Exception If an unexpected problem occurs.
- */
- private Task getCompletedTask(DN taskEntryDN) throws Exception
+ private JmxClientConnection newJmxClientConnection(JmxConnectionHandler jmxCtx, DN entryDN) throws DirectoryException
{
- TaskBackend taskBackend =
- (TaskBackend) DirectoryServer.getBackend(DN.valueOf("cn=tasks"));
- Task task = taskBackend.getScheduledTask(taskEntryDN);
- if (task == null)
- {
- long stopWaitingTime = System.currentTimeMillis() + 10000L;
- while (task == null && System.currentTimeMillis() < stopWaitingTime)
- {
- Thread.sleep(10);
- task = taskBackend.getScheduledTask(taskEntryDN);
- }
- }
-
- assertNotNull(task, "There is no such task " + taskEntryDN);
- if (! TaskState.isDone(task.getTaskState()))
- {
- long stopWaitingTime = System.currentTimeMillis() + 20000L;
- while (!TaskState.isDone(task.getTaskState())
- && System.currentTimeMillis() < stopWaitingTime)
- {
- Thread.sleep(10);
- }
- }
-
- assertTrue(TaskState.isDone(task.getTaskState()),
- "Task " + taskEntryDN + " did not complete in a timely manner.");
- return task;
+ Entry entry = DirectoryServer.getEntry(entryDN);
+ AuthenticationInfo authInfo = new AuthenticationInfo(entry, true);
+ return new JmxClientConnection(jmxCtx, authInfo);
}
}
-
--
Gitblit v1.10.0