/* * ome.server.itests.details.UpdateEventsTest * * Copyright 2006 University of Dundee. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.server.itests.details; import ome.conditions.SecurityViolation; import ome.model.core.Image; import ome.model.meta.Event; import ome.parameters.Filter; import ome.parameters.Parameters; import ome.server.itests.AbstractManagedContextTest; import org.testng.annotations.Test; /** * * @author Josh Moore      <a * href="mailto:josh.moore@gmx.de">josh.moore@gmx.de</a> * @since 1.0 */ public class UpdateEventsTest extends AbstractManagedContextTest { @Test public void testNoOneCanChangeUpdateEvent() throws Exception { loginRoot(); Image i = new_Image(); i.setName("immutable creation"); i = iUpdate.saveAndReturnObject(i); Event oldEvent = i.getDetails().getUpdateEvent(); Event newEvent = iQuery.findByQuery( "select e from Event e where id != :id", new Parameters( new Filter().page(0, 1)).addId(oldEvent.getId())); i.getDetails().setUpdateEvent(newEvent); try { iUpdate.saveObject(i); fail("secvio!"); } catch (SecurityViolation sv) { // ok } } @Test public void testInterceptorRevertsChanges() throws Exception { loginNewUser(); Image i = new_Image(); i.setName("revert changes"); i = iUpdate.saveAndReturnObject(i); Event modification = i.getDetails().getUpdateEvent(); i.getDetails().setOwner(null); i = iUpdate.saveAndReturnObject(i); Event test = i.getDetails().getUpdateEvent(); assertEquals("When interceptor reverts changes, " + "there should be no modification", modification.getId(), test .getId()); } @Test public void testButARealChangeGetsANewModification() throws Exception { loginNewUser(); Image i = new_Image(); i.setName("new mod"); i = iUpdate.saveAndReturnObject(i); Event modification = i.getDetails().getUpdateEvent(); i.setName("new mod, take 2"); i = iUpdate.saveAndReturnObject(i); Event test = i.getDetails().getUpdateEvent(); assertFalse("On a real change, the modification must increment", modification.getId().equals(test.getId())); } private Image new_Image() { Image i = new Image(); return i; } }