package org.openstack.atlas.api.mgmt.helpers.LDAPTools;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import java.security.GeneralSecurityException;
import java.io.IOException;
import org.junit.Ignore;
import java.util.Set;
import java.util.Map;
import java.util.HashMap;
import javax.naming.NamingException;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class MossoAuthTest {
private static final String username = "your.mother";
private static final String passwd = "xxxxxxxxxxx";
private MossoAuth mossoAuth;
private MossoAuthConfig config;
private String host;
private int port;
private Map<String, GroupConfig> groupMap;
private String oClass;
private String memberField;
private String userQuery;
private String dn;
private String sdn;
private Map<String, ClassConfig> classMap;
private String user_dn;
private String user_sdn;
private ClassPathResource cpf = new ClassPathResource("ldap-auth.xml");
private XmlBeanFactory bf = new XmlBeanFactory(cpf);
@Before
public void setUp() throws GeneralSecurityException {
host = "127.0.0.1";
port = 389;
config = new MossoAuthConfig(host, port);
dn = "ou=Users,o=rackspace";
sdn = "cn";
oClass = "(objectClass=*)";
memberField = "groupMembership";
userQuery = "cn=%s";
groupMap = new HashMap<String, GroupConfig>();
groupMap.put("groups", new GroupConfig(oClass, memberField, userQuery, dn, sdn));
user_dn = "ou=People,dc=stabletransit,dc=com";
user_sdn = "cn";
classMap = new HashMap<String, ClassConfig>();
classMap.put("user", new ClassConfig(user_dn, user_sdn));
mossoAuth = new MossoAuth(config, groupMap, classMap);
cpf = new ClassPathResource("ldap-auth.xml");
bf = new XmlBeanFactory(cpf);
}
@Test
public void testConfig() {
MossoAuthConfig mossoConf = this.mossoAuth.getConfig();
assertEquals(host, mossoConf.getHost());
assertEquals(port, mossoConf.getPort());
}
@Test
public void testGroupMap() {
Map<String, GroupConfig> mossoGroupMap;
GroupConfig groups;
mossoGroupMap = this.mossoAuth.getGroupMap();
assertTrue("expected ClassMap to contain posixgroups", mossoGroupMap.containsKey("groups"));
groups = mossoGroupMap.get("groups");
assertEquals(oClass, groups.getObjectClass());
assertEquals(memberField, groups.getMemberField());
assertEquals(userQuery, groups.getUserQuery());
assertEquals(dn, groups.getDn());
assertEquals(sdn, groups.getSdn());
}
@Test
public void testClassMap() {
Map<String, ClassConfig> mossoClassMap;
ClassConfig usermap;
mossoClassMap = this.mossoAuth.getClassMap();
assertTrue("expected ClassConfig to contain user", mossoClassMap.containsKey("user"));
usermap = mossoClassMap.get("user");
assertEquals(user_dn, usermap.getDn());
assertEquals(user_sdn, usermap.getSdn());
}
@Ignore
@Test
public void shouldListGroups() throws NamingException, IOException {
MossoAuth auth = loadFromSpring();
Set<String> groups;
groups = auth.getGroups(username,passwd);
nop();
}
@Ignore
@Test
public void shouldPasswordAuthenticate() {
MossoAuth auth = loadFromSpring();
boolean authenticated = auth.testAuth(username, passwd);
assertTrue(authenticated);
}
@Ignore
@Test
public void testMossoConfigFromSpring() {
MossoAuthConfig mossoAuthConfig = (MossoAuthConfig) bf.getBean("mossoAuthConfig");
nop();
}
@Test
public void testClassMapFromSpring() {
Map<String, ClassConfig> mossoClassMap;
mossoClassMap = (Map<String, ClassConfig>) bf.getBean("mossoClassMap");
nop();
}
@Ignore
@Test
public void shouldLoadAllFromSpring() {
MossoAuth springMossoAuth = loadFromSpring();
}
@Test
public void testGroupMapFromSpring() {
Map<String, GroupConfig> mossoGroupMap;
mossoGroupMap = (Map<String, GroupConfig>) bf.getBean("mossoGroupMap");
nop();
}
private String encryptPasswd(String passwd) throws GeneralSecurityException {
return Aes.b64encrypt(passwd.getBytes(), "mossoFailure");
}
private String decryptPasswd(String base64str) throws GeneralSecurityException {
byte[] ptext = Aes.b64decrypt(base64str, "mossoFailure");
return Aes.bytes2str(ptext);
}
private MossoAuth loadFromSpring() {
MossoAuth springMossoAuth;
springMossoAuth = (MossoAuth) bf.getBean("mossoAuth");
return springMossoAuth;
}
private void nop() {
}
}