1 package org.jellyfish.provider;
2
3 import java.io.IOException;
4 import java.util.Collection;
5 import java.util.HashMap;
6 import java.util.HashSet;
7 import java.util.Iterator;
8 import java.util.Map;
9 import java.util.Set;
10
11 import javax.naming.NamingException;
12 import javax.naming.directory.Attributes;
13 import javax.naming.directory.BasicAttributes;
14 import javax.naming.directory.DirContext;
15
16 import junit.framework.TestCase;
17
18 import org.jellyfish.ManagerFactoryBase;
19 import org.jellyfish.ManagerFactoryMock;
20
21 public class FileSystemDirectoryContextDefaultTest extends TestCase {
22
23 private ManagerFactoryMock managerFactoryMock;
24 private FileSystemDirectoryContext fileSystemDirectoryContext;
25 private String name;
26
27 public FileSystemDirectoryContextDefaultTest(String arg0) {
28 super(arg0);
29 }
30
31 protected void setUp() throws Exception {
32 managerFactoryMock = new ManagerFactoryMock();
33 ManagerFactoryBase.setInstance(managerFactoryMock);
34 fileSystemDirectoryContext = createFileSystemDirectoryContextDefault();
35 fileSystemDirectoryContext.setProviderUrl("file:///tmp/jndi");
36 name = "cn=user1,ou=people,dc=jellyfish,dc=org";
37 managerFactoryMock.createEntryFileHandlerReturn.loadPropertiesReturn = createProperties();
38 }
39
40 private FileSystemDirectoryContext createFileSystemDirectoryContextDefault() {
41 return new FileSystemDirectoryContextDefault() {
42 protected void createNewFile(String name) throws IOException {
43 }
44 };
45 }
46
47 private Map createProperties() {
48 Map properties = new HashMap();
49 properties.put("cn", createOneElementSet("bob"));
50 properties.put("sn", createOneElementSet("smith"));
51 return properties;
52 }
53
54 private Set createOneElementSet(Object element) {
55 Set set = new HashSet();
56 set.add(element);
57 return set;
58 }
59
60 private Attributes createAttributes() {
61 Attributes attributes = new BasicAttributes();
62 attributes.put("cn", "bob");
63 attributes.put("sn", "smith");
64 return attributes;
65 }
66
67 public void testGetAttributes() throws NamingException {
68 Attributes attributes = fileSystemDirectoryContext.getAttributes(name);
69 assertEquals(
70 fileSystemDirectoryContext.getProviderUrl() + "/dc=org/dc=jellyfish/ou=people/cn=user1",
71 managerFactoryMock.createEntryFileHandlerReturn.loadPropertiesFile);
72 for (Iterator iterator =
73 managerFactoryMock
74 .createEntryFileHandlerReturn
75 .loadPropertiesReturn
76 .keySet()
77 .iterator();
78 iterator.hasNext();
79 ) {
80 String key = (String)iterator.next();
81 assertTrue(
82 (
83 (
84 Collection)managerFactoryMock
85 .createEntryFileHandlerReturn
86 .loadPropertiesReturn
87 .get(
88 key)).contains(
89 attributes.get(key).get()));
90 }
91 }
92
93 public void testModifyAttributes() throws NamingException {
94 fileSystemDirectoryContext.modifyAttributes(
95 name,
96 DirContext.REPLACE_ATTRIBUTE,
97 createAttributes());
98 assertTrue(managerFactoryMock.createEntryFileHandlerReturn.modifyPropertiesCalled);
99 assertEquals(
100 fileSystemDirectoryContext.getProviderUrl() + "/dc=org/dc=jellyfish/ou=people/cn=user1",
101 managerFactoryMock.createEntryFileHandlerReturn.modifyPropertiesFile);
102 assertTrue(
103 (
104 (
105 Collection)managerFactoryMock
106 .createEntryFileHandlerReturn
107 .modifyPropertiesProperties
108 .get(
109 "cn")).contains(
110 "bob"));
111 assertTrue(
112 (
113 (
114 Collection)managerFactoryMock
115 .createEntryFileHandlerReturn
116 .modifyPropertiesProperties
117 .get(
118 "sn")).contains(
119 "smith"));
120 }
121
122 public void testCreateSubcontext() throws NamingException {
123 fileSystemDirectoryContext.createSubcontext(name, createAttributes());
124 assertTrue(managerFactoryMock.createEntryFileHandlerReturn.modifyPropertiesCalled);
125 assertEquals(
126 fileSystemDirectoryContext.getProviderUrl() + "/dc=org/dc=jellyfish/ou=people/cn=user1",
127 managerFactoryMock.createEntryFileHandlerReturn.modifyPropertiesFile);
128 assertTrue(
129 (
130 (
131 Collection)managerFactoryMock
132 .createEntryFileHandlerReturn
133 .modifyPropertiesProperties
134 .get(
135 "cn")).contains(
136 "bob"));
137 assertTrue(
138 (
139 (
140 Collection)managerFactoryMock
141 .createEntryFileHandlerReturn
142 .modifyPropertiesProperties
143 .get(
144 "sn")).contains(
145 "smith"));
146 }
147
148 public void testDestroySubContext() throws NamingException {
149 fileSystemDirectoryContext.destroySubcontext(name);
150 assertTrue(managerFactoryMock.createEntryFileHandlerReturn.deletePropertiesCalled);
151 assertEquals(
152 fileSystemDirectoryContext.getProviderUrl() + "/dc=org/dc=jellyfish/ou=people/cn=user1",
153 managerFactoryMock.createEntryFileHandlerReturn.deletePropertiesFile);
154 }
155 }
This page was automatically generated by Maven