craigmcc    01/06/01 09:58:25

  Modified:    catalina/src/test/org/apache/naming/resources
                        BaseDirContextTestCase.java
                        FileDirContextTestCase.java
                        WARDirContextTestCase.java
  Log:
  Some initial JUnit tests for FileDirContext and WARDirContext.  These
  tests verify that the DirContext implementations faithfully represent
  several important aspects of a "well known" web application directory
  (i.e. the "examples" app).
  
  To execute the unit tests, run "ant test" from either the top-level
  directory or the "catalina" directory.  (You must have a "junit.jar"
  property in your build.properties file pointing at your JUnit JAR file).
  
  Revision  Changes    Path
  1.2       +447 -7    
jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/BaseDirContextTestCase.java
  
  Index: BaseDirContextTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/BaseDirContextTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BaseDirContextTestCase.java       2001/06/01 00:30:27     1.1
  +++ BaseDirContextTestCase.java       2001/06/01 16:58:21     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/BaseDirContextTestCase.java,v
 1.1 2001/06/01 00:30:27 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/06/01 00:30:27 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/BaseDirContextTestCase.java,v
 1.2 2001/06/01 16:58:21 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/06/01 16:58:21 $
    *
    * ====================================================================
    *
  @@ -64,19 +64,48 @@
   
   package org.apache.naming.resources;
   
  +import java.util.Date;
  +
  +import javax.naming.Binding;
  +import javax.naming.NameClassPair;
  +import javax.naming.NamingEnumeration;
  +import javax.naming.NamingException;
  +
  +import javax.naming.directory.Attribute;
  +import javax.naming.directory.Attributes;
   import javax.naming.directory.DirContext;
  +
   import junit.framework.Test;
   import junit.framework.TestCase;
   import junit.framework.TestSuite;
   
   
   /**
  - * Basic unit tests for the <code>javax.naming.directory.DirContext</code>
  + * <p>Basic unit tests for the <code>javax.naming.directory.DirContext</code>
    * implementations.  This class must be subclassed for each individual
  - * <code>DirContext</code> implementation.
  + * <code>DirContext</code> implementation.</p>
    *
  + * <p><strong>WARNING</strong>:  These tests make certain assumptions that
  + * can generate "false negative" results if they are violated:</p>
  + * <ul>
  + * <li>The pathname of a directory (or WAR file) containing the static
  + *     resources of the <code>/examples</code> web application shipped
  + *     with Tomcat is passed to our test class as a system property
  + *     named <code>doc.base</code>.</li>
  + * <li>The entry names that can be found in the top-level DirContext of
  + *     the static resources are enumerated in the <code>topLevelNames</code>
  + *     variable.</li>
  + * <li>The entry names that can be found in the WEB-INF DirContext of
  + *     the static resources are enumerated in the <code>webInfNames</code>
  + *     variable.</li>
  + * <li>The entry names in either the top-level or WEB-INF DirContext contexts
  + *     that should themselves be <code>DirContext</code> implementations (i.e.
  + *     "subdirectories" in the static resources for this web application)
  + *     are enumerated in the <code>dirContextNames</code> variable.</li>
  + * </ul>
  + *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2001/06/01 00:30:27 $
  + * @version $Revision: 1.2 $ $Date: 2001/06/01 16:58:21 $
    */
   
   public abstract class BaseDirContextTestCase extends TestCase {
  @@ -97,6 +126,45 @@
       protected String docBase = System.getProperty("doc.base");
   
   
  +    /**
  +     * Entry names that must be DirContexts.  Names not on this list are
  +     * assumed to be Resources.
  +     */
  +    protected static final String dirContextNames[] =
  +    { "classes", "images", "jsp", "lib", "META-INF", "WEB-INF" };
  +
  +
  +    /**
  +     * The set of names that should be present in the top-level
  +     * directory context.
  +     */
  +    protected static final String topLevelNames[] =
  +    { "images", "jsp", "servlets", "META-INF", "WEB-INF" };
  +
  +
  +    /**
  +     * The set of names that should be present in the WEB-INF
  +     * directory context.
  +     */
  +    protected static final String webInfNames[] =
  +    { "classes", "jsp", "lib", "web.xml" };
  +
  +
  +    /**
  +     * The set of names that should be attributes of WEB-INF.
  +     */
  +    protected static final String webInfAttrs[] =
  +    { "creationdate", "displayname", "getcontentlength", "getlastmodified" };
  +
  +
  +    /**
  +     * The set of names that should be attributes of WEB-INF/web.xml.
  +     */
  +    protected static final String webXmlAttrs[] =
  +    { "creationdate", "displayname", "getcontentlength", "getlastmodified",
  +      "resourcetype" };
  +
  +
       // ----------------------------------------------------------- Constructors
   
   
  @@ -139,10 +207,382 @@
       // ------------------------------------------------ Individual Test Methods
   
   
  -    public void testDummy() { ; }
  +    /**
  +     * Test the attributes returned for the <code>WEB-INF</code> entry.
  +     */
  +    public abstract void testGetAttributesWebInf();
   
   
  -}
  +    /**
  +     * Test the attributes returned for the <code>WEB-INF/web.xml</code>
  +     * entry.
  +     */
  +    public abstract void testGetAttributesWebXml();
  +
  +
  +    /**
  +     * We should be able to list the contents of the top-level context itself,
  +     * and locate some entries we know are there.
  +     */
  +    public void testListTopLevel() {
  +
  +        try {
  +            checkList(context.list(""), topLevelNames);
  +        } catch (NamingException e) {
  +            fail("NamingException: " + e);
  +        }
  +
  +    }
  +
  +
  +    /**
  +     * We should be able to list the contents of the WEB-INF entry,
  +     * and locate some entries we know are there.
  +     */
  +    public void testListWebInfDirect() {
  +
  +        try {
  +
  +            // Look up the WEB-INF entry
  +            Object webInfEntry = context.lookup("WEB-INF");
  +            assertNotNull("Found WEB-INF entry", webInfEntry);
  +            assert("WEB-INF entry is a DirContext",
  +                   webInfEntry instanceof DirContext);
  +            DirContext webInfContext = (DirContext) webInfEntry;
  +
  +            // Check the contents of the WEB-INF context directly
  +            checkList(webInfContext.list(""), webInfNames);
  +
  +        } catch (NamingException e) {
  +            fail("NamingException: " + e);
  +        }
  +
  +
  +    }
  +
  +
  +    /**
  +     * We should be able to list the contents of the WEB-INF entry,
  +     * and locate some entries we know are there.
  +     */
  +    public void testListWebInfIndirect() {
  +
  +        try {
  +            checkList(context.list("WEB-INF"), webInfNames);
  +        } catch (NamingException e) {
  +            fail("NamingException: " + e);
  +        }
  +
  +    }
  +
  +
  +    /**
  +     * We should be able to list the bindings of the top-level context itself,
  +     * and locate some entries we know are there.
  +     */
  +    public void testListBindingsTopLevel() {
  +
  +        try {
  +            checkListBindings(context.listBindings(""), topLevelNames);
  +        } catch (NamingException e) {
  +            fail("NamingException: " + e);
  +        }
  +
  +    }
  +
  +
  +    /**
  +     * We should be able to list the bindings of the WEB-INF entry,
  +     * and locate some entries we know are there.
  +     */
  +    public void testListBindingsWebInfDirect() {
  +
  +        try {
  +
  +            // Look up the WEB-INF entry
  +            Object webInfEntry = context.lookup("WEB-INF");
  +            assertNotNull("Found WEB-INF entry", webInfEntry);
  +            assert("WEB-INF entry is a DirContext",
  +                   webInfEntry instanceof DirContext);
  +            DirContext webInfContext = (DirContext) webInfEntry;
  +
  +            // Check the bindings of the WEB-INF context directly
  +            checkListBindings(webInfContext.listBindings(""), webInfNames);
  +
  +        } catch (NamingException e) {
  +            fail("NamingException: " + e);
  +        }
  +
  +
  +    }
  +
  +
  +    /**
  +     * We should be able to list the bindings of the WEB-INF entry,
  +     * and locate some entries we know are there.
  +     */
  +    public void testListBindingsWebInfIndirect() {
   
  +        try {
  +            checkListBindings(context.listBindings("WEB-INF"), webInfNames);
  +        } catch (NamingException e) {
  +            fail("NamingException: " + e);
  +        }
   
  +    }
  +
  +
  +    // -------------------------------------------------------- Support Methods
  +
  +
  +    /**
  +     * Check the results of a list() call against the specified entry list.
  +     *
  +     * @param enum The naming enumeration we are checking
  +     * @param list The list of entry names we are expecting
  +     *
  +     * @exception NamingException if a naming exception occurs
  +     */
  +    protected void checkList(NamingEnumeration ne, String list[])
  +        throws NamingException {
  +
  +        String contextClassName = context.getClass().getName();
  +
  +        assertNotNull("NamingEnumeration is not null", ne);
  +        while (ne.hasMore()) {
  +
  +            Object next = ne.next();
  +            assert("list() returns NameClassPair instances",
  +                   next instanceof NameClassPair);
  +            NameClassPair ncp = (NameClassPair) next;
  +
  +            assert("Name '" + ncp.getName() + "' is expected",
  +                   isListed(ncp.getName(), list));
  +
  +            if (isDirContext(ncp.getName())) {
  +                assert("Class '" + ncp.getClassName() + "' is '" +
  +                       contextClassName + "'",
  +                       contextClassName.equals(ncp.getClassName()));
  +            }
  +
  +            assert("Relative is 'true'", ncp.isRelative());
  +
  +        }
  +
  +    }
  +
  +
  +    /**
  +     * Check the results of a listBindings() call against the
  +     * specified entry list.
  +     *
  +     * @param enum The naming enumeration we are checking
  +     * @param list The list of entry names we are expecting
  +     *
  +     * @exception NamingException if a naming exception occurs
  +     */
  +    protected void checkListBindings(NamingEnumeration ne, String list[])
  +        throws NamingException {
  +
  +        String contextClassName = context.getClass().getName();
  +
  +        assertNotNull("NamingEnumeration is not null", ne);
  +        while (ne.hasMore()) {
  +
  +            Object next = ne.next();
  +            assert("listBindings() returns Binding instances",
  +                   next instanceof Binding);
  +            Binding b = (Binding) next;
  +
  +            assert("Name '" + b.getName() + "' is expected",
  +                   isListed(b.getName(), list));
  +
  +            if (isDirContext(b.getName())) {
  +                assert("Class '" + b.getClassName() + "' is '" +
  +                       contextClassName + "'",
  +                       contextClassName.equals(b.getClassName()));
  +            }
  +
  +            assert("Relative is 'true'", b.isRelative());
  +
  +            Object object = b.getObject();
  +            assertNotNull("Name '" + b.getName() + "' has a non-null object",
  +                          object);
  +            if (b.getName().equals("web.xml")) {
  +                assert("Entry '" + b.getName() + "' is a Resource",
  +                       object instanceof Resource);
  +            } else {
  +                assert("Entry '" + b.getName() + "' is a DirContext",
  +                       object instanceof DirContext);
  +            }
  +
  +        }
  +
  +    }
  +
  +
  +    /**
  +     * Check the attributes associated with a WEB-INF entry.
  +     *
  +     * @param attrs The attributes for this entry
  +     * @param creationDate The creation date for this entry
  +     * @param contentLength The content length for this entry
  +     * @param displayName The display name for this entry
  +     * @param lastModifiedDate The last modified date for this entry
  +     */
  +    protected void checkWebInfAttributes(Attributes attrs,
  +                                         Date creationDate,
  +                                         long contentLength,
  +                                         String displayName,
  +                                         Date lastModifiedDate)
  +        throws NamingException {
  +
  +        assertNotNull("getAttributes() returned non-null", attrs);
  +
  +        NamingEnumeration ne = attrs.getAll();
  +        assertNotNull("getAll() returned non-null", ne);
  +        while (ne.hasMore()) {
  +
  +            Object next = ne.next();
  +            assert("getAll() returns Attribute instances",
  +                   next instanceof Attribute);
  +            Attribute attr = (Attribute) next;
  +            String name = attr.getID();
  +            int index = getIndex(name, webInfAttrs);
  +            assert("WEB-INF attribute '" + name + "' is expected",
  +                   index >= 0);
  +            Object value = attr.get();
  +            assertNotNull("get() returned non-null", value);
  +
  +            if (name.equals("creationdate")) {
  +                assert("Creation date is a date",
  +                       value instanceof Date);
  +                assert("Creation date equals " + creationDate,
  +                       creationDate.equals((Date) value));
  +            } else if (name.equals("displayname")) {
  +                assert("Display name is a string",
  +                       value instanceof String);
  +                assert("Display name equals " + displayName,
  +                       displayName.equals((String) value));
  +            } else if (name.equals("getcontentlength")) {
  +                assert("Content length is a long",
  +                       value instanceof Long);
  +                assert("Content length equals " + contentLength,
  +                       contentLength == ((Long) value).longValue());
  +            } else if (name.equals("getlastmodified")) {
  +                assert("Last modified date is a date",
  +                       value instanceof Date);
  +                assert("Last modified date is " + lastModifiedDate,
  +                       lastModifiedDate.equals((Date) value));
  +            }
  +
  +        }
   
  +    }
  +
  +
  +    /**
  +     * Check the attributes associated with a WEB-INF/web.xml entry.
  +     *
  +     * @param attrs The attributes for this entry
  +     * @param creationDate The creation date for this entry
  +     * @param contentLength The content length for this entry
  +     * @param displayName The display name for this entry
  +     * @param lastModifiedDate The last modified date for this entry
  +     */
  +    protected void checkWebXmlAttributes(Attributes attrs,
  +                                         Date creationDate,
  +                                         long contentLength,
  +                                         String displayName,
  +                                         Date lastModifiedDate)
  +        throws NamingException {
  +
  +        assertNotNull("getAttributes() returned non-null", attrs);
  +
  +        NamingEnumeration ne = attrs.getAll();
  +        assertNotNull("getAll() returned non-null", ne);
  +        while (ne.hasMore()) {
  +
  +            Object next = ne.next();
  +            assert("getAll() returns Attribute instances",
  +                   next instanceof Attribute);
  +            Attribute attr = (Attribute) next;
  +            String name = attr.getID();
  +            int index = getIndex(name, webXmlAttrs);
  +            assert("WEB-INF/web.xml attribute '" + name + "' is expected",
  +                   index >= 0);
  +            Object value = attr.get();
  +            assertNotNull("get() returned non-null", value);
  +
  +            if (name.equals("creationdate")) {
  +                assert("Creation date is a date",
  +                       value instanceof Date);
  +                assert("Creation date equals " + creationDate,
  +                       creationDate.equals((Date) value));
  +            } else if (name.equals("displayname")) {
  +                assert("Display name is a string",
  +                       value instanceof String);
  +                assert("Display name equals " + displayName,
  +                       displayName.equals((String) value));
  +            } else if (name.equals("getcontentlength")) {
  +                assert("Content length is a long",
  +                       value instanceof Long);
  +                assert("Content length equals " + contentLength,
  +                       contentLength == ((Long) value).longValue());
  +            } else if (name.equals("getlastmodified")) {
  +                assert("Last modified date is a date",
  +                       value instanceof Date);
  +                assert("Last modified date is " + lastModifiedDate,
  +                       lastModifiedDate.equals((Date) value));
  +            }
  +
  +        }
  +
  +    }
  +
  +
  +    /**
  +     * Return the index of the specified name in the specified list, or
  +     * -1 if the name is not present.
  +     *
  +     * @param name Name to be looked up
  +     * @param list List of names to be checked
  +     */
  +    protected int getIndex(String name, String list[]) {
  +
  +        for (int i = 0; i < list.length; i++) {
  +            if (name.equals(list[i]))
  +                return (i);
  +        }
  +        return (-1);
  +
  +    }
  +
  +
  +    /**
  +     * Is an entry of the specified name supposed to be a DirContext?
  +     *
  +     * @param name Name to be checked
  +     */
  +    protected boolean isDirContext(String name) {
  +
  +        return (isListed(name, dirContextNames));
  +
  +    }
  +
  +
  +    /**
  +     * Returns <code>true</code> if the specified name is found in the
  +     * specified list.
  +     *
  +     * @param name Name to be looked up
  +     * @param list List to be looked up into
  +     */
  +    protected boolean isListed(String name, String list[]) {
  +
  +        return (getIndex(name, list) >= 0);
  +
  +    }
  +
  +
  +}
  
  
  
  1.2       +74 -3     
jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/FileDirContextTestCase.java
  
  Index: FileDirContextTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/FileDirContextTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FileDirContextTestCase.java       2001/06/01 00:30:27     1.1
  +++ FileDirContextTestCase.java       2001/06/01 16:58:22     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/FileDirContextTestCase.java,v
 1.1 2001/06/01 00:30:27 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/06/01 00:30:27 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/FileDirContextTestCase.java,v
 1.2 2001/06/01 16:58:22 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/06/01 16:58:22 $
    *
    * ====================================================================
    *
  @@ -64,7 +64,16 @@
   
   package org.apache.naming.resources;
   
  +import java.io.File;
  +
  +import java.util.Date;
  +
  +import javax.naming.NamingException;
  +
  +import javax.naming.directory.Attribute;
  +import javax.naming.directory.Attributes;
   import javax.naming.directory.DirContext;
  +
   import junit.framework.Test;
   import junit.framework.TestCase;
   import junit.framework.TestSuite;
  @@ -74,7 +83,7 @@
    * Unit tests for <code>org.apache.naming.resources.FileDirContext</code>.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2001/06/01 00:30:27 $
  + * @version $Revision: 1.2 $ $Date: 2001/06/01 16:58:22 $
    */
   
   public class FileDirContextTestCase extends BaseDirContextTestCase {
  @@ -133,6 +142,68 @@
   
   
       // ------------------------------------------------ Individual Test Methods
  +
  +
  +    /**
  +     * Test the attributes returned for the <code>WEB-INF</code> entry.
  +     */
  +    public void testGetAttributesWebInf() {
  +
  +        try {
  +
  +            // Identify a local file object for WEB-INF
  +            File docBaseFile = new File(docBase);
  +            File webInfFile = new File(docBaseFile, "WEB-INF");
  +
  +            // Look up the attributes for the WEB-INF entry
  +            Attributes attributes = context.getAttributes("WEB-INF");
  +
  +            // Enumerate and check the attributes for this entry
  +            checkWebInfAttributes(attributes,
  +                                  new Date(webInfFile.lastModified()),
  +                                  webInfFile.length(),
  +                                  "WEB-INF",
  +                                  new Date(webInfFile.lastModified()));
  +
  +        } catch (NamingException e) {
  +
  +            fail("NamingException: " + e);
  +
  +        }
  +
  +    }
  +
  +
  +    /**
  +     * Test the attributes returned for the <code>WEB-INF/web.xml</code>
  +     * entry.
  +     */
  +    public void testGetAttributesWebXml() {
  +
  +        try {
  +
  +            // Identify a local file object for WEB-INF/web.xml
  +            File docBaseFile = new File(docBase);
  +            File webInfFile = new File(docBaseFile, "WEB-INF");
  +            File webXmlFile = new File(webInfFile, "web.xml");
  +
  +            // Look up the attributes for the WEB-INF entry
  +            Attributes attributes = context.getAttributes("WEB-INF/web.xml");
  +
  +            // Enumerate and check the attributes for this entry
  +            checkWebXmlAttributes(attributes,
  +                                  new Date(webXmlFile.lastModified()),
  +                                  webXmlFile.length(),
  +                                  "web.xml",
  +                                  new Date(webXmlFile.lastModified()));
  +
  +        } catch (NamingException e) {
  +
  +            fail("NamingException:  " + e);
  +
  +        }
  +
  +    }
   
   
   }
  
  
  
  1.2       +87 -4     
jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/WARDirContextTestCase.java
  
  Index: WARDirContextTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/WARDirContextTestCase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WARDirContextTestCase.java        2001/06/01 00:30:27     1.1
  +++ WARDirContextTestCase.java        2001/06/01 16:58:22     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/WARDirContextTestCase.java,v
 1.1 2001/06/01 00:30:27 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/06/01 00:30:27 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/naming/resources/WARDirContextTestCase.java,v
 1.2 2001/06/01 16:58:22 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/06/01 16:58:22 $
    *
    * ====================================================================
    *
  @@ -66,7 +66,18 @@
   
   import java.io.File;
   import java.io.IOException;
  +
  +import java.util.Date;
  +
  +import java.util.jar.JarEntry;
  +import java.util.jar.JarFile;
  +
  +import javax.naming.NamingException;
  +
  +import javax.naming.directory.Attribute;
  +import javax.naming.directory.Attributes;
   import javax.naming.directory.DirContext;
  +
   import junit.framework.Test;
   import junit.framework.TestCase;
   import junit.framework.TestSuite;
  @@ -76,7 +87,7 @@
    * Unit tests for <code>org.apache.naming.resources.WARDirContext</code>.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2001/06/01 00:30:27 $
  + * @version $Revision: 1.2 $ $Date: 2001/06/01 16:58:22 $
    */
   
   public class WARDirContextTestCase extends BaseDirContextTestCase {
  @@ -137,7 +148,79 @@
       // ------------------------------------------------ Individual Test Methods
   
   
  -}
  +    /**
  +     * Test the attributes returned for the <code>WEB-INF</code> entry.
  +     */
  +    public void testGetAttributesWebInf() {
  +
  +        try {
  +
  +            // Look up the attributes of this WAR file entry
  +            JarFile jarFile = new JarFile(docBase);
  +            assertNotNull("Created JarFile for " + docBase, jarFile);
  +            JarEntry jarEntry =
  +                (JarEntry) jarFile.getEntry("WEB-INF");
  +            assertNotNull("Created JarEntry for WEB-INF", jarEntry);
  +
  +            // Look up the attributes for the WEB-INF entry
  +            Attributes attributes = context.getAttributes("WEB-INF");
  +
  +            // Enumerate and check the attributes for this entry
  +            checkWebInfAttributes(attributes,
  +                                  new Date(jarEntry.getTime()),
  +                                  jarEntry.getSize(),
  +                                  "WEB-INF",
  +                                  new Date(jarEntry.getTime()));
  +
  +        } catch (IOException e) {
  +
  +            fail("IOException: " + e);
  +
  +        } catch (NamingException e) {
  +
  +            fail("NamingException: " + e);
  +
  +        }
   
  +    }
  +
  +
  +    /**
  +     * Test the attributes returned for the <code>WEB-INF/web.xml</code>
  +     * entry.
  +     */
  +    public void testGetAttributesWebXml() {
  +
  +        try {
  +
  +            // Look up the attributes of this WAR file entry
  +            JarFile jarFile = new JarFile(docBase);
  +            assertNotNull("Created JarFile for " + docBase, jarFile);
  +            JarEntry jarEntry =
  +                (JarEntry) jarFile.getEntry("WEB-INF/web.xml");
  +            assertNotNull("Created JarEntry for WEB-INF/web.xml", jarEntry);
  +
  +            // Look up the attributes for the WEB-INF/web.xml entry
  +            Attributes attributes = context.getAttributes("WEB-INF/web.xml");
  +
  +            // Enumerate and check the attributes for this entry
  +            checkWebXmlAttributes(attributes,
  +                                  new Date(jarEntry.getTime()),
  +                                  jarEntry.getSize(),
  +                                  "web.xml",
  +                                  new Date(jarEntry.getTime()));
   
  +        } catch (IOException e) {
   
  +            fail("IOException: " + e);
  +
  +        } catch (NamingException e) {
  +
  +            fail("NamingException:  " + e);
  +
  +        }
  +
  +    }
  +
  +
  +}
  
  
  

Reply via email to