@@ -647,6 +647,50 @@ public void testReplaceExistingShortenedDirEmpty() throws IOException {
647
647
}
648
648
}*/
649
649
650
+ /* //TODO https://github.com/cryptomator/cryptofs/issues/177
651
+ @Test
652
+ @DisplayName("Replace an existing, shortened symlink")
653
+ public void testReplaceExistingShortenedSymlink() throws IOException {
654
+ try (var fs = setupCryptoFs(50, 100, false)) {
655
+ var source = fs.getPath("/sourceDir");
656
+ var linkedFromSource = fs.getPath("/linkedFromSource.txt");
657
+ var linkedFromSourceContent = "linkedFromSourceContent!";
658
+
659
+ var targetName50Chars = "/target_89_123456789_123456789_123456789_123456789_"; //since filename encryption increases filename length, 50 cleartext chars are sufficient
660
+ var target = fs.getPath(targetName50Chars);
661
+ var linkedFromTarget = fs.getPath("/linkedFromTarget.txt");
662
+ var linkedFromTargetContent = "linkedFromTargeContent!";
663
+
664
+ Files.createFile(linkedFromSource);
665
+ Files.writeString(linkedFromSource, linkedFromSourceContent, UTF_8);
666
+ Files.createFile(linkedFromTarget);
667
+ Files.writeString(linkedFromTarget, linkedFromTargetContent, UTF_8);
668
+
669
+ Files.createSymbolicLink(source, linkedFromSource);
670
+ Files.createSymbolicLink(target, linkedFromTarget);
671
+
672
+ Assertions.assertDoesNotThrow(() -> Files.move(source, target, REPLACE_EXISTING));
673
+ Assertions.assertTrue(Files.notExists(source));
674
+ Assertions.assertTrue(Files.exists(target));
675
+
676
+ //Assert linked files haven't been changed
677
+ Assertions.assertTrue(Files.exists(linkedFromSource));
678
+ Assertions.assertEquals(Files.readString(linkedFromSource, UTF_8), linkedFromSourceContent);
679
+ Assertions.assertFalse(Files.isSymbolicLink(linkedFromSource));
680
+ Assertions.assertTrue(Files.isRegularFile(linkedFromSource, LinkOption.NOFOLLOW_LINKS));
681
+
682
+ Assertions.assertTrue(Files.exists(linkedFromTarget));
683
+ Assertions.assertEquals(Files.readString(linkedFromTarget, UTF_8), linkedFromTargetContent);
684
+ Assertions.assertFalse(Files.isSymbolicLink(linkedFromTarget));
685
+ Assertions.assertTrue(Files.isRegularFile(linkedFromTarget, LinkOption.NOFOLLOW_LINKS));
686
+
687
+ //Assert link is correct
688
+ Assertions.assertTrue(Files.isSymbolicLink(target));
689
+ Assertions.assertTrue(Files.isRegularFile(target /* FOLLOW_LINKS *<remove this when enabling test>/));
690
+ Assertions.assertEquals(Files.readSymbolicLink(target), linkedFromSource);
691
+ }
692
+ }*/
693
+
650
694
private FileSystem setupCryptoFs (int ciphertextShorteningThreshold , int maxCleartextFilename , boolean readonly ) throws IOException {
651
695
byte [] key = new byte [64 ];
652
696
Arrays .fill (key , (byte ) 0x55 );
0 commit comments