/**
*
*/
package org.jboss.test.faces.staging;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Set;
import org.jboss.test.faces.staging.ClasspathServerResource;
import org.jboss.test.faces.staging.ServerResource;
import org.jboss.test.faces.staging.ServerResourceDirectoryImpl;
import org.jboss.test.faces.staging.ServerResourcePath;
import org.junit.Test;
/**
* @author asmirnov
*
*/
public class ServerResourceTest {
private class MockResource implements ServerResource {
public void addResource(ServerResourcePath path, ServerResource resource) {
}
public InputStream getAsStream() throws IOException {
return null;
}
public Set<String> getPaths() {
return null;
}
public ServerResource getResource(ServerResourcePath path) {
if (null != path && path.hasNextPath()) {
return this;
}
return null;
}
public URL getURL() {
return null;
}
}
/**
* Test method for
* {@link org.jboss.test.faces.staging.ServerResourceDirectoryImpl#addResource(org.jboss.test.faces.staging.ServerResourcePath, org.jboss.test.faces.staging.ServerResource)}
* .
*/
@Test
public void testAddResource() {
ServerResourceDirectoryImpl root = new ServerResourceDirectoryImpl();
MockResource webXml = new MockResource();
root.addResource(ServerResourcePath.WEB_XML, webXml);
assertEquals(1, root.getPaths().size());
MockResource facesConfig = new MockResource();
root.addResource(ServerResourcePath.FACES_CONFIG, facesConfig);
assertEquals(1, root.getPaths().size());
ServerResource webInf = root.getResource(ServerResourcePath.WEB_INF);
assertNotNull(webInf);
assertEquals(2, webInf.getPaths().size());
assertSame(webXml, webInf
.getResource(new ServerResourcePath("/web.xml")));
assertSame(facesConfig, webInf.getResource(new ServerResourcePath(
"/faces-config.xml")));
}
@Test
public void testAddDirectory() throws Exception {
ServerResourceDirectoryImpl root = new ServerResourceDirectoryImpl();
ServerResource directory = root.addDirectory(new ServerResourcePath("/foo/bar"));
assertSame(directory, root.getResource(new ServerResourcePath("/foo//bar/")));
ServerResource bazDirectory = root.addDirectory(new ServerResourcePath("/foo/bar/baz"));
assertSame(directory, root.getResource(new ServerResourcePath("/foo//bar/")));
assertSame(bazDirectory, root.getResource(new ServerResourcePath("/foo//bar/baz")));
}
/**
* Test method for
* {@link org.jboss.test.faces.staging.ServerResourceDirectoryImpl#getResource(org.jboss.test.faces.staging.ServerResourcePath)}
* .
*/
@Test
public void testGetResource() {
ServerResourceDirectoryImpl root = new ServerResourceDirectoryImpl();
MockResource webXml = new MockResource();
root.addResource(ServerResourcePath.WEB_XML, webXml);
ServerResource webInf = root.getResource(ServerResourcePath.WEB_INF);
assertNotNull(webInf);
assertNull(root.getResource(new ServerResourcePath("/foo")));
assertNull(root.getResource(new ServerResourcePath("/foo/baz")));
assertEquals(1, root.getPaths().size());
assertNull(root.getResource(new ServerResourcePath(
"/WEB-INF/web.xml/foo")));
assertSame(webXml, webInf.getResource(new ServerResourcePath(
"/web.xml")));
}
/**
* Test method for
* {@link org.jboss.test.faces.staging.ServerResourceDirectoryImpl#getResource(org.jboss.test.faces.staging.ServerResourcePath)}
* .
*/
@Test
public void testGetResourceRoot() {
ServerResourceDirectoryImpl root = new ServerResourceDirectoryImpl();
MockResource indexXhtml = new MockResource();
root.addResource(new ServerResourcePath("/index.xhtml"), indexXhtml);
ServerResource index = root.getResource(new ServerResourcePath("/index.xhtml"));
assertNotNull(index);
assertNull(root.getResource(new ServerResourcePath("/foo")));
assertNull(root.getResource(new ServerResourcePath("/foo/baz")));
assertEquals(1, root.getPaths().size());
}
/**
* Test method for
* {@link org.jboss.test.faces.staging.ServerResourceDirectoryImpl#getAsStream()}.
*
* @throws IOException
*/
@Test
public void testGetAsStream() throws IOException {
ClasspathServerResource resource = new ClasspathServerResource(
"resource.txt");
InputStream inputStream = resource.getAsStream();
assertNotNull(inputStream);
try {
byte[] buff = new byte[20];
assertEquals(3, inputStream.read(buff));
} finally {
inputStream.close();
}
}
/**
* Test method for
* {@link org.jboss.test.faces.staging.ServerResourceDirectoryImpl#getURL()}.
*/
@Test
public void testGetURL() {
ClasspathServerResource resource = new ClasspathServerResource(
"resource.txt");
assertNotNull(resource.getURL());
}
}