summaryrefslogtreecommitdiff
path: root/libs/samba/src/test/java/org/the_jk/cleversync
diff options
context:
space:
mode:
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.kt108
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()
+ }
}
}