diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2024-08-22 00:10:26 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2024-08-22 00:23:23 +0200 |
| commit | d7eefa8066b8e2ac70e0a4080c52bce20da24a23 (patch) | |
| tree | 2d2ccae50b30f82ced23363a17653e31c0d79804 /libs/samba/src/test/java/org/the_jk/cleversync | |
| parent | 275de81f854be66f575e3c8e36a0c1b56281e788 (diff) | |
samba: Add docker server run by tests
Current user needs to be in docker group (or in some other way have
access to the docker.socket) for this to work.
Two current problems:
* listRoot() fails, no directories are found.
* gradle hangs after running the samba tests
Diffstat (limited to 'libs/samba/src/test/java/org/the_jk/cleversync')
| -rw-r--r-- | libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt | 108 |
1 files changed, 94 insertions, 14 deletions
diff --git a/libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt b/libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt index 3f1fa04..b581df9 100644 --- a/libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt +++ b/libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt @@ -1,39 +1,119 @@ package org.the_jk.cleversync.samba +import android.content.Context +import androidx.test.core.app.ApplicationProvider import com.google.common.truth.Truth.assertThat import org.junit.After +import org.junit.AfterClass import org.junit.Before +import org.junit.BeforeClass import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config +import org.the_jk.cleversync.io.Link import org.the_jk.cleversync.io.samba.SambaCredentials +import java.io.File +import kotlin.io.path.createSymbolicLinkPointingTo @Config(manifest=Config.NONE) @RunWith(RobolectricTestRunner::class) class SambaTreeTest { - private lateinit var uri: String - private lateinit var credentials: SambaCredentials - @Before - fun setUp() { - uri = "smb://127.0.0.1:10445/" - credentials = SambaCredentials("test", "notverysecret") + fun setUpTest() { + assertThat(shareDir.listFiles()).isEmpty() } @After - fun tearDown() { + fun tearDownTest() { + for (file in shareDir.listFiles()!!) { + if (file.isDirectory) { + file.deleteRecursively() + } else { + file.delete() + } + } + } + + @Test + fun description() { + val resources = ApplicationProvider.getApplicationContext<Context>().resources + SambaTreeFactory.tree(uri, credentials).getOrThrow().use { tree -> + assertThat(tree.description(resources).toString()).contains(uri) + } + } + @Test + fun listEmptyRoot() { + SambaTreeFactory.tree(uri, credentials).getOrThrow().use { root -> + val content = root.list() + assertThat(content.directories).isEmpty() + assertThat(content.files).isEmpty() + assertThat(content.links).isEmpty() + } } @Test fun listRoot() { - val result = SambaTreeFactory.tree(uri, credentials) - assertThat(result.isSuccess).isTrue() - val root = result.getOrThrow() - val content = root.list() - assertThat(content.directories).hasSize(1) - assertThat(content.files).isEmpty() - assertThat(content.links).isEmpty() + val dir = File(shareDir, "dir") + val file = File(shareDir, "file") + val link = File(shareDir, "link") + dir.mkdir() + file.writeText("foo") + link.toPath().createSymbolicLinkPointingTo(file.toPath()) + + SambaTreeFactory.tree(uri, credentials).getOrThrow().use { root -> + val content = root.list() + assertThat(content.directories).hasSize(1) + assertThat(content.directories[0].name).isEqualTo("dir") + assertThat(content.files).hasSize(1) + assertThat(content.files[0].name).isEqualTo("file") + assertThat(content.files[0].size).isEqualTo(3U) + assertThat(content.links).hasSize(1) + assertThat(content.links[0].name).isEqualTo("link") + val target = content.links[0].resolve() + if (target is Link.FileTarget) { + assertThat(target.file.name).isEqualTo("file") + } else { + assertThat(target).isInstanceOf(Link.FileTarget::class.java) + } + } + } + + companion object { + private lateinit var uri: String + private lateinit var credentials: SambaCredentials + private lateinit var dockerDir: File + private lateinit var shareDir: File + private var dockerRunning = false + + @BeforeClass + @JvmStatic + fun setUpClass() { + uri = "smb://127.0.0.1:10445/Share" + credentials = SambaCredentials("test", "notverysecret") + dockerDir = File(System.getProperty("dockerDir")!!) + shareDir = File(System.getProperty("shareDir")!!) + shareDir.deleteRecursively() + shareDir.mkdirs() + + val pb = ProcessBuilder("docker", "compose", "up", "--wait", "--wait-timeout", "60") + pb.directory(dockerDir) + val exitCode = pb.start().waitFor() + assertThat(exitCode).isEqualTo(0) + dockerRunning = true + } + + @AfterClass + @JvmStatic + fun tearDownClass() { + if (dockerRunning) { + val pb = ProcessBuilder("docker", "compose", "down") + pb.directory(dockerDir) + pb.start().waitFor() + dockerRunning = false + } + shareDir.deleteRecursively() + } } } |
