/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.async; import java.util.concurrent.ExecutionException; import org.ldaptive.AbstractTest; import org.ldaptive.Connection; import org.ldaptive.LdapEntry; import org.ldaptive.ResultCode; import org.ldaptive.SearchFilter; import org.ldaptive.SearchRequest; import org.ldaptive.SearchResult; import org.ldaptive.TestUtils; import org.testng.AssertJUnit; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Parameters; import org.testng.annotations.Test; /** * Unit test for {@link AsyncSearchOperation}. * * @author Middleware Services */ public class AsyncSearchOperationTest extends AbstractTest { /** Entry created for ldap tests. */ private static LdapEntry testLdapEntry; /** * @param ldifFile to create. * * @throws Exception On test failure. */ @Parameters("createEntry17") @BeforeClass(groups = {"async"}) public void createLdapEntry(final String ldifFile) throws Exception { final String ldif = TestUtils.readFileIntoString(ldifFile); testLdapEntry = TestUtils.convertLdifToResult(ldif).getEntry(); super.createLdapEntry(testLdapEntry); } /** @throws Exception On test failure. */ @AfterClass(groups = {"async"}) public void deleteLdapEntry() throws Exception { super.deleteLdapEntry(testLdapEntry.getDn()); } /** * @param dn to search on. * @param filter to search with. * @param returnAttrs to return from search. * @param ldifFile to compare with * * @throws Exception On test failure. */ @Parameters( { "searchAsyncDn", "searchAsyncFilter", "searchAsyncReturnAttrs", "searchAsyncResults" }) @Test(groups = {"async"}) public void search(final String dn, final String filter, final String returnAttrs, final String ldifFile) throws Exception { final String expected = TestUtils.readFileIntoString(ldifFile); try (Connection conn = TestUtils.createConnection()) { conn.open(); final AsyncSearchOperation search = new AsyncSearchOperation(conn); final SearchRequest request = new SearchRequest(dn, new SearchFilter(filter), returnAttrs.split("\\|")); final FutureResponse<SearchResult> response = search.execute(request); AssertJUnit.assertTrue(response.getResult().size() > 0); AssertJUnit.assertEquals(ResultCode.SUCCESS, response.getResultCode()); TestUtils.assertEquals(TestUtils.convertLdifToResult(expected), response.getResult()); } catch (ExecutionException | IllegalStateException e) { throw (Exception) e.getCause(); } } }