/* * $Id$ * * Copyright 2007 Glencoe Software, Inc. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.server.itests; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import ome.api.IPixels; import ome.api.ThumbnailStore; import ome.conditions.ApiUsageException; import ome.conditions.InternalException; import ome.conditions.ReadOnlyGroupSecurityViolation; import ome.conditions.ResourceError; import ome.model.annotations.ExperimenterAnnotationLink; import ome.model.annotations.FileAnnotation; import ome.model.core.Pixels; import ome.model.display.ChannelBinding; import ome.model.display.RenderingDef; import ome.model.display.Thumbnail; import ome.model.internal.Permissions; import ome.model.meta.Experimenter; import ome.model.meta.ExperimenterGroup; import ome.parameters.Parameters; import ome.system.ServiceFactory; import omeis.providers.re.RenderingEngine; import omeis.providers.re.data.PlaneDef; import org.testng.annotations.Test; /** * * @author Josh Moore, josh at glencoesoftware.com * */ public class RenderingSessionTest extends AbstractManagedContextTest { class Fixture { Pixels pixels; long pixelsID; long userID; RenderingEngine re; public Fixture() { pixels = makePixels(); pixelsID = pixels.getId(); userID = iAdmin.getEventContext().getCurrentUserId(); re = factory.createRenderingEngine(); re.lookupPixels(pixelsID); if (!(re.lookupRenderingDef(pixelsID))) { re.resetDefaultSettings(true); re.lookupRenderingDef(pixelsID); } re.load(); } } // // XXX: Complex *interaction* thumbnail tests are in ThumbnailServiceTest // @Test(groups = "ticket:1205") public void testSaveRenderingSettingsFails() { Fixture f = new Fixture(); //then I had to do the following call b/c pixels were not loaded. If now it is the case, I will remove that call IPixels service = factory.getPixelsService(); f.pixels = service.retrievePixDescription(f.pixelsID); //To speed up the process to populate my local copy of the settings RenderingDef def = service.retrieveRndSettingsFor(f.pixelsID, f.userID); /* Collection l = pixels.unmodifiableChannels(); Iterator i = l.iterator(); List<ChannelData> m = new ArrayList<ChannelData>(l.size()); int index = 0; while (i.hasNext()) { m.add(new ChannelData(index, (Channel) i.next())); index++; } */ //internal code from insight // proxy = PixelsServicesFactory.createRenderingControl(context, re, // pixels, m, compressionLevel, def); f.re.setDefaultZ(0); f.re.saveCurrentSettings(); //crash } @Test(groups = "ticket:1205") public void testValuesGetSaved() { Fixture f = new Fixture(); f.re.resetDefaultSettings(true); boolean active = f.re.isActive(0); f.re.setActive(0, !active); assertEquals(!active,f.re.isActive(0)); f.re.resetDefaultSettings(true); assertEquals(active, f.re.isActive(0)); f.re.setActive(0, !active); f.re.saveCurrentSettings(); assertEquals(!active, f.re.isActive(0)); } @Test(expectedExceptions = { ApiUsageException.class }) public void testIPixelsHasSecuritySystem() { RenderingEngine re = this.factory.createRenderingEngine(); re.lookupRenderingDef(-1L); } @Test public void testReadWriteMethod() throws Exception { final ServiceFactory sf = this.factory;// new InternalServiceFactory(); // isf.setApplicationContext(OmeroContext.getManagedServerContext()); // new Wrap("root", new Wrap.REBackdoor() { // @RolesAllowed("user") // public void run() { RenderingEngine re = sf.createRenderingEngine(); Pixels pix = makePixels(); try { re.lookupPixels(pix.getId()); if (!re.lookupRenderingDef(pix.getId())) { re.resetDefaultSettings(true); re.lookupRenderingDef(pix.getId()); } re.load(); re.setChannelWindow(0, 0, re.getChannelWindowEnd(0) - 0.00001); re.saveCurrentSettings(); re.setChannelWindow(0, 0, re.getChannelWindowEnd(0) - 0.00002); re.resetDefaultSettings(true); re.resetDefaultSettings(true); re.setChannelWindow(0, 0, re.getChannelWindowEnd(0) - 0.00003); re.saveCurrentSettings(); re.saveCurrentSettings(); re.resetDefaultSettings(true); re.saveCurrentSettings(); re.resetDefaultSettings(true); re.renderAsPackedInt(new PlaneDef(0, 0)); re.resetDefaultSettings(true); } finally { re.close(); } // } // }); } @Test public void testReadWriteMethodViaThumbnails() throws Exception { final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); ThumbnailStore tb = sf.createThumbnailService(); try { boolean value = tb.setPixelsId(pix.getId()); // tb.resetDefaults(); tb.setPixelsId(pix.getId()); tb.getThumbnail(10, 10); } finally { tb.close(); } } @Test(groups = "ticket:1655") public void testRootWithAnnotation() throws Exception { loginRoot(); Map<?, ?> m = factory.getMetadataService().loadAnnotations( Experimenter.class, Collections.singleton(0L), Collections.singleton("FileAnnotation"), null, null); if (m.size() == 0) { FileAnnotation fa = new FileAnnotation(); fa.setNs("ticket:1655"); ExperimenterAnnotationLink link = new ExperimenterAnnotationLink(); link.link(new Experimenter(0L, false), fa); iUpdate.saveObject(link); } Pixels p = iQuery.findByQuery("select p from Pixels p", new Parameters().page(0, 1)); long pix_id = p.getId(); RenderingEngine re = factory.createRenderingEngine(); re.setCompressionLevel(.25f); re.lookupPixels(pix_id); boolean available = re.lookupRenderingDef(pix_id); if (!available) { re.resetDefaultSettings(true); re.lookupRenderingDef(pix_id); } re.load(); re.setActive(0,false); re.saveCurrentSettings(); re.setChannelWindow(0, 0.0, 1.0); re.saveCurrentSettings(); re.setChannelWindow(0, 0.0, 2.0); re.saveCurrentSettings(); } @Test(groups = {"ticket:1801"}, expectedExceptions = { InternalException.class }) public void testUserViewsThumbnailWithNoSettingsAndNoSetPixelsId() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); ThumbnailStore tbUser = sf.createThumbnailService(); assertFalse(tbUser.setPixelsId(pix.getId())); tbUser.resetDefaults(); //tbUser.setPixelsId(pix.getId() // Code that should be called tbUser.getThumbnail(64, 64); } @Test(groups = {"ticket:1801"}) public void testUserViewsThumbnailWithNoSettings() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); ThumbnailStore tbUser = sf.createThumbnailService(); assertFalse(tbUser.setPixelsId(pix.getId())); tbUser.resetDefaults(); tbUser.setPixelsId(pix.getId()); tbUser.getThumbnail(64, 64); } @Test(groups = {"ticket:1801"}) public void testUserViewsThumbnailDirect() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); ThumbnailStore tbUser = sf.createThumbnailService(); tbUser.setPixelsId(pix.getId()); tbUser.getThumbnailDirect(64, 64); } @Test(groups = {"ticket:1801"}) public void testUserViewsThumbnailByLongestSideDirect() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); ThumbnailStore tbUser = sf.createThumbnailService(); tbUser.setPixelsId(pix.getId()); tbUser.getThumbnailByLongestSideDirect(64); } @Test(groups = {"ticket:1929"}) public void testUserViewsOwnThumbnailByLongestSideWithMissingMetadata() { Experimenter user = loginNewUser(); ExperimenterGroup group = iAdmin.getDefaultGroup(user.getId()); Long userId = user.getId(); loginRoot(); iAdmin.setGroupOwner(new ExperimenterGroup(group.getId(), false), new Experimenter(user.getId(), false)); loginUser(user.getOmeName(), group.getName()); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); ThumbnailStore tbUser = sf.createThumbnailService(); assertTrue(tbUser.setPixelsId(pix.getId())); assertNotNull(tbUser.getThumbnailByLongestSide(80)); List<Thumbnail> thumbnails = iQuery.findAllByQuery( "select t from Thumbnail as t " + "where t.pixels.id = :id", new Parameters().addId(pix.getId())); Set<Long> thumbnailIds = new HashSet<Long>(); for (Thumbnail thumbnail : thumbnails) { assertTrue(thumbnailIds.add(thumbnail.getId())); assertEquals(userId, thumbnail.getDetails().getOwner().getId()); } assertEquals(2, thumbnails.size()); } @Test(groups = {"ticket:1801"}, expectedExceptions = { InternalException.class }) public void testUserViewsImageWithNoSettingsAndNoSetPixelsId() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); RenderingEngine reUser = sf.createRenderingEngine(); reUser.lookupPixels(pix.getId()); assertFalse(reUser.lookupRenderingDef(pix.getId())); reUser.resetDefaultSettings(true); reUser.load(); } @Test(groups = {"ticket:1801"}) public void testUserViewsImageWithNoSettings() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); RenderingEngine reUser = sf.createRenderingEngine(); reUser.lookupPixels(pix.getId()); assertFalse(reUser.lookupRenderingDef(pix.getId())); reUser.resetDefaultSettings(true); reUser.lookupRenderingDef(pix.getId()); reUser.load(); // XXX: Slow and may crash the JVM //assertNotNull(reUser.renderAsPackedInt(new PlaneDef(PlaneDef.XY, 0))); } @Test(groups = {"ticket:1801"}) public void testUserViewsImage() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); RenderingEngine reUser = sf.createRenderingEngine(); reUser.lookupPixels(pix.getId()); assertTrue(reUser.lookupRenderingDef(pix.getId())); reUser.load(); // XXX: Slow and may crash the JVM //assertNotNull(reUser.renderAsPackedInt(new PlaneDef(PlaneDef.XY, 0))); } @Test(groups = {"ticket:1929"}, expectedExceptions = { ResourceError.class }) public void testOtherUserViewsThumbnailInsufficientPermissions() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); tbUser.setPixelsId(pix.getId()); } @Test(groups = {"ticket:1929"}, expectedExceptions = { InternalException.class }) public void testOtherUserRWViewsThumbnailWithNoSettingsAndNoSetPixelsId() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); loginRoot(); makeDefaultGroupReadWrite(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); assertFalse(tbUser.setPixelsId(pix.getId())); tbUser.resetDefaults(); //tbUser.setPixelsId(pix.getId() // Code that should be called tbUser.getThumbnail(64, 64); } @Test(groups = {"ticket:1929"}) public void testOtherUserRWViewsThumbnailWithNoSettings() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); loginRoot(); makeDefaultGroupReadWrite(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); assertFalse(tbUser.setPixelsId(pix.getId())); tbUser.resetDefaults(); assertTrue(tbUser.setPixelsId(pix.getId())); tbUser.getThumbnail(64, 64); } @Test(groups = {"ticket:1929"}) public void testOtherUserRWViewsThumbnailDirect() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginRoot(); makeDefaultGroupReadWrite(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); assertFalse(tbUser.setPixelsId(pix.getId())); tbUser.resetDefaults(); assertTrue(tbUser.setPixelsId(pix.getId())); tbUser.getThumbnailDirect(64, 64); } @Test(groups = {"ticket:1929"}) public void testOtherUserRWViewsThumbnailByLongestSideDirect() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginRoot(); makeDefaultGroupReadWrite(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); assertFalse(tbUser.setPixelsId(pix.getId())); tbUser.resetDefaults(); assertTrue(tbUser.setPixelsId(pix.getId())); tbUser.getThumbnailByLongestSideDirect(64); } @Test(groups = {"ticket:1929"}) public void testOtherUserRWViewsSingleThumbnailByLongestSideSet() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginRoot(); makeDefaultGroupReadWrite(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); Set<Long> pixelsIds = Collections.singleton(pix.getId()); Map<Long, byte[]> thumbnails = tbUser.getThumbnailByLongestSideSet(96, pixelsIds); assertNotNull(thumbnails); assertEquals(pixelsIds.size(), thumbnails.size()); for (byte[] thumbnail : thumbnails.values()) { assertNotNull(thumbnail); } } @Test(groups = {"ticket:1929"}) public void testOtherUserRWViewsMultipleThumbnailsByLongestSideSet() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix1 = makePixels(); Pixels pix2 = makePixels(); loginRoot(); makeDefaultGroupReadWrite(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); Set<Long> pixelsIds = new HashSet<Long>(); pixelsIds.add(pix1.getId()); pixelsIds.add(pix2.getId()); Map<Long, byte[]> thumbnails = tbUser.getThumbnailByLongestSideSet(96, pixelsIds); assertNotNull(thumbnails); assertEquals(pixelsIds.size(), thumbnails.size()); for (byte[] thumbnail : thumbnails.values()) { assertNotNull(thumbnail); } } @Test(groups = {"ticket:1801"}, expectedExceptions = { InternalException.class }) public void testOtherUserRWViewsImageWithNoSettingsAndNoSetPixelsId() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); loginRoot(); makeDefaultGroupReadWrite(e1); loginNewUserInOtherUsersGroup(e1); RenderingEngine reUser = sf.createRenderingEngine(); reUser.lookupPixels(pix.getId()); assertFalse(reUser.lookupRenderingDef(pix.getId())); reUser.resetDefaultSettings(true); reUser.load(); } @Test(groups = {"ticket:1801"}) public void testOtherUserRWViewsImageWithNoSettings() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); loginRoot(); makeDefaultGroupReadWrite(e1); loginNewUserInOtherUsersGroup(e1); RenderingEngine reUser = sf.createRenderingEngine(); reUser.lookupPixels(pix.getId()); assertFalse(reUser.lookupRenderingDef(pix.getId())); reUser.resetDefaultSettings(true); reUser.lookupRenderingDef(pix.getId()); reUser.load(); // XXX: Slow and may crash the JVM //assertNotNull(reUser.renderAsPackedInt(new PlaneDef(PlaneDef.XY, 0))); } @Test(groups = {"ticket:1801"}) public void testOtherUserRWViewsImage() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginRoot(); makeDefaultGroupReadWrite(e1); loginNewUserInOtherUsersGroup(e1); RenderingEngine reUser = sf.createRenderingEngine(); reUser.lookupPixels(pix.getId()); assertFalse(reUser.lookupRenderingDef(pix.getId())); reUser.resetDefaultSettings(true); reUser.lookupRenderingDef(pix.getId()); reUser.load(); // XXX: Slow and may crash the JVM //assertNotNull(reUser.renderAsPackedInt(new PlaneDef(PlaneDef.XY, 0))); } @Test(groups = {"ticket:1929"}, expectedExceptions = { ReadOnlyGroupSecurityViolation.class }) public void testOtherUserROViewsThumbnailWithNoSettings() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); loginRoot(); makeDefaultGroupReadOnly(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); assertFalse(tbUser.setPixelsId(pix.getId())); tbUser.resetDefaults(); assertFalse(tbUser.setPixelsId(pix.getId())); } @Test(groups = {"ticket:1929"}) public void testOtherUserROViewsThumbnailDirect() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginRoot(); makeDefaultGroupReadOnly(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); assertTrue(tbUser.setPixelsId(pix.getId())); tbUser.getThumbnailDirect(96, 96); } @Test(groups = {"ticket:1929"}) public void testOtherUserROViewsThumbnailByLongestSideDirect() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginRoot(); makeDefaultGroupReadOnly(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); assertTrue(tbUser.setPixelsId(pix.getId())); tbUser.getThumbnailByLongestSideDirect(96); } @Test(groups = {"ticket:1929"}) public void testOtherUserROViewsSingleThumbnailByLongestSideSet() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginRoot(); makeDefaultGroupReadOnly(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); Set<Long> pixelsIds = Collections.singleton(pix.getId()); Map<Long, byte[]> thumbnails = tbUser.getThumbnailByLongestSideSet(96, pixelsIds); assertNotNull(thumbnails); assertEquals(pixelsIds.size(), thumbnails.size()); for (byte[] thumbnail : thumbnails.values()) { assertNotNull(thumbnail); } } @Test(groups = {"ticket:1929"}) public void testOtherUserROViewsMultipleThumbnailsByLongestSideSet() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix1 = makePixels(); Pixels pix2 = makePixels(); loginRoot(); makeDefaultGroupReadOnly(e1); loginNewUserInOtherUsersGroup(e1); ThumbnailStore tbUser = sf.createThumbnailService(); Set<Long> pixelsIds = new HashSet<Long>(); pixelsIds.add(pix1.getId()); pixelsIds.add(pix2.getId()); Map<Long, byte[]> thumbnails = tbUser.getThumbnailByLongestSideSet(96, pixelsIds); assertNotNull(thumbnails); assertEquals(pixelsIds.size(), thumbnails.size()); for (byte[] thumbnail : thumbnails.values()) { assertNotNull(thumbnail); } } @Test(groups = {"ticket:1801"}, expectedExceptions = { ReadOnlyGroupSecurityViolation.class }) public void testOtherUserROViewsImageWithNoSettings() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); loginRoot(); makeDefaultGroupReadOnly(e1); loginNewUserInOtherUsersGroup(e1); RenderingEngine reUser = sf.createRenderingEngine(); reUser.lookupPixels(pix.getId()); assertFalse(reUser.lookupRenderingDef(pix.getId())); reUser.resetDefaultSettings(true); } @Test(groups = {"ticket:1801"}) public void testOtherUserROViewsImage() { Experimenter e1 = loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginRoot(); makeDefaultGroupReadOnly(e1); loginNewUserInOtherUsersGroup(e1); RenderingEngine reUser = sf.createRenderingEngine(); reUser.lookupPixels(pix.getId()); assertTrue(reUser.lookupRenderingDef(pix.getId())); reUser.load(); // XXX: Slow and may crash the JVM //assertNotNull(reUser.renderAsPackedInt(new PlaneDef(PlaneDef.XY, 0))); } @Test(groups = {"ticket:1801"}, expectedExceptions = {ResourceError.class}) public void testAdminViewsThumbnailsWithNoMetadata() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginRootKeepGroup(); ThumbnailStore tbRoot = sf.createThumbnailService(); tbRoot.setPixelsId(pix.getId()); tbRoot.getThumbnail(64, 64); } @Test(groups = {"ticket:1801"}, expectedExceptions = {ApiUsageException.class}) public void testAdminViewsThumbnailsWithNoSettings() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); loginRootKeepGroup(); ThumbnailStore tbRoot = sf.createThumbnailService(); assertFalse(tbRoot.setPixelsId(pix.getId())); tbRoot.resetDefaults(); } @Test(groups = {"ticket:1434","ticket:1769","shoola:ticket:1157"}) public void testAdminViewsThumbnailsWithManualRdef() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); ThumbnailStore tbUser = sf.createThumbnailService(); tbUser.setPixelsId(pix.getId()); tbUser.getThumbnail(64, 64); //tbUser.resetDefaults(); // Should only be one RenderingDef def = iQuery.findByQuery( "select rdef from RenderingDef rdef " + "where rdef.pixels.id = " + pix.getId(), null); loginRootKeepGroup(); ThumbnailStore tbRoot = sf.createThumbnailService(); assertTrue(tbRoot.setPixelsId(pix.getId())); tbRoot.setRenderingDefId(def.getId()); // Users rdef tbRoot.getThumbnail(64, 64); try { // tbRoot.resetDefaults(); // fail("group-sec-vio"); } catch (ReadOnlyGroupSecurityViolation roagsv) { // ok. } } @Test(groups = {"ticket:1434","ticket:1769","shoola:ticket:1157","ticket:1801"}) public void testAdminViewsThumbnailsViaInsight() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); ThumbnailStore tbUser = sf.createThumbnailService(); tbUser.setPixelsId(pix.getId()); tbUser.getThumbnailByLongestSideSet(64, Collections.singleton(pix.getId())); //tbUser.resetDefaults(); loginRootKeepGroup(); ThumbnailStore tbRoot = sf.createThumbnailService(); tbRoot.getThumbnailByLongestSideSet(64, Collections.singleton(pix.getId())); try { // tbRoot.resetDefaults(); // fail("group-sec-vio"); } catch (ReadOnlyGroupSecurityViolation roagsv) { // ok. } } @Test(groups = {"ticket:1434","ticket:1769","shoola:ticket:1157"}) public void testAdminViewsThumbnails() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); ThumbnailStore tbUser = sf.createThumbnailService(); tbUser.setPixelsId(pix.getId()); tbUser.getThumbnail(64, 64); //tbUser.resetDefaults(); loginRootKeepGroup(); ThumbnailStore tbRoot = sf.createThumbnailService(); assertTrue(tbRoot.setPixelsId(pix.getId())); tbRoot.getThumbnail(64, 64); try { // tbRoot.resetDefaults(); // fail("group-sec-vio"); } catch (ReadOnlyGroupSecurityViolation roagsv) { // ok. } } @Test(groups = {"ticket:1801"}, expectedExceptions = { ReadOnlyGroupSecurityViolation.class }) public void testAdminViewsImageWithNoSettings() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); deleteRenderingSettings(pix); loginRootKeepGroup(); RenderingEngine reUser = sf.createRenderingEngine(); reUser.lookupPixels(pix.getId()); assertFalse(reUser.lookupRenderingDef(pix.getId())); reUser.resetDefaultSettings(true); } @Test(groups = {"ticket:1434","shoola:ticket:1157"}) public void testAdminViewsImage() { loginNewUser(); final ServiceFactory sf = this.factory;// new InternalServiceFactory(); Pixels pix = makePixels(); loginRootKeepGroup(); RenderingEngine reUser = sf.createRenderingEngine(); reUser.lookupPixels(pix.getId()); assertTrue(reUser.lookupRenderingDef(pix.getId())); reUser.load(); // XXX: Slow and may crash the JVM //assertNotNull(reUser.renderAsPackedInt(new PlaneDef(PlaneDef.XY, 0))); } private long syntheticImage() { throw new UnsupportedOperationException(); } private void deleteRenderingSettings(Pixels pix) { Parameters params = new Parameters(); params.addId(pix.getId()); RenderingDef settings = iQuery.findByQuery( "select rdef from RenderingDef as rdef " + "left outer join fetch rdef.waveRendering " + "where rdef.pixels.id = (:id)", params); params.addId(settings.getId()); for (int i = 0; i < settings.sizeOfWaveRendering(); i++) { ChannelBinding channelBinding = settings.getChannelBinding(i); iUpdate.deleteObject(channelBinding); } iUpdate.deleteObject(settings); } private void makeDefaultGroupReadWrite(Experimenter experimenter) { ExperimenterGroup group = iAdmin.getDefaultGroup(experimenter.getId()); group.getDetails().setPermissions(Permissions.GROUP_WRITEABLE); iAdmin.updateGroup(group); } private void makeDefaultGroupReadOnly(Experimenter experimenter) { ExperimenterGroup group = iAdmin.getDefaultGroup(experimenter.getId()); group.getDetails().setPermissions(Permissions.GROUP_READABLE); iAdmin.updateGroup(group); } }