This commit is contained in:
eitch 2010-09-18 20:13:31 +00:00
parent bef8474114
commit 1d410a6ede
3 changed files with 61 additions and 63 deletions

View File

@ -1,7 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<PrivilegeContainer>
<PersistenceHandler class="ch.eitchnet.privilege.handler.DefaultPersistenceHandler">
<PrivilegeHandler class="ch.eitchnet.privilege.handler.DefaultPrivilegeHandler" />
<EncryptionHandler class="ch.eitchnet.privilege.handler.DefaultEncryptionHandler">
<Parameters>
<Parameter name="hashAlgorithm" value="SHA-256" />
</Parameters>
</EncryptionHandler>
<PersistenceHandler class="ch.eitchnet.privilege.handler.XmlPersistenceHandler">
<Parameters>
<Parameter name="basePath" value="./config" />
<Parameter name="usersXmlFile" value="PrivilegeUsers.xml" />
@ -11,14 +19,4 @@
</Parameters>
</PersistenceHandler>
<SessionHandler class="ch.eitchnet.privilege.handler.DefaultSessionHandler" />
<ModelHandler class="ch.eitchnet.privilege.handler.DefaultModelHandler" />
<EncryptionHandler class="ch.eitchnet.privilege.handler.DefaultEncryptionHandler">
<Parameters>
<Parameter name="hashAlgorithm" value="SHA-256" />
</Parameters>
</EncryptionHandler>
</PrivilegeContainer>

View File

