@@ -91,6 +91,50 @@ public void testReplaceExistingShortenedDirEmpty() throws IOException {
9191 }
9292 }*/
9393
94+ /* //TODO https://github.com/cryptomator/cryptofs/issues/177
95+ @Test
96+ @DisplayName("Replace an existing, shortened symlink")
97+ public void testReplaceExistingShortenedSymlink() throws IOException {
98+ try (var fs = setupCryptoFs(50, 100, false)) {
99+ var source = fs.getPath("/sourceDir");
100+ var linkedFromSource = fs.getPath("/linkedFromSource.txt");
101+ var linkedFromSourceContent = "linkedFromSourceContent!";
102+
103+ var targetName50Chars = "/target_89_123456789_123456789_123456789_123456789_"; //since filename encryption increases filename length, 50 cleartext chars are sufficient
104+ var target = fs.getPath(targetName50Chars);
105+ var linkedFromTarget = fs.getPath("/linkedFromTarget.txt");
106+ var linkedFromTargetContent = "linkedFromTargeContent!";
107+
108+ Files.createFile(linkedFromSource);
109+ Files.writeString(linkedFromSource, linkedFromSourceContent, UTF_8);
110+ Files.createFile(linkedFromTarget);
111+ Files.writeString(linkedFromTarget, linkedFromTargetContent, UTF_8);
112+
113+ Files.createSymbolicLink(source, linkedFromSource);
114+ Files.createSymbolicLink(target, linkedFromTarget);
115+
116+ assertDoesNotThrow(() -> Files.move(source, target, REPLACE_EXISTING));
117+ assertTrue(Files.notExists(source));
118+ assertTrue(Files.exists(target));
119+
120+ //Assert linked files haven't been changed
121+ assertTrue(Files.exists(linkedFromSource));
122+ assertEquals(Files.readString(linkedFromSource, UTF_8), linkedFromSourceContent);
123+ assertFalse(Files.isSymbolicLink(linkedFromSource));
124+ assertTrue(Files.isRegularFile(linkedFromSource, LinkOption.NOFOLLOW_LINKS));
125+
126+ assertTrue(Files.exists(linkedFromTarget));
127+ assertEquals(Files.readString(linkedFromTarget, UTF_8), linkedFromTargetContent);
128+ assertFalse(Files.isSymbolicLink(linkedFromTarget));
129+ assertTrue(Files.isRegularFile(linkedFromTarget, LinkOption.NOFOLLOW_LINKS));
130+
131+ //Assert link is correct
132+ assertTrue(Files.isSymbolicLink(target));
133+ assertTrue(Files.isRegularFile(target /* FOLLOW_LINKS *<remove angle brackets when enabling test>/));
134+ assertEquals(Files.readSymbolicLink(target), linkedFromSource);
135+ }
136+ }*/
137+
94138 private FileSystem setupCryptoFs (int ciphertextShorteningThreshold , int maxCleartextFilename , boolean readonly ) throws IOException {
95139 byte [] key = new byte [64 ];
96140 Arrays .fill (key , (byte ) 0x55 );
0 commit comments