/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.beans.persistence; import org.ldaptive.AbstractTest; import org.ldaptive.BindConnectionInitializer; import org.ldaptive.Connection; import org.ldaptive.ConnectionFactory; import org.ldaptive.DefaultConnectionFactory; import org.ldaptive.LdapEntry; import org.ldaptive.ReturnAttributes; import org.ldaptive.SearchOperation; import org.ldaptive.SearchRequest; import org.ldaptive.TestControl; import org.ldaptive.TestUtils; import org.ldaptive.beans.generate.InetOrgPerson; import org.ldaptive.beans.reflect.DefaultLdapEntryMapper; import org.ldaptive.io.GeneralizedTimeValueTranscoder; import org.ldaptive.io.UUIDValueTranscoder; import org.testng.AssertJUnit; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * Unit test for {@link LdapEntryManager} implementations. * * @author Middleware Services */ public class LdapEntryManagerTest extends AbstractTest { /** * Managers to test. * * @return ldap entry managers * * @throws Exception On test failure. */ @DataProvider(name = "managers") public Object[][] createManagers() throws Exception { final ConnectionFactory cf = new DefaultConnectionFactory( TestUtils.readConnectionConfig("classpath:/org/ldaptive/ldap.setup.properties")); LdapEntry entry = null; try (Connection conn = cf.getConnection()) { conn.open(); final BindConnectionInitializer ci = (BindConnectionInitializer) conn.getConnectionConfig().getConnectionInitializer(); final SearchOperation op = new SearchOperation(conn); final SearchRequest request = SearchRequest.newObjectScopeSearchRequest(ci.getBindDn()); request.setReturnAttributes(ReturnAttributes.ALL.value()); entry = op.execute(request).getResult().getEntry(); } return new Object[][] { new Object[] { new DefaultLdapEntryManager<>(new DefaultLdapEntryMapper<>(), cf), entry, }, }; } /** * @param manager to test * @param entry to compare * * @throws Exception On test failure. */ @Test(groups = {"beans-manager"}, dataProvider = "managers") public void find(final LdapEntryManager<InetOrgPerson> manager, final LdapEntry entry) throws Exception { if (TestControl.isActiveDirectory()) { return; } else { final InetOrgPerson emptyPerson = new InetOrgPerson(); emptyPerson.setDn(entry.getDn()); final InetOrgPerson person = manager.find(emptyPerson); AssertJUnit.assertEquals( entry.getAttribute("cn").getStringValues().iterator().next(), person.getCn().iterator().next()); AssertJUnit.assertEquals( entry.getAttribute("createTimestamp").getValue(new GeneralizedTimeValueTranscoder()), person.getCreateTimestamp()); AssertJUnit.assertEquals(entry.getDn(), person.getDn()); AssertJUnit.assertEquals( entry.getAttribute("entryUUID").getValue(new UUIDValueTranscoder()), person.getEntryUUID()); } } }