package eu.dnetlib.openaire.user.ldap;

import com.unboundid.ldap.sdk.*;
import eu.dnetlib.openaire.user.pojos.migration.LDAPUser;
import org.junit.Before;
import org.junit.Test;

/**
 * Created by kiatrop on 27/9/2017.
 */
public class LDAPEnhancer {

    LDAPConnection ldapConnector;
    String ldapUsersDN;

    @Before
    public void init() throws LDAPException {
        ldapConnector = new LDAPConnection("esperos.di.uoa.gr", 389, "cn=admin,dc=openaire,dc=eu", "serenata");
        ldapUsersDN = "ou=users,dc=openaire,dc=eu";
    }

    @Test
    public void enhance() throws LDAPSearchException {
        Filter filter = Filter.createEqualityFilter("ou", "users");
        SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUBORDINATE_SUBTREE, filter);
        SearchResult searchResult = ldapConnector.search(searchRequest);

        for (SearchResultEntry entry : searchResult.getSearchEntries()) {
            System.out.println(entry.getAttribute("dn"));
        }
    }

    @Test
    public void getUserTest() throws LDAPSearchException {
            String usersDN =  "ou=users,dc=openaire,dc=eu";

                Filter filter = Filter.createEqualityFilter("cn","kiatrop");
                SearchRequest searchRequest =
                        new SearchRequest(usersDN, SearchScope.SUB, filter, "mail", "displayName", "cn");

                SearchResult searchResult = ldapConnector.search(searchRequest);
                LDAPUser user = new LDAPUser();

                for (SearchResultEntry entry : searchResult.getSearchEntries()) {
                    System.out.println(entry.getAttributeValue("cn"));
                    System.out.println(entry.getAttributeValue("mail"));
                    System.out.println(entry.getAttributeValue("displayName"));
                }
        }



}
