/*
* $Id: AbstractChangeDetailClientTest.java 1167 2006-12-15 10:39:34Z jmoore $
*
* Copyright 2006 University of Dundee. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.services.sec.test;
import static omero.rtypes.rstring;
import java.util.UUID;
import ome.conditions.ValidationException;
import ome.system.Login;
import omero.ServerError;
import omero.api.IQueryPrx;
import omero.api.IUpdatePrx;
import omero.api.ServiceFactoryPrx;
import omero.model.Experimenter;
import omero.model.ExperimenterGroup;
import omero.model.ExperimenterGroupI;
import omero.model.ExperimenterI;
import omero.model.Image;
import omero.model.ImageI;
import omero.sys.Roles;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import Glacier2.CannotCreateSessionException;
import Glacier2.PermissionDeniedException;
@Test(enabled=false, groups = { "broken", "client", "integration", "security", "ticket:52", "init" })
public class AbstractChangeDetailClientTest extends AbstractSecurityTest {
private String user_name = "USER:" + UUID.randomUUID().toString();
private String other_name = "OTHER:" + UUID.randomUUID().toString();
private String world_name = "WORLD:" + UUID.randomUUID().toString();
private String pi_name = "PI:" + UUID.randomUUID().toString();
private String pi_group = "PIGRP:" + UUID.randomUUID().toString();
private String other_grp = "OTHERGRP:" + UUID.randomUUID().toString();
protected Login asRoot, asUser, asOther, asWorld, asPI;
protected Experimenter toRoot, toUser, toOther, toWorld, toPI;
protected ExperimenterGroup toSystem, toUserGroup, toOtherGroup, toPIGroup;
// ~ Testng Adapter
// =========================================================================
@BeforeClass
public void createUsersAndImages() throws Exception {
init();
ServiceFactoryPrx sf = c.createSession();
Roles roles = sf.getAdminService().getSecurityRoles();
toRoot = new ExperimenterI(roles.rootId, false);
toSystem = new ExperimenterGroupI(roles.systemGroupId, false);
toUserGroup = new ExperimenterGroupI(roles.userGroupId, false);
toOtherGroup = new ExperimenterGroupI();
toOtherGroup.setName(rstring(other_grp));
toOtherGroup = new ExperimenterGroupI(rootAdmin
.createGroup(toOtherGroup), false);
toPIGroup = new ExperimenterGroupI();
toPIGroup.setName(rstring(pi_group));
toPIGroup = new ExperimenterGroupI(rootAdmin.createGroup(toPIGroup),
false);
toUser = new ExperimenterI();
toUser.setFirstName(rstring("test"));
toUser.setLastName(rstring("test"));
toUser.setOmeName(rstring(user_name));
toUser = new ExperimenterI(rootAdmin.createUser(toUser, pi_group), false);
toOther = new ExperimenterI();
toOther.setFirstName(rstring("test"));
toOther.setLastName(rstring("test"));
toOther.setOmeName(rstring(other_name));
toOther = new ExperimenterI(rootAdmin.createUser(toOther, pi_group),
false);
toWorld = new ExperimenterI();
toWorld.setFirstName(rstring("test"));
toWorld.setLastName(rstring("test"));
toWorld.setOmeName(rstring(world_name));
toWorld = new ExperimenterI(rootAdmin.createUser(toWorld, other_grp),
false);
toPI = new ExperimenterI();
toPI.setFirstName(rstring("test"));
toPI.setLastName(rstring("test"));
toPI.setOmeName(rstring(pi_name));
toPI = new ExperimenterI(rootAdmin.createUser(toPI, pi_group), false);
rootAdmin.setGroupOwner(toPIGroup, toPI);
asRoot = super.rootLogin;
asUser = new Login(user_name, "ome", pi_group, "Test");
asOther = new Login(other_name, "ome", pi_group, "Test");
asWorld = new Login(world_name, "ome");
asPI = new Login(pi_name, "ome");
}
// ~ Helpers
// =========================================================================
protected Long managedImage(Login login) {
try
{
ServiceFactoryPrx services = c.createSession(login.getName(), login.getPassword());
Image i = new ImageI();
i.setName(rstring("test"));
i = (Image) services.getUpdateService().saveAndReturnObject(i);
// They need to actual belong to the right people
assertEquals(rootAdmin.lookupExperimenter(login.getName()).getId(),
rootQuery.get("Image", i.getId().getValue()).getDetails().getOwner()
.getId());
return i.getId().getValue();
} catch (CannotCreateSessionException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
} catch (PermissionDeniedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
} catch (ServerError e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
}
}
protected void createAsUserToOwner(Login login, Experimenter owner)
throws ValidationException {
try
{
ServiceFactoryPrx factory = c.createSession(login.getName(), login.getPassword());
IUpdatePrx iUpdate = factory.getUpdateService();
Image i = new ImageI();
i.setName(rstring("test"));
i.getDetails().setOwner(owner);
iUpdate.saveObject(i);
} catch (CannotCreateSessionException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
} catch (PermissionDeniedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
} catch (ServerError e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
}
}
protected void updateAsUserToOwner(Long imageId, Login login,
Experimenter owner) throws ValidationException {
try
{
ServiceFactoryPrx factory = c.createSession(login.getName(), login.getPassword());
IQueryPrx iQuery = factory.getQueryService();
Image i = (Image) iQuery.get("Image", imageId);
i.getDetails().setOwner(owner);
IUpdatePrx iUpdate = factory.getUpdateService();
iUpdate.saveObject(i);
} catch (CannotCreateSessionException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
} catch (PermissionDeniedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
} catch (ServerError e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
}
}
protected void createAsUserToGroup(Login login, ExperimenterGroup group)
throws ValidationException {
try {
ServiceFactoryPrx factory = c.createSession(login.getName(), login.getPassword());
IUpdatePrx iUpdate = factory.getUpdateService();
Image i = new ImageI();
i.setName(rstring("test"));
i.getDetails().setGroup(group);
iUpdate.saveObject(i);
} catch (CannotCreateSessionException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
} catch (PermissionDeniedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
} catch (ServerError e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
}
}
protected void updateAsUserToGroup(Long imageId, Login login,
ExperimenterGroup group) throws ValidationException {
try {
ServiceFactoryPrx factory = c.createSession(login.getName(), login.getPassword());
IQueryPrx iQuery = factory.getQueryService();
Image i = (Image) iQuery.get("Image", imageId);
i.getDetails().setGroup(group);
IUpdatePrx iUpdate = factory.getUpdateService();
iUpdate.saveObject(i);
} catch (CannotCreateSessionException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
} catch (PermissionDeniedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
} catch (ServerError e)
{
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("Unimplemented exception.");
}
}
}