Package org.jboss.test.virtual.test

Source Code of org.jboss.test.virtual.test.VFSUtilTestCase

/*
* JBoss, Home of Professional Open Source
* Copyright 2006, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.test.virtual.test;

import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import junit.framework.Test;
import junit.framework.TestSuite;

import org.jboss.virtual.VFS;
import org.jboss.virtual.VFSUtils;
import org.jboss.virtual.VirtualFile;

/**
* VFSUtilTestCase.
*
* @author <a href="ales.justin@jboss.com">Ales Justin</a>
* @author anil.saldhana@jboss.com
*/
public class VFSUtilTestCase extends AbstractMockVFSTest
{
   public VFSUtilTestCase(String name)
   {
      super(name);
   }

   public static Test suite()
   {
      return new TestSuite(VFSUtilTestCase.class);
   }

   public void testAddManifestLocations() throws Throwable
   {
      URL url = getResource("/vfs/test");
      VirtualFile root = VFS.getRoot(url);
      VirtualFile file = root.getChild("badmf.jar");
      assertNotNull(file);
      List<VirtualFile> paths = new ArrayList<VirtualFile>();
      VFSUtils.addManifestLocations(file, paths);
      assertEquals(3, paths.size());
   }

   public void testOptionsPropagation() throws Exception
   {
      URL url = getResource("/vfs/test");
      VFS vfs = VFS.getVFS(url);
      VFSUtils.enableNoReaper(vfs);
      VirtualFile root = vfs.getRoot();
      assertOption(root, "nested", VFSUtils.NO_REAPER_QUERY);
      assertOption(root, "nested/nested.jar", VFSUtils.NO_REAPER_QUERY);
      assertOption(root, "nested/nested.jar/META-INF", VFSUtils.NO_REAPER_QUERY);
      assertOption(root, "nested/nested.jar/META-INF/empty.txt", VFSUtils.NO_REAPER_QUERY);
      assertOption(root, "nested/nested.jar/complex.jar", VFSUtils.NO_REAPER_QUERY);
      assertOption(root, "nested/nested.jar/complex.jar/subfolder", VFSUtils.NO_REAPER_QUERY);
      assertOption(root, "nested/nested.jar/complex.jar/subfolder/subchild", VFSUtils.NO_REAPER_QUERY);

      VirtualFile subchild = root.findChild("nested/nested.jar/complex.jar/subfolder/subchild");
      VFSUtils.disableNoReaper(subchild);
      assertNull(VFSUtils.getOption(subchild, VFSUtils.NO_REAPER_QUERY));
   }

   protected void assertOption(VirtualFile root, String path, String optionKey) throws Exception
   {
      VirtualFile child = root.findChild(path);
      String optionValue = VFSUtils.getOption(root, optionKey);
      assertNotNull(optionValue);
      assertEquals(optionValue, VFSUtils.getOption(child, optionKey));
   }

   public void testRealURL() throws Exception
   {
     //Regular jar
     URL url = getResource("/vfs/test");
     VirtualFile root = VFS.getRoot(url);
     VirtualFile jarFile = root.getChild("badmf.jar");
       
     URL vfsURL = jarFile.toURL();
     assertTrue(vfsURL.toExternalForm().startsWith("vfszip"));
     URL realURL = VFSUtils.getRealURL(jarFile);
      // TODO - JBVFS-77 --> do proper tests!
     assertTrue(realURL.toExternalForm().startsWith("jar:"));
    
     //Nested file in a jar
     url = getResource("/vfs/test/nested");
     root = VFS.getRoot(url);
     VirtualFile nestedFile = root.getChild("/nested.jar/META-INF/empty.txt");
     realURL = VFSUtils.getRealURL(nestedFile);
      // TODO - JBVFS-77 --> do proper tests!
     assertTrue(realURL.toExternalForm().startsWith("jar:"));
      
     //Regular file
     url = getResource("/vfs/context/file/simple");
     VirtualFile regularFile = VFS.getRoot(url).getChild("tomodify");
     vfsURL = regularFile.toURL();
     assertTrue(vfsURL.getProtocol().startsWith("vfsfile"));
     realURL = VFSUtils.getRealURL(regularFile);
      // TODO - JBVFS-77 --> do proper tests!
     assertTrue(realURL.toExternalForm().startsWith("file:"));
   }
  
   public void testStripProtocol() throws Exception
   {
      URL url = getResource("/vfs/test/jar1.jar");
     
      VirtualFile manifest = VFS.getRoot(url).getChild("META-INF/MANIFEST.MF");
      String expected = VFSUtils.stripProtocol(manifest.toURI());
     
      URL manifestURL = new URL("jar:" + url.toExternalForm() + "!/META-INF/MANIFEST.MF");
      System.out.println(manifestURL);
      System.out.println(manifestURL.toURI());
      String actual = VFSUtils.stripProtocol(manifestURL.toURI());
     
      assertEquals("path from jar:file: url is not usable", expected, actual);
   }
}
TOP

Related Classes of org.jboss.test.virtual.test.VFSUtilTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.