package org.jboss.shrinkwrap.impl.nio.file; import java.io.IOException; import java.nio.file.FileSystem; import java.nio.file.Files; import java.nio.file.LinkOption; import java.nio.file.attribute.BasicFileAttributeView; import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.FileTime; import java.util.logging.Logger; import junit.framework.Assert; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.nio.file.ShrinkWrapFileSystems; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.After; import org.junit.Before; import org.junit.Test; /** * ShrinkWrap implementation of {@link BasicFileAttributesView}; not all operations are supported * * @author <a href="mailto:mmatloka@gmail.com">Michal Matloka</a> */ public class FileAttributesViewTestCase { @SuppressWarnings("unused") private static final Logger log = Logger.getLogger(FileAttributesTestCase.class.getName()); private FileSystem fs; private JavaArchive archive; @Before public void createStore() throws IOException { // Setup final String name = "test.jar"; final JavaArchive archive = ShrinkWrap.create(JavaArchive.class, name); final FileSystem fs = ShrinkWrapFileSystems.newFileSystem(archive); // Set this.archive = archive; this.fs = fs; } @After public void closeFs() throws IOException { this.fs.close(); } @Test public void getShrinkwrapAttributesView() { BasicFileAttributeView attributeView = getAttributesView("path"); Assert.assertEquals("Attributes view wrong name", ShrinkWrapFileAttributeView.class.getSimpleName(), attributeView.name()); Assert.assertTrue("Attribute view is not an instance of ShrinkWrapFileAttributeView", attributeView instanceof ShrinkWrapFileAttributeView); } @Test public void readAttributes() throws IOException { ShrinkWrapFileAttributeView attributeView = getAttributesView("path"); Assert.assertNotNull("Attribute view should not be null", attributeView); BasicFileAttributes attributes = attributeView.readAttributes(); // the attributes are tested in FileAttributesTestCase Assert.assertTrue("Atrributes are not instance of ShrinkWrapFileAttributes", attributes instanceof ShrinkWrapFileAttributes); } @Test(expected = UnsupportedOperationException.class) public void setTimes() throws IOException { BasicFileAttributeView attributeView = getAttributesView("path"); FileTime fileTime = FileTime.fromMillis(0); attributeView.setTimes(fileTime, fileTime, fileTime); } private ShrinkWrapFileAttributeView getAttributesView(final String pathName) { archive.add(EmptyAsset.INSTANCE, pathName); return Files.getFileAttributeView(this.fs.getPath(pathName), ShrinkWrapFileAttributeView.class, (LinkOption) null); } }