Skip to content

Commit 8b61544

Browse files
committed
Added test: Replace an existing, shortened symlink
1 parent ef94c1e commit 8b61544

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

src/test/java/org/cryptomator/cryptofs/CryptoFileSystemProviderInMemoryIntegrationTest.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)