package org.zstack.test.ldap;
import com.unboundid.ldap.sdk.LDAPException;
import com.unboundid.ldap.sdk.LDAPInterface;
import com.unboundid.ldap.sdk.SearchResult;
import com.unboundid.ldap.sdk.SearchScope;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.zapodot.junit.ldap.EmbeddedLdapRule;
import org.zapodot.junit.ldap.EmbeddedLdapRuleBuilder;
import org.zstack.core.cloudbus.CloudBus;
import org.zstack.core.componentloader.ComponentLoader;
import org.zstack.core.db.DatabaseFacade;
import org.zstack.header.identity.SessionInventory;
import org.zstack.header.message.APIEvent;
import org.zstack.ldap.APIAddLdapServerMsg;
import org.zstack.ldap.LdapManager;
import org.zstack.portal.apimediator.PortalSystemTags;
import org.zstack.test.Api;
import org.zstack.test.ApiSender;
import org.zstack.test.ApiSenderException;
import org.zstack.test.DBUtil;
import org.zstack.test.deployer.Deployer;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
import java.util.Arrays;
public class TestLdapConn {
public static final String DOMAIN_DSN = "dc=example,dc=com";
@Rule
public EmbeddedLdapRule embeddedLdapRule = EmbeddedLdapRuleBuilder.newInstance().bindingToPort(1888).
usingDomainDsn(DOMAIN_DSN).importingLdifs("users-import.ldif").build();
CLogger logger = Utils.getLogger(TestLdapConn.class);
Deployer deployer;
Api api;
ComponentLoader loader;
CloudBus bus;
DatabaseFacade dbf;
SessionInventory session;
LdapManager ldapManager;
@Before
public void setUp() throws Exception {
DBUtil.reDeployDB();
deployer = new Deployer("deployerXml/ldap/TestLdapConn.xml");
deployer.addSpringConfig("LdapManagerImpl.xml");
deployer.build();
api = deployer.getApi();
loader = deployer.getComponentLoader();
ldapManager = loader.getComponent(LdapManager.class);
bus = loader.getComponent(CloudBus.class);
dbf = loader.getComponent(DatabaseFacade.class);
session = api.loginAsAdmin();
}
@Test
public void test() throws ApiSenderException, LDAPException {
final LDAPInterface ldapConnection = embeddedLdapRule.ldapConnection();
final SearchResult searchResult = ldapConnection.search(DOMAIN_DSN, SearchScope.SUB, "(objectClass=person)");
Assert.assertEquals(3, searchResult.getEntryCount());
ApiSender sender = api.getApiSender();
// test conn
int flag = 1;
logger.debug("Execute Path:" + flag);
switch (flag) {
case 0: {
APIAddLdapServerMsg msg21 = new APIAddLdapServerMsg();
msg21.setSystemTags(Arrays.asList(PortalSystemTags.VALIDATION_ONLY.getTagFormat()));
msg21.setName("miao");
msg21.setDescription("miao desc");
msg21.setUrl("ldap://localhost:1888");
msg21.setBase(DOMAIN_DSN);
msg21.setUsername("");
msg21.setPassword("");
msg21.setEncryption("None");
msg21.setSession(session);
msg21.setTimeout(10);
APIEvent evt21 = sender.send(msg21, APIEvent.class);
Assert.assertTrue(evt21.isSuccess());
}
break;
case 1: {
APIAddLdapServerMsg msg33 = new APIAddLdapServerMsg();
msg33.setSystemTags(Arrays.asList(PortalSystemTags.VALIDATION_ONLY.getTagFormat()));
msg33.setName("miao");
msg33.setDescription("miao desc");
msg33.setUrl("ldap://172.20.11.200:389");
msg33.setBase("dc=mevoco,dc=com");
msg33.setUsername("uid=admin,cn=users,cn=accounts,dc=mevoco,dc=com");
msg33.setPassword("password");
msg33.setEncryption("TLS");
msg33.setSession(session);
msg33.setTimeout(10);
APIEvent evt33 = sender.send(msg33, APIEvent.class);
Assert.assertTrue(evt33.isSuccess());
}
break;
case 2: {
APIAddLdapServerMsg msg33 = new APIAddLdapServerMsg();
msg33.setSystemTags(Arrays.asList(PortalSystemTags.VALIDATION_ONLY.getTagFormat()));
msg33.setName("miao");
msg33.setDescription("miao desc");
msg33.setUrl("ldap://172.20.11.200:389");
msg33.setBase("dc=mevoco,dc=com");
msg33.setUsername("uid=admin,cn=users,cn=accounts,dc=mevoco,dc=com");
msg33.setPassword("password");
msg33.setEncryption("None");
msg33.setSession(session);
msg33.setTimeout(10);
APIEvent evt33 = sender.send(msg33, APIEvent.class);
Assert.assertTrue(evt33.isSuccess());
}
break;
case 3: {
APIAddLdapServerMsg msg44 = new APIAddLdapServerMsg();
msg44.setSystemTags(Arrays.asList(PortalSystemTags.VALIDATION_ONLY.getTagFormat()));
msg44.setName("miao");
msg44.setDescription("miao desc");
msg44.setUrl("ldap://172.20.12.176:389");
msg44.setBase("dc=learnitguide,dc=net");
msg44.setUsername("cn=Manager,dc=learnitguide,dc=net");
msg44.setPassword("password");
msg44.setEncryption("None");
msg44.setSession(session);
msg44.setTimeout(10);
APIEvent evt44 = sender.send(msg44, APIEvent.class);
Assert.assertTrue(evt44.isSuccess());
}
break;
case 4: {
APIAddLdapServerMsg msg22 = new APIAddLdapServerMsg();
msg22.setSystemTags(Arrays.asList(PortalSystemTags.VALIDATION_ONLY.getTagFormat()));
msg22.setName("miao");
msg22.setDescription("miao desc");
msg22.setUrl("ldaps://172.20.11.200:389");
msg22.setBase("dc=mevoco,dc=com");
msg22.setUsername("uid=admin,cn=users,cn=accounts,dc=mevoco,dc=com");
msg22.setPassword("password");
msg22.setEncryption("None");
msg22.setSession(session);
msg22.setTimeout(10);
APIEvent evt22 = sender.send(msg22, APIEvent.class);
Assert.assertTrue(evt22.isSuccess());
}
break;
}
}
}