KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > james > mailboxmanager > impl > VirtualMailboxManagerFactoryTest


1 /****************************************************************
2  * Licensed to the Apache Software Foundation (ASF) under one *
3  * or more contributor license agreements. See the NOTICE file *
4  * distributed with this work for additional information *
5  * regarding copyright ownership. The ASF licenses this file *
6  * to you under the Apache License, Version 2.0 (the *
7  * "License"); you may not use this file except in compliance *
8  * with the License. You may obtain a copy of the License at *
9  * *
10  * http://www.apache.org/licenses/LICENSE-2.0 *
11  * *
12  * Unless required by applicable law or agreed to in writing, *
13  * software distributed under the License is distributed on an *
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15  * KIND, either express or implied. See the License for the *
16  * specific language governing permissions and limitations *
17  * under the License. *
18  ****************************************************************/

19
20 package org.apache.james.mailboxmanager.impl;
21
22 import java.io.IOException JavaDoc;
23 import java.util.ArrayList JavaDoc;
24 import java.util.Arrays JavaDoc;
25 import java.util.HashSet JavaDoc;
26 import java.util.List JavaDoc;
27 import java.util.Map JavaDoc;
28 import java.util.Set JavaDoc;
29
30 import org.apache.avalon.cornerstone.services.store.Store;
31 import org.apache.avalon.framework.configuration.Configuration;
32 import org.apache.avalon.framework.configuration.ConfigurationException;
33 import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
34 import org.apache.avalon.framework.service.ServiceManager;
35 import org.apache.james.mailboxmanager.mailstore.MailStoreMailboxManagerFactory;
36 import org.apache.james.mailboxmanager.manager.MailboxManagerFactory;
37 import org.apache.james.mailboxmanager.mock.MockMailboxManagerFactory;
38 import org.apache.james.mailboxmanager.torque.TorqueMailboxManagerFactory;
39 import org.apache.james.services.FileSystem;
40 import org.apache.james.test.mock.avalon.MockLogger;
41 import org.apache.james.test.mock.james.MockFileSystem;
42 import org.jmock.Mock;
43 import org.jmock.MockObjectTestCase;
44 import org.xml.sax.SAXException JavaDoc;
45
46 public class VirtualMailboxManagerFactoryTest extends MockObjectTestCase {
47
48     VirtualMailboxManagerFactory virtualMailboxManagerFactory;
49
50     public void setUp() {
51         virtualMailboxManagerFactory = new VirtualMailboxManagerFactory();
52     }
53
54     public void testReadConf() throws ConfigurationException, SAXException JavaDoc,
55             IOException JavaDoc {
56         Configuration confFile = new DefaultConfigurationBuilder()
57                 .buildFromFile("src/conf/james-config.xml");
58         Configuration conf = confFile.getChild("mailboxmanager", false).getChild("factory",false);
59         VirtualMailboxManagerFactory vmm = new VirtualMailboxManagerFactory();
60         vmm.enableLogging(new MockLogger());
61         vmm.configure(conf);
62     }
63
64     public void testVirtualRepositoryMix() throws Exception JavaDoc {
65         Configuration confFile = new DefaultConfigurationBuilder()
66                 .build(getClass()
67                         .getResourceAsStream(
68                                 "/org/apache/james/mailboxmanager/testdata/VirtualRepositoryMix.xml"));
69         Configuration conf = confFile.getChild("mailboxmanager", false).getChild("factory",false);
70
71
72
73         VirtualMailboxManagerFactory virtualMailboxManagerFactory = new VirtualMailboxManagerFactory();
74         virtualMailboxManagerFactory.enableLogging(new MockLogger());
75         virtualMailboxManagerFactory.configure(conf);
76         virtualMailboxManagerFactory.service(getMockService());
77 // virtualMailboxManagerFactory.initialize();
78

79         String JavaDoc[] expected = { "#system", "#user1", "#user2", "#user3", "#mail",
80                 "#user" };
81         List JavaDoc resultList = new ArrayList JavaDoc(virtualMailboxManagerFactory
82                 .getMountMap().keySet());
83         List JavaDoc expectedList = Arrays.asList(expected);
84         assertEquals(expectedList, resultList);
85
86         MailboxManagerFactory[] factories = new MailboxManagerFactory[expected.length];
87         for (int i = 0; i < factories.length; i++) {
88             factories[i] = (MailboxManagerFactory) virtualMailboxManagerFactory
89                     .getMountMap().get(expected[i]);
90         }
91
92         assertSame(factories[1], factories[5]);
93         assertSame(factories[2], factories[3]);
94         assertNotSame(factories[1], factories[2]);
95         assertNotSame(factories[1], factories[0]);
96         assertNotSame(factories[0], factories[4]);
97
98         MockMailboxManagerFactory mockFactory1 = (MockMailboxManagerFactory) factories[1];
99         MockMailboxManagerFactory mockFactory2 = (MockMailboxManagerFactory) factories[2];
100
101         Configuration[] mounts = conf.getChild(
102                 "mounts", false).getChildren("mount");
103
104         assertEquals(mounts[0].getChild("target", false),
105                 mockFactory1.configuration);
106         assertEquals(mounts[1].getChild("target", false),
107                 mockFactory2.configuration);
108
109 // assertEquals(1, mockFactory1.init);
110
// assertEquals(1, mockFactory2.init);
111

112         assertTrue(factories[0] instanceof MailStoreMailboxManagerFactory);
113         assertTrue(factories[4] instanceof TorqueMailboxManagerFactory);
114
115     }
116     
117     
118     public void testVirtualRepositoryMixWithInit() throws Exception JavaDoc {
119         Configuration confFile = new DefaultConfigurationBuilder()
120                 .build(getClass()
121                         .getResourceAsStream(
122                                 "/org/apache/james/mailboxmanager/testdata/VirtualRepositoryMix.xml"));
123         Configuration conf = confFile.getChild("mailboxmanager-without-torque", false).getChild("factory",false);
124
125
126         VirtualMailboxManagerFactory virtualMailboxManagerFactory = new VirtualMailboxManagerFactory();
127         virtualMailboxManagerFactory.enableLogging(new MockLogger());
128         virtualMailboxManagerFactory.configure(conf);
129         virtualMailboxManagerFactory.service(getMockService());
130         virtualMailboxManagerFactory.initialize();
131
132         String JavaDoc[] expected = { "#system", "#user1", "#user2", "#user3", "#mail",
133                 "#user" };
134         List JavaDoc resultList = new ArrayList JavaDoc(virtualMailboxManagerFactory
135                 .getMountMap().keySet());
136         List JavaDoc expectedList = Arrays.asList(expected);
137         assertEquals(expectedList, resultList);
138
139         MailboxManagerFactory[] factories = new MailboxManagerFactory[expected.length];
140         for (int i = 0; i < factories.length; i++) {
141             factories[i] = (MailboxManagerFactory) virtualMailboxManagerFactory
142                     .getMountMap().get(expected[i]);
143         }
144
145         assertSame(factories[1], factories[5]);
146         assertSame(factories[2], factories[3]);
147         assertNotSame(factories[1], factories[2]);
148         assertNotSame(factories[1], factories[0]);
149         assertNotSame(factories[0], factories[4]);
150
151         MockMailboxManagerFactory mockFactory1 = (MockMailboxManagerFactory) factories[1];
152         MockMailboxManagerFactory mockFactory2 = (MockMailboxManagerFactory) factories[2];
153         MockMailboxManagerFactory mockFactory4 = (MockMailboxManagerFactory) factories[4];
154
155         Configuration[] mounts = conf.getChild(
156                 "mounts", false).getChildren("mount");
157
158         assertEquals(mounts[0].getChild("target", false),
159                 mockFactory1.configuration);
160         assertEquals(mounts[1].getChild("target", false),
161                 mockFactory2.configuration);
162         assertEquals(mounts[3].getChild("target", false),
163                 mockFactory4.configuration);
164
165         assertEquals(1, mockFactory1.init);
166         assertEquals(1, mockFactory2.init);
167         assertEquals(1, mockFactory4.init);
168
169         assertTrue(factories[0] instanceof MailStoreMailboxManagerFactory);
170         
171
172     }
173     
174
175     public void testMountMap() {
176         Map JavaDoc mountMap = virtualMailboxManagerFactory.getMountMap();
177         String JavaDoc[] expected = { "xaaa", "xaab", "zaa", "b", "c" };
178         mountMap.put("c", "x");
179         mountMap.put("xaaa", "x");
180         mountMap.put("xaab", "x");
181         mountMap.put("zaa", "x");
182         mountMap.put("b", "x");
183         List JavaDoc resultList = new ArrayList JavaDoc(mountMap.keySet());
184         List JavaDoc expectedList = Arrays.asList(expected);
185         assertEquals(expectedList, resultList);
186     }
187
188     protected static Set JavaDoc toSet(Object JavaDoc[] o) {
189         return new HashSet JavaDoc(Arrays.asList(o));
190     }
191     
192     protected ServiceManager getMockService() {
193         Mock mockService = mock(ServiceManager.class);
194         mockService.expects(atMostOnce()).method("lookup").with(eq(FileSystem.ROLE))
195                 .will(returnValue(new MockFileSystem()));
196         mockService.expects(atMostOnce()).method("lookup").with(eq(Store.ROLE)).will(
197                 returnValue(null));
198         return (ServiceManager) mockService.proxy();
199     }
200
201 }
202
Popular Tags