package org.atricore.idbus.kernel.main.test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.atricore.idbus.connectors.jdoidentityvault.domain.dao.IdentityPartitionDAO;
import org.atricore.idbus.connectors.jdoidentityvault.domain.dao.IdentityVaultDAO;
import org.atricore.idbus.connectors.jdoidentityvault.domain.dao.impl.IdentityPartitionDAOImpl;
import org.atricore.idbus.connectors.jdoidentityvault.domain.dao.impl.IdentityVaultDAOImpl;
import org.atricore.idbus.kernel.main.provisioning.spi.IdentityPartition;
import org.atricore.idbus.kernel.main.provisioning.spi.IdentityVault;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* @author <a href=mailto:sgonzalez@atricore.org>Sebastian Gonzalez Oyuela</a>
*/
public class AccountManagementTest extends AbstractDBServerTest {
private static final Log log = LogFactory.getLog(AccountManagementTest.class);
@Before
public void setup() {
super.setup();
IdentityVaultDAO vaultDao = new IdentityVaultDAOImpl(pm);
IdentityPartitionDAO partitionDao = new IdentityPartitionDAOImpl(pm);
for (IdentityVault vault : vaultDao.findAll()) {
vaultDao.deleteObject(vault);
}
for (IdentityPartition partition : partitionDao.findAll()) {
partitionDao.deleteObject(partition);
}
}
@Test
public void testIdentityVaultCRUD() throws Exception {
IdentityVaultDAO vaultDao = new IdentityVaultDAOImpl(pm);
IdentityPartitionDAO partitionDao = new IdentityPartitionDAOImpl(pm);
String p1Name = "p1";
String p1Description = "Partition One";
IdentityPartition partition = new IdentityPartition();
partition.setName(p1Name);
partition.setDescription(p1Description);
List<IdentityPartition> parts = new ArrayList<IdentityPartition>();
parts.add(partition);
String name = "v1";
String description = "Vault One";
String host = "localhost";
int port = 1528;
String usr = "user1";
String pwd = "user1pwd";
IdentityVault vault = new IdentityVault();
vault.setName(name);
vault.setDescription(description);
vault.setHost(host);
vault.setPort(port);
vault.setUsername(usr);
vault.setPassword(pwd);
vault.setPartitions(parts);
vault = vaultDao.createObject(vault);
assert vault != null;
assert vault.getId() > 0;
assert vault.getName().equals(name);
assert vault.getPartitions() != null;
assert vault.getPartitions().size() == 1;
for (IdentityPartition p : vault.getPartitions()) {
assert p.getVault() != null;
assert p.getVault().getId() == vault.getId();
}
log.info("Created Vault : " + vault.getId());
long id = vault.getId();
vault = vaultDao.findObjectById(id);
assert vault != null;
assert vault.getId() == id;
assert vault.getName().equals(name);
log.info("Retrieved Vault : " + vault.getId() + ":" + vault.getName());
vault.setName(name + ".1");
vault = vaultDao.updateObject(vault);
assert vault != null;
assert vault.getId() == id;
assert vault.getName().equals(name + ".1");
vault = vaultDao.findObjectById(id);
log.info("Updated Vault : " + vault.getId() + ":" + vault.getName());
vaultDao.deleteObject(vault);
try {
vault = vaultDao.findObjectById(id);
assert false : "Vaul was not deleted";
} catch (javax.jdo.JDOObjectNotFoundException e) {
// OK
}
log.info("Deleted Vault : " + vault.getId() + ":" + vault.getName());
IdentityVault vault2 = new IdentityVault();
vault2.setName(name + ".2");
vault2.setDescription(description);
vault2.setHost(host);
vault2.setPort(port);
vault2.setUsername(usr);
vault2.setPassword(pwd);
vaultDao.createObject(vault2);
IdentityVault vault3 = new IdentityVault();
vault3.setName(name + ".3");
vault3.setDescription(description);
vault3.setHost(host);
vault3.setPort(port);
vault3.setUsername(usr);
vault3.setPassword(pwd);
vaultDao.createObject(vault3);
Collection<IdentityVault> vaults = vaultDao.findAll();
assert vaults != null;
assert vaults.size() == 2 : "Found " + vaults.size();
for (IdentityVault v : vaults) {
assert v.getId() == vault3.getId() || v.getId() == vault2.getId();
}
}
@Test
public void testIdentityPartitionCRUD() throws Exception {
IdentityVaultDAO vaultDao = new IdentityVaultDAOImpl(pm);
IdentityPartitionDAO partitionDao = new IdentityPartitionDAOImpl(pm);
String v2Name = "v2";
String v2Description = "Vault Two";
String v2Host = "localhost-2";
int v2Port = 2222;
String v2Usr = "user2";
String v2Pwd = "user2pwd";
IdentityVault vault2 = new IdentityVault();
vault2.setName(v2Name + ".2");
vault2.setDescription(v2Description);
vault2.setHost(v2Host);
vault2.setPort(v2Port);
vault2.setUsername(v2Usr);
vault2.setPassword(v2Pwd);
vaultDao.createObject(vault2);
String v3Name = "v3";
String v3Description = "Vault Three";
String v3Host = "localhost-3";
int v3Port = 3333;
String v3Usr = "user3";
String v3Pwd = "user3pwd";
IdentityVault vault3 = new IdentityVault();
vault3.setName(v3Name);
vault3.setDescription(v3Description);
vault3.setHost(v3Host);
vault3.setPort(v3Port);
vault3.setUsername(v3Usr);
vault3.setPassword(v3Pwd);
vaultDao.createObject(vault3);
String name = "v1";
String description = "Partition One";
IdentityPartition partition = new IdentityPartition();
partition.setName(name);
partition.setDescription(description);
partition.setVault(vault2);
vault2.getPartitions().add(partition);
partition = partitionDao.createObject(partition);
assert partition != null;
assert partition.getId() > 0;
assert partition.getName().equals(name);
assert partition.getVault() != null;
assert partition.getVault().getId() == vault2.getId();
log.info("Created Partition : " + partition.getId());
long id = partition.getId();
partition = partitionDao.findObjectById(id);
assert partition != null;
assert partition.getId() == id;
assert partition.getName().equals(name);
assert partition.getVault() != null;
assert partition.getVault().getId() == vault2.getId();
log.info("Retrieved Partition : " + partition.getId() + ":" + partition.getName());
partition.setName(name + ".1");
partition.setVault(vault3);
partition = partitionDao.updateObject(partition);
assert partition != null;
assert partition.getId() == id;
assert partition.getName().equals(name + ".1");
assert partition.getVault() != null;
assert partition.getVault().getId() == vault3.getId();
partition = partitionDao.findObjectById(id);
log.info("Updated Partition : " + partition.getId() + ":" + partition.getName());
partitionDao.deleteObject(partition);
try {
partition = partitionDao.findObjectById(id);
assert false : "Vaul was not deleted";
} catch (javax.jdo.JDOObjectNotFoundException e) {
// OK
}
log.info("Deleted Partition : " + partition.getId() + ":" + partition.getName());
IdentityPartition partition2 = new IdentityPartition();
partition2.setName(name + ".2");
partition2.setDescription(description);
partitionDao.createObject(partition2);
IdentityPartition partition3 = new IdentityPartition();
partition3.setName(name + ".3");
partition3.setDescription(description);
partitionDao.createObject(partition3);
Collection<IdentityPartition> partitions = partitionDao.findAll();
assert partitions != null;
assert partitions.size() == 2 : "Found " + partitions.size();
for (IdentityPartition v : partitions) {
assert v.getId() == partition3.getId() || v.getId() == partition2.getId();
}
}
}