@ -27,14 +27,14 @@ import ch.eitchnet.privilege.i18n.PrivilegeException;
* @author rvonburg
*
*/
public class ConfigurationHelper {
public class InitializationHelper {
private static final Logger logger = Logger.getLogger(ConfigurationHelper.class);
private static final Logger logger = Logger.getLogger(InitializationHelper.class);
/**
* @param privilegeContainerXmlFile
*/
public static void initializeFromXml(File privilegeContainerXmlFile) {
public static PrivilegeHandler initializeFromXml(File privilegeContainerXmlFile) {
// make sure file exists
if (!privilegeContainerXmlFile.exists()) {
@ -103,6 +103,8 @@ public class ConfigurationHelper {
logger.error(e, e);
throw new PrivilegeException("PrivilegeHandler " + privilegeHandlerClassName + " could not be initialized");
}
return privilegeHandler;
}
/**
@ -114,7 +116,16 @@ public class ConfigurationHelper {
Map<String, String> parameterMap = new HashMap<String, String>();
// if element is null then there are no parameters, so return empty map
if (element == null)
return parameterMap;
List<Element> elements = element.elements(XmlConstants.XML_PARAMETER);
// if elements is null or empty then there are no parameters, so return empty map
if (elements == null || elements.isEmpty())
return parameterMap;
for (Element parameter : elements) {
String name = parameter.attributeValue(XmlConstants.XML_ATTR_NAME);
String value = parameter.attributeValue(XmlConstants.XML_ATTR_VALUE);

View File

@ -21,8 +21,8 @@ import org.apache.log4j.PatternLayout;
import org.junit.BeforeClass;
import org.junit.Test;
import ch.eitchnet.privilege.base.PrivilegeContainer;
import ch.eitchnet.privilege.handler.PrivilegeHandler;
import ch.eitchnet.privilege.helper.InitializationHelper;
import ch.eitchnet.privilege.i18n.AccessDeniedException;
import ch.eitchnet.privilege.i18n.PrivilegeException;
import ch.eitchnet.privilege.model.Certificate;
@ -38,61 +38,64 @@ public class PrivilegeTest {
private static final Logger logger = Logger.getLogger(PrivilegeTest.class);
private static PrivilegeHandler privilegeHandler;
/**
* @throws java.lang.Exception
*/
@BeforeClass
public static void init() throws Exception {
// set up log4j
BasicConfigurator.resetConfiguration();
BasicConfigurator.configure(new ConsoleAppender(new PatternLayout("%d %5p [%t] %C{1} %M - %m%n")));
Logger.getRootLogger().setLevel(Level.INFO);
try {
// set up log4j
BasicConfigurator.resetConfiguration();
BasicConfigurator.configure(new ConsoleAppender(new PatternLayout("%d %5p [%t] %C{1} %M - %m%n")));
Logger.getRootLogger().setLevel(Level.INFO);
// initialize container
String pwd = System.getProperty("user.dir");
File privilegeContainerXml = new File(pwd + "/config/PrivilegeContainer.xml");
PrivilegeContainer privilegeContainer = PrivilegeContainer.getInstance();
privilegeContainer.initialize(privilegeContainerXml);
// initialize container
String pwd = System.getProperty("user.dir");
File privilegeContainerXmlFile = new File(pwd + "/config/PrivilegeContainer.xml");
privilegeHandler = InitializationHelper.initializeFromXml(privilegeContainerXmlFile);
} catch (Exception e) {
logger.error(e, e);
throw new RuntimeException("Initialization failed: " + e.getLocalizedMessage(), e);
}
}
@Test
public void testAuthenticationOk() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("eitch",
"1234567890");
Certificate certificate = privilegeHandler.authenticate("eitch", "1234567890");
org.junit.Assert.assertTrue("Certificate is null!", certificate != null);
}
@Test(expected = AccessDeniedException.class)
public void testFailAuthenticationNOk() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("eitch", "123");
Certificate certificate = privilegeHandler.authenticate("eitch", "123");
org.junit.Assert.assertTrue("Certificate is null!", certificate != null);
}
@Test(expected = PrivilegeException.class)
public void testFailAuthenticationPWNull() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("eitch", null);
Certificate certificate = privilegeHandler.authenticate("eitch", null);
org.junit.Assert.assertTrue("Certificate is null!", certificate != null);
}
@Test
public void testAddUserBobWithPW() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("eitch",
"1234567890");
PrivilegeHandler modelHandler = PrivilegeContainer.getInstance().getModelHandler();
Certificate certificate = privilegeHandler.authenticate("eitch", "1234567890");
// let's add a new user bob
UserRep userRep = new UserRep("bob", "Bob", "Newman", UserState.NEW, new HashSet<String>(), null);
modelHandler.addOrReplaceUser(certificate, userRep, null);
privilegeHandler.addOrReplaceUser(certificate, userRep, null);
logger.info("Added user bob");
// set bob's password
modelHandler.setUserPassword(certificate, "bob", "12345678901");
privilegeHandler.setUserPassword(certificate, "bob", "12345678901");
logger.info("Set Bob's password");
}
@ -104,17 +107,14 @@ public class PrivilegeTest {
@Test(expected = AccessDeniedException.class)
public void testFailAuthAsBob() throws Exception {
PrivilegeContainer.getInstance().getModelHandler().authenticate("bob", "12345678901");
privilegeHandler.authenticate("bob", "12345678901");
}
@Test
public void testEnableUserBob() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("eitch",
"1234567890");
PrivilegeHandler modelHandler = PrivilegeContainer.getInstance().getModelHandler();
modelHandler.setUserState(certificate, "bob", UserState.ENABLED);
Certificate certificate = privilegeHandler.authenticate("eitch", "1234567890");
privilegeHandler.setUserState(certificate, "bob", UserState.ENABLED);
}
/**
@ -125,25 +125,21 @@ public class PrivilegeTest {
@Test(expected = PrivilegeException.class)
public void testFailAuthUserBob() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("bob",
"12345678901");
Certificate certificate = privilegeHandler.authenticate("bob", "12345678901");
org.junit.Assert.assertTrue("Certificate is null!", certificate != null);
}
@Test
public void testAddUserRoleToBob() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("eitch",
"1234567890");
PrivilegeHandler modelHandler = PrivilegeContainer.getInstance().getModelHandler();
modelHandler.addRoleToUser(certificate, "bob", "user");
Certificate certificate = privilegeHandler.authenticate("eitch", "1234567890");
privilegeHandler.addRoleToUser(certificate, "bob", "user");
}
@Test
public void testAuthAsBob() throws Exception {
PrivilegeContainer.getInstance().getModelHandler().authenticate("bob", "12345678901");
privilegeHandler.authenticate("bob", "12345678901");
}
/**
@ -154,50 +150,43 @@ public class PrivilegeTest {
@Test(expected = AccessDeniedException.class)
public void testFailAddUserTedAsBob() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("bob",
"12345678901");
Certificate certificate = privilegeHandler.authenticate("bob", "12345678901");
org.junit.Assert.assertTrue("Certificate is null!", certificate != null);
// let's add a new user bob
UserRep userRep = new UserRep("bob", "Bob", "Newman", UserState.NEW, new HashSet<String>(), null);
PrivilegeContainer.getInstance().getModelHandler().addOrReplaceUser(certificate, userRep, null);
privilegeHandler.addOrReplaceUser(certificate, userRep, null);
logger.info("Added user bob");
}
@Test
public void testAddAdminRoleToBob() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("eitch",
"1234567890");
PrivilegeHandler modelHandler = PrivilegeContainer.getInstance().getModelHandler();
modelHandler.addRoleToUser(certificate, "bob", PrivilegeContainer.PRIVILEGE_ADMIN_ROLE);
Certificate certificate = privilegeHandler.authenticate("eitch", "1234567890");
privilegeHandler.addRoleToUser(certificate, "bob", PrivilegeHandler.PRIVILEGE_ADMIN_ROLE);
}
@Test
public void testAddUserTedAsBob() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("bob",
"12345678901");
Certificate certificate = privilegeHandler.authenticate("bob", "12345678901");
org.junit.Assert.assertTrue("Certificate is null!", certificate != null);
// let's add a new user ted
UserRep userRep = new UserRep("ted", "Ted", "Newman", UserState.NEW, new HashSet<String>(), null);
PrivilegeContainer.getInstance().getModelHandler().addOrReplaceUser(certificate, userRep, null);
privilegeHandler.addOrReplaceUser(certificate, userRep, null);
logger.info("Added user bob");
}
@Test
public void testPerformRestrictable() throws Exception {
Certificate certificate = PrivilegeContainer.getInstance().getModelHandler().authenticate("eitch",
"1234567890");
Certificate certificate = privilegeHandler.authenticate("eitch", "1234567890");
org.junit.Assert.assertTrue("Certificate is null!", certificate != null);
// see if eitch can perform restrictable
Restrictable restrictable = new TestRestrictable();
boolean actionAllowed = PrivilegeContainer.getInstance().getModelHandler().actionAllowed(certificate,
restrictable);
boolean actionAllowed = privilegeHandler.actionAllowed(certificate, restrictable);
org.junit.Assert.assertTrue("eitch may not perform restrictable!", actionAllowed);
}
}