blob: b64809dc2323f25014f6df781a0f4a8c4f29d2a3 [file] [log] [blame]
/*
* Copyright 2005 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.pluto.descriptors.services.castor;
import junit.framework.TestCase;
import junit.framework.Assert;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.IOException;
import org.apache.pluto.descriptors.servlet.WebAppDD;
/**
*
*/
public class WebAppDescriptorServiceImplTest extends TestCase {
private StringBuffer xmlBegin = new StringBuffer();
private StringBuffer xmlEnd = new StringBuffer();
private StringBuffer icon = new StringBuffer();
private StringBuffer misc = new StringBuffer();
private StringBuffer ctxParams = new StringBuffer();
private StringBuffer sessionConfig = new StringBuffer();
private StringBuffer filters = new StringBuffer();
private StringBuffer listeners = new StringBuffer();
private StringBuffer servlets = new StringBuffer();
private StringBuffer filterMappings = new StringBuffer();
private StringBuffer servletMappings = new StringBuffer();
private StringBuffer mimeMappings = new StringBuffer();
private StringBuffer welcomeFiles = new StringBuffer();
private StringBuffer errorPage = new StringBuffer();
private StringBuffer taglib = new StringBuffer();
private StringBuffer resourceRef = new StringBuffer();
private StringBuffer securityConstraint = new StringBuffer();
private StringBuffer loginConfig = new StringBuffer();
private StringBuffer securityRole = new StringBuffer();
private StringBuffer envEntry = new StringBuffer();
private StringBuffer ejbRef = new StringBuffer();
WebAppDescriptorServiceImpl impl = new WebAppDescriptorServiceImpl();
public void setUp() {
xmlBegin.append("" +
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" +
"<web-app xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
" xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\"\n" +
" version=\"2.4\">\n" );
icon.append("" +
" <icon>\n" +
" <large-icon>/icon/large.gif</large-icon>\n" +
" <small-icon>/icon/small.gif</small-icon>\n" +
" </icon>\n" );
misc.append(""+
" <display-name>Test Web XML</display-name>\n" +
" <description>This is a test web.xml file.</description>\n" +
" <distributable/>\n" );
ctxParams.append(""+
" <context-param>\n" +
" <description>Test Parameter 1</description>\n" +
" <param-name>TestParam1</param-name>\n" +
" <param-value>TestParam1Value</param-value>\n" +
" </context-param>\n" +
" <context-param>\n" +
" <description>Test Parameter 2</description>\n" +
" <param-name>TestParam2</param-name>\n" +
" <param-value>TestParam2Value</param-value>\n" +
" </context-param>\n" );
filters.append(""+
" <filter>\n" +
" <icon>\n" +
" <large-icon>/icon/large.gif</large-icon>\n" +
" <small-icon>/icon/small.gif</small-icon>\n" +
" </icon>\n" +
" <description>Test Description</description>\n" +
" <display-name>TestName</display-name>\n" +
" <filter-class>org.apache.pluto.test.TestMe</filter-class>\n" +
" <filter-name>test</filter-name>\n" +
" <init-param>\n" +
" <param-name>Test</param-name>\n" +
" <param-value>true</param-value>\n" +
" </init-param>\n" +
" <init-param>\n" +
" <param-name>Test2</param-name>\n" +
" <param-value>true</param-value>\n" +
" </init-param>\n" +
" </filter>\n" );
listeners.append("" +
" <listener>\n" +
" <listener-class>org.apache.pluto.test.TestListener</listener-class>\n" +
" </listener>\n" +
" <listener>\n" +
" <listener-class>org.apache.pluto.test.AnotherListener</listener-class>\n" +
" </listener>\n" );
servlets.append(""+
" <servlet>\n" +
" <servlet-name>default</servlet-name>\n" +
" <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>\n" +
" <init-param>\n" +
" <param-name>debug</param-name>\n" +
" <param-value>0</param-value>\n" +
" </init-param>\n" +
" <init-param>\n" +
" <param-name>listings</param-name>\n" +
" <param-value>true</param-value>\n" +
" </init-param>\n" +
" <load-on-startup>1</load-on-startup>\n" +
" </servlet>\n" +
" <servlet>\n" +
" <servlet-name>jsp</servlet-name>\n" +
" <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>\n" +
" <init-param>\n" +
" <param-name>fork</param-name>\n" +
" <param-value>false</param-value>\n" +
" </init-param>\n" +
" <init-param>\n" +
" <param-name>xpoweredBy</param-name>\n" +
" <param-value>false</param-value>\n" +
" </init-param>\n" +
" <load-on-startup>3</load-on-startup>\n" +
" <security-role-ref>\n" +
" <role-name>plutoTestRole</role-name>\n" +
" <role-link>tomcat</role-link>\n" +
" </security-role-ref>\n" +
" </servlet>\n" );
filterMappings.append(""+
" <filter-mapping>\n" +
" <filter-name>test</filter-name>\n" +
" <url-pattern>/test/*</url-pattern>\n" +
" <url-pattern>/some/*</url-pattern>\n" +
" <dispatcher>INCLUDE</dispatcher>\n" +
" <dispatcher>FORWARD</dispatcher>\n" +
" </filter-mapping>\n" +
" <filter-mapping>\n" +
" <filter-name>test</filter-name>\n" +
" <servlet-name>jsp</servlet-name>\n" +
" <dispatcher>INCLUDE</dispatcher>\n" +
" </filter-mapping>\n" );
servletMappings.append(""+
" <servlet-mapping>\n" +
" <servlet-name>default</servlet-name>\n" +
" <url-pattern>/</url-pattern>\n" +
" </servlet-mapping>\n" +
" <servlet-mapping>\n" +
" <servlet-name>jsp</servlet-name>\n" +
" <url-pattern>*.jsp</url-pattern>\n" +
" </servlet-mapping>\n" +
" <servlet-mapping>\n" +
" <servlet-name>jsp</servlet-name>\n" +
" <url-pattern>*.jspx</url-pattern>\n" +
" </servlet-mapping>\n" );
sessionConfig.append(""+
" <session-config>\n" +
" <session-timeout>30</session-timeout>\n" +
" </session-config>\n" );
mimeMappings.append("" +
" <mime-mapping>\n" +
" <extension>abs</extension>\n" +
" <mime-type>audio/x-mpeg</mime-type>\n" +
" </mime-mapping>\n" +
" <mime-mapping>\n" +
" <extension>ai</extension>\n" +
" <mime-type>application/postscript</mime-type>\n" +
" </mime-mapping>\n" );
welcomeFiles.append(""+
" <welcome-file-list>\n" +
" <welcome-file>index.html</welcome-file>\n" +
" <welcome-file>index.htm</welcome-file>\n" +
" <welcome-file>index.jsp</welcome-file>\n" +
" </welcome-file-list>\n" );
this.errorPage.append(""+
" <error-page>\n" +
" <error-code>400</error-code>\n" +
" <location>/400.html</location>\n" +
" </error-page>\n" +
" <error-page>\n" +
" <exception-type>java.io.IOException</exception-type>\n" +
" <location>/error/io.html</location>\n" +
" </error-page>\n" );
this.taglib.append(""+
" <taglib>\n" +
" <taglib-location>/WEB-INF/test.tld</taglib-location>\n" +
" <taglib-uri>test</taglib-uri>\n" +
" </taglib>\n" );
this.resourceRef.append(""+
" <resource-ref>\n" +
" <description>Test Resource</description>\n" +
" <res-auth>CONTIANER</res-auth>\n" +
" <res-ref-name>RefName</res-ref-name>\n" +
" <res-sharing-scope>Scope</res-sharing-scope>\n" +
" <res-type>java.lang.String</res-type>\n" +
" </resource-ref>\n" +
" <resource-ref>\n" +
" <description>Test Resource</description>\n" +
" <res-auth>CONTIANER</res-auth>\n" +
" <res-ref-name>RefName2</res-ref-name>\n" +
" <res-sharing-scope>Scope</res-sharing-scope>\n" +
" <res-type>java.lang.String</res-type>\n" +
" </resource-ref>\n" );
this.securityConstraint.append(""+
" <security-constraint>\n" +
" <auth-constraint>\n" +
" <description>Test Role</description>\n" +
" <role-name>TestRole</role-name>\n" +
" </auth-constraint>\n" +
" <display-name>Test Constraint</display-name>\n" +
" <user-data-constraint>\n" +
" <description>CONFIDENTIAL</description>\n" +
" <transport-guarantee>CONFIDENTIAL</transport-guarantee>\n" +
" </user-data-constraint>\n" +
" <web-resource-collection>\n" +
" <description>TestCollection</description>\n" +
" <http-method>GET</http-method>\n" +
" <http-method>POST</http-method>\n" +
" <url-pattern>/test/*</url-pattern>\n" +
" <url-pattern>/secure/*</url-pattern>\n" +
" <web-resource-name>secured</web-resource-name>\n" +
" </web-resource-collection>\n" +
" </security-constraint>\n" );
this.loginConfig.append(""+
" <login-config>\n" +
" <auth-method>FORM</auth-method>\n" +
" <form-login-config>\n" +
" <form-login-page>/login.jsp</form-login-page>\n" +
" <form-error-page>/login.jsp?error=true</form-error-page>\n" +
" </form-login-config>\n" +
" <realm-name>BASIC</realm-name>\n" +
" </login-config>\n" );
this.securityRole.append(""+
" <security-role>\n" +
" <description>A Test Role</description>\n" +
" <role-name>TestRole</role-name>\n" +
" </security-role>\n" +
" <security-role>\n" +
" <description>Another Role</description>\n" +
" <role-name>AnotherRole</role-name>\n" +
" </security-role>\n" );
this.envEntry.append(""+
" <env-entry>\n" +
" <description>Test Environment Entry</description>\n" +
" <env-entry-name>Test</env-entry-name>\n" +
" <env-entry-type>java.lang.String</env-entry-type>\n" +
" <env-entry-value>TestValue</env-entry-value>\n" +
" </env-entry>\n" +
" <env-entry>\n" +
" <description>Another Environment Entry</description>\n" +
" <env-entry-name>Another</env-entry-name>\n" +
" <env-entry-type>java.lang.String</env-entry-type>\n" +
" <env-entry-value>AnotherValue</env-entry-value>\n" +
" </env-entry>\n" );
this.ejbRef.append(""+
" <ejb-ref>\n" +
" <description>Test EJB</description>\n" +
" <ejb-link>test</ejb-link>\n" +
" <home>testHomeInterface</home>\n" +
" <remote>testRemoteInterface</remote>\n" +
" <ejb-ref-name>test</ejb-ref-name>\n" +
" <ejb-ref-type>org.apache.pluto.test.ejb.TestEJB</ejb-ref-type>\n" +
" </ejb-ref>\n" );
this.xmlEnd.append("</web-app>");
}
public void tearDown() {
}
public void testReadFullDescriptor()
throws IOException {
StringBuffer xml = new StringBuffer()
.append(xmlBegin).append(icon).append(misc)
.append(ctxParams).append(sessionConfig).append(filters)
.append(listeners).append(servlets).append(filterMappings)
.append(servletMappings).append(mimeMappings).append(welcomeFiles)
.append(errorPage).append(taglib).append(resourceRef)
.append(securityConstraint).append(loginConfig)
.append(securityRole).append(envEntry).append(ejbRef)
.append(xmlEnd);
InputStream in = new ByteArrayInputStream(xml.toString().getBytes());
WebAppDD dd = impl.read(in);
Assert.assertEquals("DisplayName not as expected", "Test Web XML", dd.getDisplayName());
Assert.assertEquals("Description does not match", "This is a test web.xml file.", dd.getDescription());
//Assert.assertTrue("Distributable not set", dd.isDistributable());
assertEquals("Context Parameters not as expected", 2, dd.getContextParams().size());
assertEquals("Filters not as expected", 1, dd.getFilters().size());
assertEquals("Filter Mappings not as expected", 2, dd.getFilterMappings().size());
assertEquals("Listeners not as expected", 2, dd.getListeners().size());
assertEquals("Servlets not as expected", 2, dd.getServlets().size());
assertEquals("Servlet Mappings not as expected.", 3, dd.getServletMappings().size());
}
public void testReadNullDescriptor() throws IOException {
Assert.assertNull("Null descriptor did not return null", impl.read(null));
}
public void testReadPartialDescriptor() {
}
public void testReadOutOfOrderDescriptor() {
}
}