/* * $Id$ * * Copyright 2009 Glencoe Software, Inc. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.formats; import ome.formats.importer.ImportConfig; import ome.formats.importer.OMEROWrapper; import ome.services.blitz.test.mock.MockFixture; import ome.system.EventContext; import ome.system.OmeroContext; import ome.system.ServiceFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.jmock.MockObjectTestCase; /** * test fixture for importing files without a GUI. Sample usage: * * <pre> * OMEROMetadataStoreClient client = new OMEROMetadataStoreClient(sf); * OMEROImportFixture fixture = new OMEROImportFixture(client); * fixture.setUp(); * fixture.setFile(ResourceUtils.getFile("classpath:tinyTest.d3d.dv")); * fixture.setName(name); * fixture.doImport(); * List<Pixels> p = fixture.getPixels(); * fixture.tearDown(); * i.setName(name); * i = userSave(i); * </pre> * * This class is <em>not</em> thread safe. * * @author Josh Moore, josh.moore at gmx.de * @see OMEROMetadataStoreClient * @since 4.0 */ public class MockedOMEROImportFixture extends OMEROImportFixture { Logger log = LoggerFactory.getLogger(MockedOMEROImportFixture.class); omero.client client; /** * Constructor for use when no blitz is available, like from server-side * tests. */ public MockedOMEROImportFixture(ServiceFactory sf, String password) throws Exception { super(mockStore(sf, password), new OMEROWrapper(new ImportConfig())); } public static OMEROMetadataStoreClient mockStore(ServiceFactory sf, String password) throws Exception { System.setProperty("omero.testing", "true"); OmeroContext inner = sf.getContext(); OmeroContext outer = new OmeroContext(new String[] { "classpath:ome/services/messaging.xml", // To share events "classpath:ome/formats/fixture.xml", "classpath:ome/services/blitz-servantDefinitions.xml", "classpath:ome/services/blitz-graph-rules.xml", "classpath:ome/services/throttling/throttling.xml", "classpath:ome/config.xml" }, false); outer.setParent(inner); outer.refresh(); EventContext ec = sf.getAdminService().getEventContext(); String username = ec.getCurrentUserName(); long groupid = ec.getCurrentGroupId(); MockFixture fixture = new MockFixture(new MockObjectTestCase() { }, outer); omero.client client = fixture.newClient(); // Fixing group permissions from 4.2.0 client.createSession(username, password).setSecurityContext( new omero.model.ExperimenterGroupI(groupid, false)); OMEROMetadataStoreClient store = new OMEROMetadataStoreClient(); store.initialize(client); return store; } @Override public void tearDown() { try { super.tearDown(); } catch (Exception e) { log.error("Error on tearDown in store.logout()", e); } } }