/* (c) 2014, 2015 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.geofence.services;
import com.vividsolutions.jts.geom.MultiPolygon;
import com.vividsolutions.jts.io.ParseException;
import com.vividsolutions.jts.io.WKTReader;
import org.geoserver.geofence.core.model.GFUser;
import org.geoserver.geofence.core.model.GSInstance;
import org.geoserver.geofence.core.model.GSUser;
import org.geoserver.geofence.core.model.UserGroup;
import org.geoserver.geofence.services.dto.ShortGroup;
import org.geoserver.geofence.services.dto.ShortRule;
import org.geoserver.geofence.services.dto.ShortUser;
import org.geoserver.geofence.services.exception.NotFoundServiceEx;
import java.util.Arrays;
import java.util.List;
import junit.framework.TestCase;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.geoserver.geofence.services.dto.ShortAdminRule;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
*
* @author ETj (etj at geo-solutions.it)
*/
public class ServiceTestBase extends TestCase {
protected final Logger LOGGER = LogManager.getLogger(getClass());
protected static UserAdminService userAdminService;
protected static GFUserAdminService gfUserAdminService;
protected static UserGroupAdminService userGroupAdminService;
protected static InstanceAdminService instanceAdminService;
protected static RuleAdminService ruleAdminService;
protected static AdminRuleAdminService adminruleAdminService;
protected static RuleReaderService ruleReaderService;
protected static ClassPathXmlApplicationContext ctx = null;
public ServiceTestBase() {
// LOGGER = LogManager.getLogger(getClass());
synchronized(ServiceTestBase.class) {
if(ctx == null) {
String[] paths = {
"classpath*:applicationContext.xml"
// ,"applicationContext-test.xml"
};
ctx = new ClassPathXmlApplicationContext(paths);
userAdminService = (UserAdminService)ctx.getBean("userAdminService");
gfUserAdminService = (GFUserAdminService)ctx.getBean("gfUserAdminService");
userGroupAdminService = (UserGroupAdminService)ctx.getBean("userGroupAdminService");
instanceAdminService = (InstanceAdminService)ctx.getBean("instanceAdminService");
ruleAdminService = (RuleAdminService)ctx.getBean("ruleAdminService");
adminruleAdminService = (AdminRuleAdminService)ctx.getBean("adminRuleAdminService");
ruleReaderService = (RuleReaderService)ctx.getBean("ruleReaderService");
}
}
}
@Override
protected void setUp() throws Exception {
LOGGER.info("############################################ Running " + getClass().getSimpleName() + "::" + getName() );
super.setUp();
removeAll();
}
public void testCheckServices() {
assertNotNull(userAdminService);
assertNotNull(gfUserAdminService);
assertNotNull(userGroupAdminService);
assertNotNull(instanceAdminService);
assertNotNull(ruleAdminService);
assertNotNull(adminruleAdminService);
}
protected void removeAll() throws NotFoundServiceEx {
LOGGER.info("***** removeAll()");
removeAllRules();
removeAllAdminRules();
removeAllUsers();
removeAllGRUsers();
removeAllUserGroups();
removeAllInstances();
}
protected void removeAllRules() throws NotFoundServiceEx {
List<ShortRule> list = ruleAdminService.getAll();
for (ShortRule item : list) {
LOGGER.info("Removing " + item);
boolean ret = ruleAdminService.delete(item.getId());
assertTrue("Rule not removed", ret);
}
assertEquals("Rules have not been properly deleted", 0, ruleAdminService.getCountAll());
}
protected void removeAllAdminRules() throws NotFoundServiceEx {
List<ShortAdminRule> list = adminruleAdminService.getAll();
for (ShortAdminRule item : list) {
LOGGER.info("Removing " + item);
boolean ret = adminruleAdminService.delete(item.getId());
assertTrue("AdminRule not removed", ret);
}
assertEquals("AdminRules have not been properly deleted", 0, adminruleAdminService.getCountAll());
}
protected void removeAllUsers() throws NotFoundServiceEx {
List<ShortUser> list = userAdminService.getList(null,null,null);
for (ShortUser item : list) {
LOGGER.info("Removing " + item);
boolean ret = userAdminService.delete(item.getId());
assertTrue("User not removed", ret);
}
assertEquals("Users have not been properly deleted", 0, userAdminService.getCount(null));
}
protected void removeAllGRUsers() throws NotFoundServiceEx {
List<ShortUser> list = gfUserAdminService.getList(null,null,null);
for (ShortUser item : list) {
LOGGER.info("Removing " + item);
boolean ret = gfUserAdminService.delete(item.getId());
assertTrue("User not removed", ret);
}
assertEquals("GRUsers have not been properly deleted", 0, gfUserAdminService.getCount(null));
}
protected void removeAllUserGroups() throws NotFoundServiceEx {
List<ShortGroup> list = userGroupAdminService.getList(null,null,null);
for (ShortGroup item : list) {
LOGGER.info("Removing " + item);
boolean ret = userGroupAdminService.delete(item.getId());
assertTrue("UserGroup not removed", ret);
}
assertEquals("UserGroups have not been properly deleted", 0, userGroupAdminService.getCount(null));
}
protected void removeAllInstances() throws NotFoundServiceEx {
List<GSInstance> list = instanceAdminService.getAll();
for (GSInstance item : list) {
LOGGER.info("Removing " + item);
boolean ret = instanceAdminService.delete(item.getId());
assertTrue("GSInstance not removed", ret);
}
assertEquals("Instances have not been properly deleted", 0, instanceAdminService.getCount(null));
}
protected GSUser createUser(String base, UserGroup ... groups) {
GSUser user = new GSUser();
user.setName( base );
user.getGroups().addAll(Arrays.asList(groups));
userAdminService.insert(user);
return user;
}
protected GFUser createGFUser(String base) {
GFUser user = new GFUser();
user.setName( base );
gfUserAdminService.insert(user);
return user;
}
protected UserGroup createRole(String base) {
ShortGroup sgroup = new ShortGroup();
sgroup.setName(base);
long id = userGroupAdminService.insert(sgroup);
try {
return userGroupAdminService.get(id);
} catch (NotFoundServiceEx ex) {
throw new RuntimeException("Should never happen ("+id+")", ex);
}
}
protected GSUser createUserAndGroup(String base) {
UserGroup group = createRole(base);
return createUser(base, group);
}
protected MultiPolygon parseMultiPolygon(String wkt) {
try {
WKTReader wktReader = new WKTReader();
MultiPolygon the_geom = (MultiPolygon) wktReader.read(wkt);
the_geom.setSRID(4326);
return the_geom;
} catch (ParseException e) {
throw new IllegalArgumentException("Unparsabe WKT", e);
}
}
}