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
21 package org.apache.james;
22
23 import org.apache.avalon.cornerstone.services.store.Store;
24 import org.apache.james.services.MailServer;
25 import org.apache.james.services.MailServerTestAllImplementations;
26 import org.apache.james.services.UsersRepository;
27 import org.apache.james.services.UsersStore;
28 import org.apache.james.test.mock.avalon.MockContext;
29 import org.apache.james.test.mock.avalon.MockLogger;
30 import org.apache.james.test.mock.avalon.MockServiceManager;
31 import org.apache.james.test.mock.avalon.MockStore;
32 import org.apache.james.test.mock.james.MockUsersStore;
33 import org.apache.james.test.mock.james.MockMailRepository;
34 import org.apache.james.userrepository.MockUsersRepository;
35
36 import java.io.File;
37
38 public class JamesTest extends MailServerTestAllImplementations {
39
40 public MailServer createMailServer() {
41 James james = new James();
42 james.service(setUpServiceManager());
43 MockLogger mockLogger = new MockLogger();
44 mockLogger.disableDebug();
45 james.enableLogging(mockLogger);
46 try {
47 JamesTestConfiguration conf = new JamesTestConfiguration();
48 conf.init();
49 james.configure(conf);
50 james.contextualize(new MockContext(File.createTempFile("james_test", "tmp")));
51 james.initialize();
52 } catch (Exception e) {
53 e.printStackTrace();
54 fail("James.initialize() failed");
55 }
56 return james;
57 }
58
59 private MockServiceManager setUpServiceManager() {
60 MockServiceManager serviceManager = new MockServiceManager();
61 MockUsersRepository mockUsersRepository = new MockUsersRepository();
62 serviceManager.put(UsersRepository.ROLE, mockUsersRepository);
63 serviceManager.put(UsersStore.ROLE, new MockUsersStore(mockUsersRepository));
64 MockStore mockStore = new MockStore();
65 mockStore.add(EXISTING_USER_NAME, new MockMailRepository());
66 serviceManager.put(Store.ROLE, mockStore);
67 return serviceManager;
68 }
69
70 public boolean allowsPasswordlessUser() {
71 return false;
72 }
73
74 public boolean canTestUserExists() {
75 return true;
76 }
77
78 public boolean isUserExisting(MailServer mailServerImpl, String username) {
79 return ((James)mailServerImpl).isLocalUser(username);
80 }
81 }