@@ -91,6 +91,50 @@ public void testReplaceExistingShortenedDirEmpty() throws IOException {
91
91
}
92
92
}*/
93
93
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
+
94
138
private FileSystem setupCryptoFs (int ciphertextShorteningThreshold , int maxCleartextFilename , boolean readonly ) throws IOException {
95
139
byte [] key = new byte [64 ];
96
140
Arrays .fill (key , (byte ) 0x55 );
0 commit comments