KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > tomcat > AbstractWebModuleTest


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

17 package org.apache.geronimo.tomcat;
18
19 import java.io.File JavaDoc;
20 import java.net.URI JavaDoc;
21 import java.net.URL JavaDoc;
22 import java.util.Collections JavaDoc;
23 import java.util.HashMap JavaDoc;
24 import java.util.Map JavaDoc;
25 import java.util.Properties JavaDoc;
26
27 import javax.transaction.TransactionManager JavaDoc;
28
29 import org.apache.geronimo.testsupport.TestSupport;
30
31 import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrackingCoordinator;
32 import org.apache.geronimo.connector.outbound.connectiontracking.GeronimoTransactionListener;
33 import org.apache.geronimo.security.SecurityServiceImpl;
34 import org.apache.geronimo.security.deploy.PrincipalInfo;
35 import org.apache.geronimo.security.jaas.GeronimoLoginConfiguration;
36 import org.apache.geronimo.security.jaas.JaasLoginModuleUse;
37 import org.apache.geronimo.security.jaas.LoginModuleGBean;
38 import org.apache.geronimo.security.jaas.server.JaasLoginService;
39 import org.apache.geronimo.security.jacc.ApplicationPolicyConfigurationManager;
40 import org.apache.geronimo.security.jacc.ApplicationPrincipalRoleConfigurationManager;
41 import org.apache.geronimo.security.jacc.ComponentPermissions;
42 import org.apache.geronimo.security.jacc.PrincipalRoleMapper;
43 import org.apache.geronimo.security.realm.GenericSecurityRealm;
44 import org.apache.geronimo.system.serverinfo.BasicServerInfo;
45 import org.apache.geronimo.system.serverinfo.ServerInfo;
46 import org.apache.geronimo.tomcat.util.SecurityHolder;
47 import org.apache.geronimo.transaction.manager.TransactionManagerImpl;
48
49
50 /**
51  * @version $Rev: 483201 $ $Date: 2006-12-06 14:52:09 -0500 (Wed, 06 Dec 2006) $
52  */

