diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2024-11-09 16:17:44 +0100 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2024-11-09 16:17:44 +0100 |
| commit | 882520f3baee410647c3b99d608cc8fe18b0f5d0 (patch) | |
| tree | eebb370a4977ea20ce3cfaf679aff387ab0896c9 /libs/test-utils/src/main | |
| parent | 6ea5cef180db16523b2d629a44ee556507e3de78 (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')
| -rw-r--r-- | libs/test-utils/src/main/java/org/the_jk/cleversync/io/BaseSingleMergeTest.kt | 33 |
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()) |
