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