53 public abstract class AbstractWebModuleTest extends TestSupport {
54     
55     protected ClassLoader JavaDoc cl;
56     protected final static String JavaDoc securityRealmName = "demo-properties-realm";
57     private ConnectorGBean connector;
58     protected TomcatContainer container;
59     private TransactionManager JavaDoc transactionManager;
60     private ConnectionTrackingCoordinator connectionTrackingCoordinator;
61
62     protected static final String JavaDoc POLICY_CONTEXT_ID = "securetest";
63     private GeronimoLoginConfiguration loginConfiguration;
64
65     protected TomcatWebAppContext setUpInsecureAppContext(URI JavaDoc relativeWebAppRoot, URL JavaDoc configurationBaseURL, SecurityHolder securityHolder, ObjectRetriever tomcatRealm, ValveGBean valveChain) throws Exception JavaDoc {
66
67         TomcatWebAppContext app = new TomcatWebAppContext(cl,
68                 null,
69                 null,
70                 new URL JavaDoc(configurationBaseURL, relativeWebAppRoot.getPath()),
71                 securityHolder,
72                 null,
73                 Collections.EMPTY_MAP,
74                 null,
75                 null,
76                 transactionManager,
77                 connectionTrackingCoordinator,
78                 container,
79                 tomcatRealm,
80                 valveChain,
81                 null,
82                 false,
83                 false,
84                 null,
85                 null,
86                 null,
87                 null);
88         app.setContextPath("/test");
89         app.doStart();
90         return app;
91     }
92
93     protected TomcatWebAppContext setUpSecureAppContext(Map JavaDoc roleDesignates, Map JavaDoc principalRoleMap, ComponentPermissions componentPermissions, RealmGBean realm, SecurityHolder securityHolder) throws Exception JavaDoc {
94         PrincipalRoleMapper roleMapper = new ApplicationPrincipalRoleConfigurationManager(principalRoleMap);
95         Map JavaDoc contextIDToPermissionsMap = new HashMap JavaDoc();
96         contextIDToPermissionsMap.put(POLICY_CONTEXT_ID, componentPermissions);
97         ApplicationPolicyConfigurationManager jacc = new ApplicationPolicyConfigurationManager(contextIDToPermissionsMap, roleDesignates, cl, roleMapper);
98         jacc.doStart();
99
100         URL JavaDoc configurationBaseURL = new File JavaDoc(BASEDIR, "target/var/catalina/webapps/war3/WEB-INF/web.xml").toURL();
101         return setUpInsecureAppContext(new File JavaDoc(BASEDIR, "target/var/catalina/webapps/war3/").toURI(),
102                 configurationBaseURL,
103                 securityHolder,
104                 realm,
105                 null);
106     }
107
108     protected void setUpSecurity() throws Exception JavaDoc {
109         String JavaDoc domainName = "demo-properties-realm";
110
111         ServerInfo serverInfo = new BasicServerInfo(".");
112
113         new SecurityServiceImpl(cl, serverInfo, "org.apache.geronimo.security.jacc.GeronimoPolicyConfigurationFactory", "org.apache.geronimo.security.jacc.GeronimoPolicy", null, null, null, null);
114
115         Properties JavaDoc options = new Properties JavaDoc();
116         options.setProperty("usersURI", new File JavaDoc(BASEDIR, "src/test/resources/data/users.properties").toURI().toString());
117         options.setProperty("groupsURI", new File JavaDoc(BASEDIR, "src/test/resources/data/groups.properties").toURI().toString());
118
119         LoginModuleGBean loginModule = new LoginModuleGBean("org.apache.geronimo.security.realm.providers.PropertiesFileLoginModule", null, true, true, cl);
120         loginModule.setLoginDomainName(domainName);
121         loginModule.setOptions(options);
122
123         JaasLoginModuleUse loginModuleUse = new JaasLoginModuleUse(loginModule, null, "REQUIRED", null);
124
125         JaasLoginService loginService = new JaasLoginService("HmacSHA1", "secret", cl, null);
126
127         PrincipalInfo.PrincipalEditor principalEditor = new PrincipalInfo.PrincipalEditor();
128         principalEditor.setAsText("metro,org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal,false");
129         GenericSecurityRealm realm = new GenericSecurityRealm(domainName, loginModuleUse, true, true, (PrincipalInfo) principalEditor.getValue(), serverInfo, cl, null, loginService);
130
131         loginService.setRealms(Collections.singleton(realm));
132         loginService.doStart();
133
134         loginConfiguration = new GeronimoLoginConfiguration();
135         loginConfiguration.setConfigurations(Collections.singleton(realm));
136         loginConfiguration.doStart();
137
138     }
139
140     protected void tearDownSecurity() throws Exception JavaDoc {
141         loginConfiguration.doStop();
142     }
143
144     protected void init(String JavaDoc realmClass) throws Exception JavaDoc {
145         cl = this.getClass().getClassLoader();
146
147         RealmGBean realm = null;
148         if (realmClass != null) {
149             Map JavaDoc initParams = new HashMap JavaDoc();
150             initParams.put("userClassNames", "org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
151             initParams.put("roleClassNames", "org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal");
152             realm = new RealmGBean(realmClass, initParams);
153             realm.doStart();
154         }
155
156         //Default Host
157
Map JavaDoc initParams = new HashMap JavaDoc();
158         initParams.put("workDir", "work");
159         initParams.put("name", "localhost");
160         initParams.put("appBase", "");
161
162         HostGBean host = new HostGBean("org.apache.catalina.core.StandardHost", initParams, null, realm, null, null);
163         //Default Engine
164
initParams = Collections.singletonMap("name", "Geronimo");
165
166         EngineGBean engine = new EngineGBean("org.apache.geronimo.tomcat.TomcatEngine",
167                 initParams,
168                 host,
169                 Collections.singleton(host),
170                 realm,
171                 null,
172                 null);
173         engine.doStart();
174
175         ServerInfo serverInfo = new BasicServerInfo(".");
176         container = new TomcatContainer(cl, new File JavaDoc(BASEDIR, "target/var/catalina").toString(), engine, serverInfo, null, null);
177         container.doStart();
178
179         connector = new ConnectorGBean("HTTP", null, "localhost", 8181, container);
180         connector.doStart();
181
182         TransactionManagerImpl transactionManager = new TransactionManagerImpl();
183         this.transactionManager = transactionManager;
184         connectionTrackingCoordinator = new ConnectionTrackingCoordinator();
185         transactionManager.addTransactionAssociationListener(new GeronimoTransactionListener(connectionTrackingCoordinator));
186     }
187
188     protected void tearDown() throws Exception JavaDoc {
189         connector.doStop();
190         super.tearDown();
191     }
192 }
193
Popular Tags