Fix unit tests.
[lgpl/argeo-commons.git] / org.argeo.jcr / ext / test / org / argeo / jcr / fs / JcrFileSystemTest.java
index 1cf7ef70e9573e0a4c99e91c2d59175eaea50026..190eb949a0f0bcacc4308470a0725d96d5922051 100644 (file)
@@ -29,7 +29,18 @@ public class JcrFileSystemTest extends TestCase {
                FileSystemProvider fsProvider = new JackrabbitMemoryFsProvider();
 
                // Simple file
+               Path rootPath = fsProvider.getPath(new URI("jcr+memory:/"));
+               log.debug("Got root " + rootPath);
                Path testPath = fsProvider.getPath(new URI("jcr+memory:/test.txt"));
+               log.debug("Test path");
+               assertEquals("test.txt", testPath.getFileName().toString());
+               assertEquals(rootPath, testPath.getParent());
+               assertEquals(testPath.getFileName(), rootPath.relativize(testPath));
+               // relativize self should be empty path
+               Path selfRelative = testPath.relativize(testPath);
+               assertEquals("", selfRelative.toString());
+
+               log.debug("Create file " + testPath);
                Files.createFile(testPath);
                BasicFileAttributes bfa = Files.readAttributes(testPath, BasicFileAttributes.class);
                FileTime ft = bfa.creationTime();
@@ -46,8 +57,6 @@ public class JcrFileSystemTest extends TestCase {
                assertTrue(Arrays.equals(arr, read));
                assertEquals(txt, new String(read));
                log.debug("Read " + testPath);
-               Path rootPath = fsProvider.getPath(new URI("jcr+memory:/"));
-               log.debug("Got root " + rootPath);
                Path testDir = rootPath.resolve("testDir");
                log.debug("Resolved " + testDir);
                // Copy
@@ -57,6 +66,9 @@ public class JcrFileSystemTest extends TestCase {
                log.debug("Created sub directories " + subsubdir);
                Path copiedFile = testDir.resolve("copiedFile.txt");
                log.debug("Resolved " + copiedFile);
+               Path relativeCopiedFile = testDir.relativize(copiedFile);
+               assertEquals(copiedFile.getFileName().toString(), relativeCopiedFile.toString());
+               log.debug("Relative copied file " + relativeCopiedFile);
                try (OutputStream out = Files.newOutputStream(copiedFile); InputStream in = Files.newInputStream(testPath)) {
                        IOUtils.copy(in, out);
                }
@@ -81,7 +93,7 @@ public class JcrFileSystemTest extends TestCase {
                log.debug("Listed " + testDir);
                // Generic attributes
                Map<String, Object> attrs = Files.readAttributes(copiedFile, "*");
-               assertEquals(5, attrs.size());
+               assertEquals(3, attrs.size());
                log.debug("Read attributes of " + copiedFile + ": " + attrs.keySet());
                // Direct node access
                NodeFileAttributes nfa = Files.readAttributes(copiedFile, NodeFileAttributes.class);
@@ -91,7 +103,27 @@ public class JcrFileSystemTest extends TestCase {
                Files.setAttribute(copiedFile, Property.JCR_LANGUAGE, "fr");
                log.debug("Set language");
                attrs = Files.readAttributes(copiedFile, "*");
-               assertEquals(6, attrs.size());
+               assertEquals(4, attrs.size());
                log.debug("Read attributes of " + copiedFile + ": " + attrs.keySet());
        }
+
+       public void testIllegalCharacters() throws Exception {
+               FileSystemProvider fsProvider = new JackrabbitMemoryFsProvider();
+               String fileName = "tüßçt[1].txt";
+               String pathStr = "/testDir/" + fileName;
+               Path testDir = fsProvider.getPath(new URI("jcr+memory:/testDir"));
+               Files.createDirectory(testDir);
+               Path testPath = testDir.resolve(fileName);
+               assertEquals(pathStr, testPath.toString());
+               Files.createFile(testPath);
+               DirectoryStream<Path> files = Files.newDirectoryStream(testDir);
+               Path listedPath = files.iterator().next();
+               assertEquals(pathStr, listedPath.toString());
+
+               String dirName = "*[~WeirdDir~]*";
+               Path subDir = testDir.resolve(dirName);
+               Files.createDirectory(subDir);
+               subDir = testDir.resolve(dirName);
+               assertEquals(dirName, subDir.getFileName().toString());
+       }
 }