@Test
public void testReverseModifyReplaceExistingOuValues() throws LdapException
{
Entry modifiedEntry = buildEntry();
EntryAttribute ou = new DefaultEntryAttribute( "ou" );
ou.add( "apache", "acme corp" );
modifiedEntry.put( ou );
Dn dn = new Dn( "cn=test, ou=system" );
EntryAttribute ouModified = new DefaultEntryAttribute( "ou" );
ouModified.add( "directory" );
ouModified.add( "BigCompany inc." );
Modification mod = new DefaultModification(
ModificationOperation.REPLACE_ATTRIBUTE, ouModified );
LdifEntry reversed = LdifRevertor.reverseModify( dn,
Collections.<Modification>singletonList( mod ), modifiedEntry );
assertNotNull( reversed );
assertEquals( dn.getName(), reversed.getDn().getName() );
assertEquals( ChangeType.Modify, reversed.getChangeType() );
assertNull( reversed.getEntry() );
List<Modification> mods = reversed.getModificationItems();
assertNotNull( mods );
assertEquals( 1, mods.size() );
Modification modif = mods.get( 0 );
assertEquals( ModificationOperation.REPLACE_ATTRIBUTE, modif.getOperation() );
EntryAttribute attr = modif.getAttribute();
assertNotNull( attr );
assertEquals( ou, attr );
}