def testReadOnly(self, gatewaywrapper): """ In a read-only group, user should NOT be able to Edit or Annotate """ dbhelpers.USERS['read_only_owner'] = dbhelpers.UserEntry( 'r-_owner', 'ome', firstname='chmod', lastname='test', groupname="ReadOnly_chmod_test", groupperms=READONLY) dbhelpers.USERS['read_only_user'] = dbhelpers.UserEntry( 'r-_user', 'ome', firstname='chmod2', lastname='test', groupname="ReadOnly_chmod_test", groupperms=READONLY) dbhelpers.bootstrap(onlyUsers=True) # Login as owner... gatewaywrapper.doLogin(dbhelpers.USERS['read_only_owner']) p = omero.model.ProjectI() p.setName(rstring("test_create_read_only_project")) p = gatewaywrapper.gateway.getUpdateService().saveAndReturnObject(p) # Login as user... gatewaywrapper.doLogin(dbhelpers.USERS['read_only_user']) project = gatewaywrapper.gateway.getObject("Project", p.id.val) self.assertCanEdit(project, False) self.assertCanAnnotate(project, False)
def setUp(self): """ Create a group with User """ dbhelpers.USERS['history_test_user'] = dbhelpers.UserEntry( 'history_test_user', 'ome', firstname='history', lastname='user', groupname="rw_history", groupperms=READWRITE) dbhelpers.bootstrap(onlyUsers=True)
def setUp(self): """ Create a group with owner & member""" dbhelpers.USERS['group_owner'] = dbhelpers.UserEntry( 'group_owner', 'ome', firstname='Group', lastname='Owner', groupname="ownership_test", groupperms='rwr---', groupowner=True) dbhelpers.USERS['group_member'] = dbhelpers.UserEntry( 'group_member', 'ome', firstname='Group', lastname='Member', groupname="ownership_test", groupperms='rwr---', groupowner=False) dbhelpers.bootstrap(onlyUsers=True)
def ReadWrite(key, admin=False, groupowner=False): dbhelpers.USERS['read_write_%s' % key] = dbhelpers.UserEntry( "rw_%s" % key, 'ome', firstname='chmod', lastname='test', groupname="ReadWrite_chmod_test", groupperms=READWRITE, groupowner=groupowner, admin=admin)
def ReadAnn(key, admin=False, groupowner=False): dbhelpers.USERS['read_ann_%s' % key] = dbhelpers.UserEntry( "ra_%s" % key, 'ome', firstname='chmod', lastname='test', groupname="ReadAnn_chmod_test", groupperms=READANN, groupowner=groupowner, admin=admin)
def ReadOnly(key, admin=False, groupowner=False): dbhelpers.USERS['read_only_%s' % key] = dbhelpers.UserEntry( "r-_%s" % key, 'ome', firstname='chmod', lastname='test', groupname="ReadOnly_chmod_test", groupperms=READONLY, groupowner=groupowner, admin=admin)
def testAuthorCanEdit(self, gatewaywrapper, author_testimg_generated): """ Tests whether the default Users created by default setUp() canEdit their Images etc. """ image = author_testimg_generated imageId = image.id gatewaywrapper.gateway.getAdminService().getEventContext() group = gatewaywrapper.gateway.getGroupFromContext() image_gid = image.getDetails().getGroup().id image.getDetails().getGroup().name # Author should be able to Edit and Annotate their own data assert image.canEdit(), "Author can edit their own image" assert image.canAnnotate(), "Author can annotate their own image" # Login as Admin gatewaywrapper.loginAsAdmin() gatewaywrapper.gateway.SERVICE_OPTS.setOmeroGroup('-1') i = gatewaywrapper.gateway.getObject("Image", imageId) assert i.canEdit(), "Admin can edit Author's image" assert i.canAnnotate(), "Admin can annotate Author's image" # Login as default "User" # NB: seems this user is not in same group as Author's image. gatewaywrapper.loginAsUser() gatewaywrapper.gateway.SERVICE_OPTS.setOmeroGroup('-1') i = gatewaywrapper.gateway.getObject("Image", imageId) assert None == i, \ "User cannot access Author's image in Read-only group" # Create new user in the same group gatewaywrapper.loginAsAdmin() # groupname = image_gname chmod_test_user = dbhelpers.UserEntry('chmod_test_user6', 'foobar', firstname='User', lastname='Chmod') chmod_test_user.create(gatewaywrapper.gateway, dbhelpers.ROOT.passwd) admin = gatewaywrapper.gateway.getAdminService() user = admin.lookupExperimenter('chmod_test_user6') group = admin.getGroup(image_gid) admin.addGroups(user, [group]) gatewaywrapper.doLogin(chmod_test_user) user = gatewaywrapper.gateway.getUser() # switch into group assert gatewaywrapper.gateway.setGroupForSession(image_gid) assert image_gid == gatewaywrapper.gateway.getEventContext().groupId,\ "Confirm in same group as image" i = gatewaywrapper.gateway.getObject("Image", imageId) assert i is not None, \ "User cannot access Author's image in Read-only group: %s" % i
def setUp(self): """ Create a group with Admin & Owner members""" # readonly with an Admin user dbhelpers.USERS['chmod_group_admin'] = dbhelpers.UserEntry( 'r-_chmod_admin', 'ome', firstname='chmod', lastname='admin', groupname="ReadOnly_chmod_group", groupperms=READONLY, admin=True) dbhelpers.USERS['chmod_group_owner'] = dbhelpers.UserEntry( 'r-_chmod_owner', 'ome', firstname='chmod', lastname='owner', groupname="ReadOnly_chmod_group", groupperms=READONLY, groupowner=True) dbhelpers.bootstrap(onlyUsers=True)
def setUp(self): """ Create a group with User """ dbhelpers.USERS['history_test_user'] = dbhelpers.UserEntry( 'history_test_user', 'ome', firstname='history', lastname='user', groupname="rw_history", groupperms=READWRITE) # Calling the superclass setUp processes the dbhelpers.USERS etc to populate DB super(HistoryTest, self).setUp()
def testAuthorCanEdit(self): """ Tests whether the default Users created by default setUp() canEdit their Images etc. """ image = self.image imageId = image.id ctx = self.gateway.getAdminService().getEventContext() group = self.gateway.getGroupFromContext() image_gid = image.getDetails().getGroup().id image_gname = image.getDetails().getGroup().name # Author should be able to Edit and Annotate their own data self.assertTrue(image.canEdit(), "Author can edit their own image") self.assertTrue(image.canAnnotate(), "Author can annotate their own image") # Login as Admin self.loginAsAdmin() self.gateway.SERVICE_OPTS.setOmeroGroup('-1') i = self.gateway.getObject("Image", imageId) self.assertTrue(i.canEdit(), "Admin can edit Author's image") self.assertTrue(i.canAnnotate(), "Admin can annotate Author's image") # Login as default "User" - NB: seems this user is not in same group as Author's image. self.loginAsUser() self.gateway.SERVICE_OPTS.setOmeroGroup('-1') i = self.gateway.getObject("Image", imageId) self.assertEqual( None, i, "User cannot access Author's image in Read-only group") # Create new user in the same group self.loginAsAdmin() chmod_test_user = dbhelpers.UserEntry( 'chmod_test_user6', 'foobar', firstname='User', lastname='Chmod') #groupname = image_gname chmod_test_user.create(self.gateway, dbhelpers.ROOT.passwd) admin = self.gateway.getAdminService() user = admin.lookupExperimenter('chmod_test_user6') group = admin.getGroup(image_gid) admin.addGroups(user, [group]) self.doLogin(chmod_test_user) user = self.gateway.getUser() self.assertTrue( self.gateway.setGroupForSession(image_gid)) # switch into group self.assertEqual(image_gid, self.gateway.getEventContext().groupId, "Confirm in same group as image") i = self.gateway.getObject("Image", imageId) self.assertNotEqual(None, i, \ "User cannot access Author's image in Read-only group: %s" % i)
def setUp(self): """ Here we're creating 3 groups, each with 2 users with data belonging to the first user in each""" # read-only users & data dbhelpers.USERS['read_only_owner'] = dbhelpers.UserEntry( 'r-_owner', 'ome', firstname='chmod', lastname='test', groupname="ReadOnly_chmod_test", groupperms=READONLY) dbhelpers.USERS['read_only_user'] = dbhelpers.UserEntry( 'r-_user', 'ome', firstname='chmod2', lastname='test', groupname="ReadOnly_chmod_test", groupperms=READONLY) # Calling the superclass setUp processes the dbhelpers.USERS and dbhelpers.PROJECTS etc to populate DB super(ManualCreateEditTest, self).setUp()
def setUp(self): """ Create a group with Admin & Owner members""" # readonly with an Admin user dbhelpers.USERS['chmod_group_admin'] = dbhelpers.UserEntry( 'r-_chmod_admin', 'ome', firstname='chmod', lastname='admin', groupname="ReadOnly_chmod_group", groupperms=READONLY, admin=True) dbhelpers.USERS['chmod_group_owner'] = dbhelpers.UserEntry( 'r-_chmod_owner', 'ome', firstname='chmod', lastname='owner', groupname="ReadOnly_chmod_group", groupperms=READONLY, groupowner=True) # Calling the superclass setUp processes the dbhelpers.USERS etc to populate DB super(ChmodGroupTest, self).setUp()
""" Library for gateway tests Copyright 2009 Glencoe Software, Inc. All rights reserved. Use is subject to license terms supplied in LICENSE.txt """ import omero from omero.rtypes import rstring from omero.gateway.scripts import dbhelpers dbhelpers.USERS = { 'user': dbhelpers.UserEntry('weblitz_test_user', 'foobar', 'User', 'Weblitz'), 'author': dbhelpers.UserEntry('weblitz_test_author', 'foobar', 'Author', 'Weblitz'), } dbhelpers.PROJECTS = { 'testpr1': dbhelpers.ProjectEntry('weblitz_test_priv_project', 'author'), 'testpr2': dbhelpers.ProjectEntry('weblitz_test_priv_project2', 'author'), } dbhelpers.DATASETS = { 'testds1': dbhelpers.DatasetEntry('weblitz_test_priv_dataset', 'testpr1'), 'testds2': dbhelpers.DatasetEntry('weblitz_test_priv_dataset2', 'testpr1'), 'testds3': dbhelpers.DatasetEntry('weblitz_test_priv_dataset3', 'testpr2'), }