package com.beijunyi.parallelgit.filesystem;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.util.Map;
import com.beijunyi.parallelgit.filesystem.io.GfsFileAttributes;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
public class FilesReadAttributesTest extends PreSetupGitFileSystemTest {
@Test
public void readBasicAttributes_theResultShouldContainSpecifiedAttributes() throws IOException {
writeToGfs("/file.txt");
Map<String, Object> attributeMap = Files.readAttributes(gfs.getPath("/file.txt"), "basic:size,isRegularFile");
assertTrue(attributeMap.containsKey("size"));
assertTrue(attributeMap.containsKey("isRegularFile"));
}
@Test
public void readBasicAttributesWithoutViewType_theResultShouldContainSpecifiedAttributes() throws IOException {
writeToGfs("/file.txt");
Map<String, Object> attributeMap = Files.readAttributes(gfs.getPath("/file.txt"), "size,isRegularFile");
assertTrue(attributeMap.containsKey("size"));
assertTrue(attributeMap.containsKey("isRegularFile"));
}
@Test
public void readPosixAttributes_theResultShouldContainSpecifiedAttributes() throws IOException {
writeToGfs("/file.txt");
Map<String, Object> attributeMap = Files.readAttributes(gfs.getPath("/file.txt"), "posix:permissions,owner");
assertTrue(attributeMap.containsKey("permissions"));
assertTrue(attributeMap.containsKey("owner"));
}
@Test(expected = NoSuchFileException.class)
public void readAttributesFromNonExistentFile_shouldThrowNoSuchFileException1() throws IOException {
provider.readAttributes(gfs.getPath("/non_existent_file.txt"), GfsFileAttributes.Basic.class);
}
@Test(expected = NoSuchFileException.class)
public void readAttributesFromNonExistentFile_shouldThrowNoSuchFileException2() throws IOException {
provider.readAttributes(gfs.getPath("/non_existent_file.txt"), "basic:size,isRegularFile");
}
@Test(expected = UnsupportedOperationException.class)
public void readUnsupportedFileAttributes_shouldThrowUnsupportedOperationException2() throws IOException {
writeToGfs("/file.txt");
Files.readAttributes(gfs.getPath("/file.txt"), "some_view:some_attribute");
}
}