summaryrefslogtreecommitdiff
path: root/libs/test-utils/src/main/java/org/the_jk
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2024-11-09 16:17:44 +0100
committerJoel Klinghed <the_jk@spawned.biz>2024-11-09 16:17:44 +0100
commit882520f3baee410647c3b99d608cc8fe18b0f5d0 (patch)
treeeebb370a4977ea20ce3cfaf679aff387ab0896c9 /libs/test-utils/src/main/java/org/the_jk
parent6ea5cef180db16523b2d629a44ee556507e3de78 (diff)
sftp: add single merge tests for both local <-> sftp and sftp <-> local
Had to fixup the symlink code in Sftp, most importantly add a PathUtils relativeTo to fixup relative links.
Diffstat (limited to 'libs/test-utils/src/main/java/org/the_jk')
-rw-r--r--libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt33
1 files changed, 32 insertions, 1 deletions
diff --git a/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt b/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt
index 156f978..2b53a06 100644
--- a/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt
+++ b/libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt
@@ -156,7 +156,6 @@ abstract class BaseSingleMergeTest {
src.createLink("link1", srcFoo)
src.createLink("link2", "does-not-exist")
- src.createLink("link3", "../../escaped")
val actions = SingleMerge.calculate(tgt, src)
assertThat(actions).containsExactly(
@@ -183,6 +182,38 @@ abstract class BaseSingleMergeTest {
}
@Test
+ fun symlinkOutsideRoot() {
+ Assume.assumeTrue(sourceSupportsSymlinks())
+
+ val link = src.createLink("bad_link", "../../escaped")
+
+ // Some sources doesn't allow to create symlinks that point outside filesystem
+ when (val target = link.resolve()) {
+ is Link.NoTarget -> Assume.assumeTrue(target.path == "../../escaped")
+ is Link.FileTarget,
+ is Link.DirectoryTarget,
+ -> Assert.fail("Should not target anything")
+ }
+
+
+ val actions = SingleMerge.calculate(tgt, src)
+ assertThat(actions).isEmpty()
+ }
+
+ @Test
+ fun symlinkOutsideDir() {
+ Assume.assumeTrue(sourceSupportsSymlinks())
+
+ val dir = src.createDirectory("foo")
+ val escaped = src.createDirectory("escaped")
+ dir.createLink("bad_link", escaped)
+ src.removeDirectory("escaped")
+
+ val actions = SingleMerge.calculate(tgt, dir)
+ assertThat(actions).isEmpty()
+ }
+
+ @Test
fun resolveSymlink() {
Assume.assumeTrue(sourceSupportsSymlinks())