1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.ldap.server.jndi;
18
19
20 import org.apache.ldap.server.AbstractCoreTest;
21
22 import javax.naming.NamingException;
23 import javax.naming.directory.*;
24
25
26 /***
27 * Tests the creation of contexts in various ways.
28 *
29 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
30 * @version $Rev: 165059 $
31 */
32 public class CreateContextTest extends AbstractCoreTest
33 {
34 /***
35 * Tests the creation and subsequent read of a new JNDI context under the
36 * system context root.
37 *
38 * @throws javax.naming.NamingException if there are failures
39 */
40 public void testCreateContexts() throws NamingException
41 {
42
43
44
45 Attributes attributes = new BasicAttributes();
46 Attribute attribute = new BasicAttribute( "objectClass" );
47 attribute.add( "top" );
48 attribute.add( "organizationalUnit" );
49 attributes.put( attribute );
50 attributes.put( "ou", "testing00" );
51 DirContext ctx = sysRoot.createSubcontext( "ou=testing00", attributes );
52 assertNotNull( ctx );
53
54 ctx = ( DirContext ) sysRoot.lookup( "ou=testing00" );
55 assertNotNull( ctx );
56
57 attributes = ctx.getAttributes( "" );
58 assertNotNull( attributes );
59 assertEquals( "testing00", attributes.get( "ou" ).get() );
60 attribute = attributes.get( "objectClass" );
61 assertNotNull( attribute );
62 assertTrue( attribute.contains( "top" ) );
63 assertTrue( attribute.contains( "organizationalUnit" ) );
64
65
66
67
68 attributes = new BasicAttributes();
69 attribute = new BasicAttribute( "objectClass" );
70 attribute.add( "top" );
71 attribute.add( "organizationalUnit" );
72 attributes.put( attribute );
73 attributes.put( "ou", "testing01" );
74 ctx = sysRoot.createSubcontext( "ou=testing01", attributes );
75 assertNotNull( ctx );
76
77 ctx = ( DirContext ) sysRoot.lookup( "ou=testing01" );
78 assertNotNull( ctx );
79
80 attributes = ctx.getAttributes( "" );
81 assertNotNull( attributes );
82 assertEquals( "testing01", attributes.get( "ou" ).get() );
83 attribute = attributes.get( "objectClass" );
84 assertNotNull( attribute );
85 assertTrue( attribute.contains( "top" ) );
86 assertTrue( attribute.contains( "organizationalUnit" ) );
87
88
89
90
91 attributes = new BasicAttributes();
92 attribute = new BasicAttribute( "objectClass" );
93 attribute.add( "top" );
94 attribute.add( "organizationalUnit" );
95 attributes.put( attribute );
96 attributes.put( "ou", "testing02" );
97 ctx = sysRoot.createSubcontext( "ou=testing02", attributes );
98 assertNotNull( ctx );
99
100 ctx = ( DirContext ) sysRoot.lookup( "ou=testing02" );
101 assertNotNull( ctx );
102
103 attributes = ctx.getAttributes( "" );
104 assertNotNull( attributes );
105 assertEquals( "testing02", attributes.get( "ou" ).get() );
106 attribute = attributes.get( "objectClass" );
107 assertNotNull( attribute );
108 assertTrue( attribute.contains( "top" ) );
109 assertTrue( attribute.contains( "organizationalUnit" ) );
110
111
112
113
114 ctx = ( DirContext ) sysRoot.lookup( "ou=testing01" );
115
116 attributes = new BasicAttributes();
117 attribute = new BasicAttribute( "objectClass" );
118 attribute.add( "top" );
119 attribute.add( "organizationalUnit" );
120 attributes.put( attribute );
121 attributes.put( "ou", "subtest" );
122 ctx = ctx.createSubcontext( "ou=subtest", attributes );
123 assertNotNull( ctx );
124
125 ctx = ( DirContext ) sysRoot.lookup( "ou=subtest,ou=testing01" );
126 assertNotNull( ctx );
127
128 attributes = ctx.getAttributes( "" );
129 assertNotNull( attributes );
130 assertEquals( "subtest", attributes.get( "ou" ).get() );
131 attribute = attributes.get( "objectClass" );
132 assertNotNull( attribute );
133 assertTrue( attribute.contains( "top" ) );
134 assertTrue( attribute.contains( "organizationalUnit" ) );
135 }
136
137
138 public void testFailCreateExisting() throws NamingException
139 {
140 Attribute attribute;
141 Attributes attributes;
142 DirContext ctx = null;
143
144
145
146
147 attributes = new BasicAttributes();
148 attribute = new BasicAttribute( "objectClass" );
149 attribute.add( "top" );
150 attribute.add( "organizationalUnit" );
151 attributes.put( attribute );
152 attributes.put( "ou", "testing00" );
153 ctx = sysRoot.createSubcontext( "ou=testing00", attributes );
154 assertNotNull( ctx );
155
156 ctx = ( DirContext ) sysRoot.lookup( "ou=testing00" );
157 assertNotNull( ctx );
158
159 attributes = ctx.getAttributes( "" );
160 assertNotNull( attributes );
161 assertEquals( "testing00", attributes.get( "ou" ).get() );
162 attribute = attributes.get( "objectClass" );
163 assertNotNull( attribute );
164 assertTrue( attribute.contains( "top" ) );
165 assertTrue( attribute.contains( "organizationalUnit" ) );
166
167
168
169
170
171 attributes = new BasicAttributes();
172 attribute = new BasicAttribute( "objectClass" );
173 attribute.add( "top" );
174 attribute.add( "organizationalUnit" );
175 attributes.put( attribute );
176 attributes.put( "ou", "testing00" );
177
178 ctx = null;
179 try
180 {
181 ctx = sysRoot.createSubcontext( "ou=testing00", attributes );
182 fail( "Attempt to create exiting context should fail!" );
183 }
184 catch ( NamingException e )
185 {
186 assertNotNull( e );
187 }
188
189 assertNull( ctx );
190 }
191 }