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