// tag after the addition before modify ADD
Tag t0 = getService().getChangeLog().tag();
assertPresent( sysRoot, "ou=test5,ou=system" );
// modify the test entry to add description and test new attr appears
ModifyRequest modReq = new ModifyRequestImpl();
modReq.setName( entry.getDn() );
modReq.add( "description", "a desc value" );
sysRoot.modify( modReq );
Entry resusitated = sysRoot.lookup( "ou=test5,ou=system" );
assertNotNull( resusitated );
Attribute description = resusitated.get( "description" );
assertNotNull( description );
assertTrue( description.contains( "a desc value" ) );
// now revert and assert that the added entry re-appears
getService().revert( t0.getRevision() );
resusitated = sysRoot.lookup( "ou=test5,ou=system" );
assertNotNull( resusitated );
assertNull( resusitated.get( "description" ) );
// -------------------------------------------------------------------
// Modify REPLACE Test
// -------------------------------------------------------------------
// add the attribute again and make sure it is old value
modReq = new ModifyRequestImpl();
modReq.setName( resusitated.getDn() );
modReq.add( "description", "old value" );
sysRoot.modify( modReq );
resusitated = sysRoot.lookup( "ou=test5,ou=system" );
assertNotNull( resusitated );
description = resusitated.get( "description" );
assertNotNull( description );
assertTrue( description.contains( "old value" ) );
// now tag then replace the value to "new value" and confirm
Tag t1 = getService().getChangeLog().tag();
modReq = new ModifyRequestImpl();
modReq.setName( resusitated.getDn() );
modReq.replace( "description", "new value" );
sysRoot.modify( modReq );
resusitated = sysRoot.lookup( "ou=test5,ou=system" );
assertNotNull( resusitated );
assertTrue( resusitated.containsAttribute( "description" ) );
description = resusitated.get( "description" );
assertNotNull( description );
assertTrue( description.contains( "new value" ) );
// now revert and assert the old value is now reverted
getService().revert( t1.getRevision() );
resusitated = sysRoot.lookup( "ou=test5,ou=system" );
assertNotNull( resusitated );
description = resusitated.get( "description" );
assertNotNull( description );
assertTrue( description.contains( "old value" ) );
// -------------------------------------------------------------------
// Modify REMOVE Test
// -------------------------------------------------------------------
Tag t2 = getService().getChangeLog().tag();
modReq = new ModifyRequestImpl();
modReq.setName( resusitated.getDn() );
modReq.remove( "description", "old value" );
sysRoot.modify( modReq );
resusitated = sysRoot.lookup( "ou=test5,ou=system" );
assertNotNull( resusitated );
description = resusitated.get( "description" );
assertNull( description );
// now revert and assert the old value is now reverted
getService().revert( t2.getRevision() );
resusitated = sysRoot.lookup( "ou=test5,ou=system" );
assertNotNull( resusitated );
description = resusitated.get( "description" );
assertNotNull( description );
assertTrue( description.contains( "old value" ) );
// -------------------------------------------------------------------
// Modify Multi Operation Test
// -------------------------------------------------------------------
// add a userPassword attribute so we can test replacing it
modReq = new ModifyRequestImpl();
modReq.setName( resusitated.getDn() );
modReq.add( "userPassword", "to be replaced" );
sysRoot.modify( modReq );
resusitated = sysRoot.lookup( "ou=test5,ou=system" );
assertPassword( resusitated, "to be replaced" );
modReq = new ModifyRequestImpl();
modReq.setName( resusitated.getDn() );
modReq.remove( "description", "old value" );
modReq.add( "seeAlso", "ou=added" );
modReq.replace( "userPassword", "a replaced value" );
Tag t3 = getService().getChangeLog().tag();
// now make the modification and check that description is gone,
// seeAlso is added, and that the userPassword has been replaced