/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive; 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 ModifyDnOperation}. * * @author Middleware Services */ public class ModifyDnOperationTest extends AbstractTest { /** Entry created for ldap tests. */ private static LdapEntry testLdapEntry; /** Entry created for ldap tests. */ private static LdapEntry modifyDnLdapEntry; /** * @param ldifFile to create. * * @throws Exception On test failure. */ @Parameters("createEntry5") @BeforeClass(groups = {"modifyDn"}) 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 = {"modifyDn"}) public void deleteLdapEntry() throws Exception { super.deleteLdapEntry(testLdapEntry.getDn()); if (modifyDnLdapEntry != null) { super.deleteLdapEntry(modifyDnLdapEntry.getDn()); } } /** * @param oldDn to rename. * @param newDn to rename to. * * @throws Exception On test failure. */ @Parameters({ "modifyOldDn", "modifyNewDn" }) @Test(groups = {"modifyDn"}) public void modifyDnLdapEntry(final String oldDn, final String newDn) throws Exception { try (Connection conn = TestUtils.createConnection()) { conn.open(); final SearchOperation search = new SearchOperation(conn); AssertJUnit.assertTrue(search.execute(SearchRequest.newObjectScopeSearchRequest(oldDn)).getResult().size() > 0); final ModifyDnOperation modifyDn = new ModifyDnOperation(conn); Response<Void> response = modifyDn.execute(new ModifyDnRequest(oldDn, newDn)); AssertJUnit.assertEquals(ResultCode.SUCCESS, response.getResultCode()); modifyDnLdapEntry = search.execute(SearchRequest.newObjectScopeSearchRequest(newDn)).getResult().getEntry(); AssertJUnit.assertNotNull(modifyDnLdapEntry); try { final Response<SearchResult> r = search.execute(SearchRequest.newObjectScopeSearchRequest(oldDn)); AssertJUnit.assertEquals(ResultCode.NO_SUCH_OBJECT, r.getResultCode()); } catch (LdapException e) { AssertJUnit.assertEquals(ResultCode.NO_SUCH_OBJECT, e.getResultCode()); } catch (Exception e) { AssertJUnit.fail("Should have thrown LdapException, threw " + e); } response = modifyDn.execute(new ModifyDnRequest(newDn, oldDn)); AssertJUnit.assertEquals(ResultCode.SUCCESS, response.getResultCode()); AssertJUnit.assertTrue(search.execute(SearchRequest.newObjectScopeSearchRequest(oldDn)).getResult().size() > 0); try { final Response<SearchResult> r = search.execute(SearchRequest.newObjectScopeSearchRequest(newDn)); AssertJUnit.assertEquals(ResultCode.NO_SUCH_OBJECT, r.getResultCode()); } catch (LdapException e) { AssertJUnit.assertEquals(ResultCode.NO_SUCH_OBJECT, e.getResultCode()); } catch (Exception e) { AssertJUnit.fail("Should have thrown LdapException, threw " + e); } } } }