/*
* $Id: ChmodClientTest.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 org.testng.annotations.*;
import ome.conditions.SecurityViolation;
import ome.conditions.ValidationException;
import ome.model.core.Image;
import ome.model.internal.Permissions;
import ome.system.Login;
import ome.system.ServiceFactory;
@Test(enabled=false, groups = { "broken", "client", "integration", "security", "ticket:365", "chmod" })
public class ChmodClientTest extends AbstractChangeDetailClientTest {
// TODO : This series of tests (AbstractChangeDetailClientTest)
// should be unified with AbstractPermissionsTest (both setup
// UserOtherWorldPiRoot etc.)
// design parameters:
// 1. various permissions (belonging to root, user, or other)
// 2. as user or root
// 3. changing to various permissions
@Test(enabled=false)
public void test_user_RWRW_user_PUBLIC() throws Exception {
newUserImagePermissionsAsUserToPermissions(true, asUser,
Permissions.GROUP_PRIVATE, asUser, Permissions.PUBLIC);
}
@Test(enabled=false)
public void test_user_RWRW_other_PUBLIC() throws Exception {
newUserImagePermissionsAsUserToPermissions(false, asUser,
Permissions.GROUP_PRIVATE, asOther, Permissions.PUBLIC);
}
@Test(enabled=false)
public void test_user_RWRW_world_PUBLIC() throws Exception {
newUserImagePermissionsAsUserToPermissions(false, asUser,
Permissions.GROUP_PRIVATE, asWorld, Permissions.PUBLIC);
}
@Test(enabled=false)
public void test_user_RWRW_pi_PUBLIC() throws Exception {
newUserImagePermissionsAsUserToPermissions(true, asUser,
Permissions.GROUP_PRIVATE, asPI, Permissions.PUBLIC);
}
@Test(enabled=false)
public void test_user_RWRW_root_PUBLIC() throws Exception {
newUserImagePermissionsAsUserToPermissions(true, asUser,
Permissions.GROUP_PRIVATE, asRoot, Permissions.PUBLIC);
}
@Test(enabled=false, groups = { "ticket:397", "broken" })
public void testCheckInitialParameters() throws Exception {
fail("USER CAN CURRENTLY JUST PASS IN WHATEVER OWNER THEY WANT.");
// UNTAINT
}
// ~ Helpers
// =========================================================================
protected void newUserImagePermissionsAsUserToPermissions(boolean ok,
Login owner, Permissions orig, Login changer, Permissions target)
throws ValidationException {
ServiceFactory factory = new ServiceFactory(owner);
ServiceFactory factory2 = new ServiceFactory(changer);
Image i;
// via IAdmin
try {
i = new Image();
i.getDetails().setPermissions(orig);
i.setName("test");
i = factory.getUpdateService().saveAndReturnObject(i);
factory2.getAdminService().changePermissions(i, target);
if (!ok) {
fail("secvio!");
}
} catch (SecurityViolation sv) {
if (ok) {
throw sv;
}
}
// via Details
try {
i = new Image();
i.getDetails().setPermissions(orig);
i.setName("test");
i = factory.getUpdateService().saveAndReturnObject(i);
i.getDetails().setPermissions(target);
factory2.getUpdateService().saveObject(i);
if (!ok) {
fail("secvio!");
}
} catch (SecurityViolation sv) {
if (ok) {
throw sv;
}
}
}
}