1 package org.jellyfish.implementation; 2 3 import java.util.Properties; 4 5 import javax.naming.Context; 6 import javax.naming.NameNotFoundException; 7 import javax.naming.NamingException; 8 import javax.naming.directory.DirContext; 9 10 import junit.framework.TestCase; 11 import mock.javax.naming.directory.DirContextMock; 12 import mock.org.apache.avalon.framework.logger.LoggerMock; 13 import mock 14 .org 15 .apache 16 .avalon 17 .framework 18 .service 19 .ServiceManagerMock 20 .ServiceManagerMock; 21 22 import org.jellyfish.ConfigurationManager; 23 import org.jellyfish.ConfigurationManagerMock; 24 import org.jellyfish.config.Config; 25 26 public class ConnectionManagerDefaultTest extends TestCase { 27 private ConnectionManagerDefault connectionManager; 28 private ConfigurationManagerMock configurationManagerMock; 29 private Properties createInitialContextProperties; 30 private DirContext initialDirContextMock; 31 private ServiceManagerMock serviceManagerMock; 32 private LoggerMock loggerMock; 33 private static final String USERNAME = "Bob"; 34 private static final String PASSWORD = "Alcatraz"; 35 36 public ConnectionManagerDefaultTest(String arg0) { 37 super(arg0); 38 } 39 40 protected void setUp() throws Exception { 41 createInitialContextProperties = null; 42 initialDirContextMock = new DirContextMock(); 43 configurationManagerMock = new ConfigurationManagerMock(); 44 configurationManagerMock.getConfigurationReturn = createConfig(); 45 serviceManagerMock = new ServiceManagerMock(); 46 serviceManagerMock.lookupMap.put( 47 ConfigurationManager.ROLE, 48 configurationManagerMock); 49 connectionManager = createConnectionManager(); 50 connectionManager.service(serviceManagerMock); 51 loggerMock = new LoggerMock(); 52 connectionManager.enableLogging(loggerMock); 53 } 54 55 private ConnectionManagerDefault createConnectionManager() { 56 return new ConnectionManagerDefault() { 57 protected DirContext createInitialContext(Properties properties) 58 throws NamingException { 59 createInitialContextProperties = properties; 60 return initialDirContextMock; 61 } 62 }; 63 } 64 65 private Config createConfig() { 66 Config config = new Config(); 67 config.setConnectionDn("cn=Manager,dc=blah,dc=com"); 68 config.setConnectionPassword("somepassword"); 69 config.setConnectionUrl("ldap://somehost:389"); 70 config.setContextFactory("com.sun.jndi.ldap.LdapCtxFactory"); 71 return config; 72 } 73 74 public void testGetInitialContext() { 75 DirContext initialContext = connectionManager.getContext(); 76 assertNotNull(initialContext); 77 assertNotNull(createInitialContextProperties); 78 assertEquals( 79 "simple", 80 createInitialContextProperties.getProperty( 81 Context.SECURITY_AUTHENTICATION)); 82 assertEquals( 83 configurationManagerMock.getConfigurationReturn.getConnectionUrl(), 84 createInitialContextProperties.getProperty(Context.PROVIDER_URL)); 85 assertEquals( 86 com.sun.jndi.ldap.LdapCtxFactory.class.getName(), 87 createInitialContextProperties.getProperty( 88 Context.INITIAL_CONTEXT_FACTORY)); 89 assertEquals( 90 configurationManagerMock.getConfigurationReturn.getConnectionDn(), 91 createInitialContextProperties.getProperty( 92 Context.SECURITY_PRINCIPAL)); 93 assertEquals( 94 configurationManagerMock 95 .getConfigurationReturn 96 .getConnectionPassword(), 97 createInitialContextProperties.getProperty( 98 Context.SECURITY_CREDENTIALS)); 99 assertTrue(loggerMock.debugCalled); 100 assertEquals( 101 "Connected to ldap://somehost:389", 102 loggerMock.debugMessage); 103 } 104 105 public void testGetContextWithUserNameAndPassword() throws Exception { 106 DirContext initialContext = 107 connectionManager.getContext(USERNAME, PASSWORD); 108 assertNotNull(initialContext); 109 assertNotNull(createInitialContextProperties); 110 assertEquals( 111 "simple", 112 createInitialContextProperties.getProperty( 113 Context.SECURITY_AUTHENTICATION)); 114 assertEquals( 115 configurationManagerMock.getConfigurationReturn.getConnectionUrl(), 116 createInitialContextProperties.getProperty(Context.PROVIDER_URL)); 117 assertEquals( 118 com.sun.jndi.ldap.LdapCtxFactory.class.getName(), 119 createInitialContextProperties.getProperty( 120 Context.INITIAL_CONTEXT_FACTORY)); 121 assertEquals( 122 USERNAME, 123 createInitialContextProperties.getProperty( 124 Context.SECURITY_PRINCIPAL)); 125 assertEquals( 126 PASSWORD, 127 createInitialContextProperties.getProperty( 128 Context.SECURITY_CREDENTIALS)); 129 } 130 131 public void testGetContextWithBADUserNameAndPassword() { 132 connectionManager = new ConnectionManagerDefault() { 133 protected DirContext createInitialContext(Properties properties) 134 throws NamingException { 135 throw new NameNotFoundException(); 136 } 137 }; 138 connectionManager.service(serviceManagerMock); 139 DirContext initialContext = null; 140 try { 141 initialContext = connectionManager.getContext(USERNAME, PASSWORD); 142 fail(); 143 } catch (NameNotFoundException nnfe) { 144 } catch (NamingException e) { 145 fail(); 146 } 147 assertNull(initialContext); 148 } 149 150 public void testGetContextWithUserNameAndBADPassword() throws Exception { 151 connectionManager = new ConnectionManagerDefault() { 152 protected DirContext createInitialContext(Properties properties) 153 throws NamingException { 154 throw new NamingException(); 155 } 156 }; 157 connectionManager.service(serviceManagerMock); 158 DirContext initialContext = null; 159 try { 160 initialContext = connectionManager.getContext(USERNAME, PASSWORD); 161 fail(); 162 } catch (NameNotFoundException nnfe) { 163 fail(); 164 } catch (NamingException e) { 165 } 166 assertNull(initialContext); 167 } 168 169 }

This page was automatically generated by Maven