001: /*
002: * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com> and
003: * Steven Grimm <koreth[remove] at midwinter dot com>
004: * Distributed under the terms of either:
005: * - the common development and distribution license (CDDL), v1.0; or
006: * - the GNU Lesser General Public License, v2.1 or later
007: * $Id: TestMemorySessions.java 3308 2006-06-15 18:54:14Z gbevin $
008: */
009: package com.uwyn.rife.authentication.sessionmanagers;
010:
011: import com.uwyn.rife.authentication.SessionManager;
012: import com.uwyn.rife.authentication.elements.exceptions.UnknownSessionManagerFactoryClassException;
013: import com.uwyn.rife.ioc.HierarchicalProperties;
014: import com.uwyn.rife.ioc.exceptions.MandatoryPropertyMissingException;
015: import com.uwyn.rife.ioc.exceptions.PropertyValueException;
016: import junit.framework.TestCase;
017:
018: public class TestCustomSessionManager extends TestCase {
019: private HierarchicalProperties mProperties = null;
020:
021: /**
022: * Custom session manager class. Returns instances of our custom session
023: * manager, above.
024: */
025: public static class CustomSessionsFactory implements
026: SessionManagerFactory {
027: public SessionManager getManager(
028: HierarchicalProperties properties)
029: throws PropertyValueException {
030: String id = properties.getValueTyped("custom_id",
031: String.class);
032: if (null == id || id.length() == 0) {
033: throw new MandatoryPropertyMissingException("custom_id");
034: }
035:
036: return new CustomSessionManager(id);
037: }
038: }
039:
040: public TestCustomSessionManager(String name) {
041: super (name);
042: }
043:
044: public void setUp() throws Exception {
045: super .setUp();
046: mProperties = new HierarchicalProperties();
047: mProperties
048: .put(
049: SessionManagerFactoryFactory.PROPERTYNAME_FACTORY_CLASS,
050: CustomSessionsFactory.class.getName());
051: mProperties.put("custom_id", "x");
052: }
053:
054: public void testInstantiation() {
055: SessionManagerFactory factory = SessionManagerFactoryFactory
056: .getInstance(mProperties);
057:
058: assertNotNull(factory);
059: assertTrue(factory instanceof CustomSessionsFactory);
060: }
061:
062: public void testSessionManagerInstantiation() {
063: SessionManager manager = SessionManagerFactoryFactory
064: .getManager(mProperties);
065:
066: assertNotNull(manager);
067: assertTrue(manager instanceof CustomSessionManager);
068: assertEquals("x", ((CustomSessionManager) manager).getId());
069: }
070:
071: public void testExceptionOnMissingClass() throws Exception {
072: try {
073: SessionManagerFactoryFactory
074: .getInstance(new HierarchicalProperties());
075: fail("Didn't get expected exception");
076: } catch (MandatoryPropertyMissingException e) {
077: assertEquals(
078: SessionManagerFactoryFactory.PROPERTYNAME_FACTORY_CLASS,
079: e.getPropertyName());
080: }
081: }
082:
083: public void testExceptionOnBogusClass() throws Exception {
084: HierarchicalProperties properties = new HierarchicalProperties();
085: properties
086: .put(
087: SessionManagerFactoryFactory.PROPERTYNAME_FACTORY_CLASS,
088: "bad.class.name");
089: try {
090: SessionManagerFactoryFactory.getInstance(properties);
091: fail("Didn't get expected exception");
092: } catch (UnknownSessionManagerFactoryClassException e) {
093: assertEquals("bad.class.name", e.getFactoryClassName());
094: }
095: }
096:
097: public void testExceptionOnMissingFactoryParameter()
098: throws Exception {
099: HierarchicalProperties properties = new HierarchicalProperties();
100: properties
101: .put(
102: SessionManagerFactoryFactory.PROPERTYNAME_FACTORY_CLASS,
103: CustomSessionsFactory.class.getName());
104: try {
105: SessionManagerFactoryFactory.getManager(properties);
106: fail("Didn't get expected exception");
107: } catch (MandatoryPropertyMissingException e) {
108: assertEquals("custom_id", e.getPropertyName());
109: }
110: }
111: }
|