From 8a4fb43a874da9a0024eaffbbf7a7a80fe015e9c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= <sebastian@mobanisto.de>
Date: Wed, 25 Aug 2021 13:13:36 +0200
Subject: [PATCH] Add test that creates database on Android

---
 mailbox-android/build.gradle                  |  3 ++
 .../mailbox/core/DatabaseCreationTest.kt      | 50 +++++++++++++++++++
 2 files changed, 53 insertions(+)
 create mode 100644 mailbox-android/src/androidTest/java/org/briarproject/mailbox/core/DatabaseCreationTest.kt

diff --git a/mailbox-android/build.gradle b/mailbox-android/build.gradle
index 323ed59f..a926079f 100644
--- a/mailbox-android/build.gradle
+++ b/mailbox-android/build.gradle
@@ -78,8 +78,11 @@ dependencies {
 
     testImplementation 'junit:junit:4.13.2'
 
+    androidTestImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
     androidTestImplementation 'androidx.test.ext:junit:1.1.3'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+    androidTestImplementation 'androidx.test:runner:1.1.0'
+    androidTestImplementation 'androidx.test:rules:1.1.0'
 }
 
 def torBinariesDir = 'src/main/res/raw'
diff --git a/mailbox-android/src/androidTest/java/org/briarproject/mailbox/core/DatabaseCreationTest.kt b/mailbox-android/src/androidTest/java/org/briarproject/mailbox/core/DatabaseCreationTest.kt
new file mode 100644
index 00000000..ba16626b
--- /dev/null
+++ b/mailbox-android/src/androidTest/java/org/briarproject/mailbox/core/DatabaseCreationTest.kt
@@ -0,0 +1,50 @@
+package org.briarproject.mailbox.core
+
+import kotlinx.coroutines.runBlocking
+import org.junit.Test
+import org.sqlite.mc.SQLiteMCConfig
+import java.nio.file.Files
+import java.nio.file.Path
+import java.sql.Connection
+import java.sql.DriverManager
+import kotlin.test.assertEquals
+import kotlin.test.assertTrue
+
+class DatabaseCreationTest {
+
+    @Test
+    fun createDatabase(): Unit = runBlocking {
+        val file: Path = Files.createTempFile("test", ".sqlite")
+        println(file)
+        val connection: Connection = DriverManager.getConnection("jdbc:sqlite:$file",
+            SQLiteMCConfig().withKey("very-secret").toProperties())
+
+        val stmt = connection.createStatement()
+        stmt.executeUpdate("CREATE TABLE students (id integer, name string)")
+        stmt.executeUpdate("INSERT INTO students values (1, 'alice')")
+        stmt.executeUpdate("INSERT INTO students values (2, 'bob')")
+
+        val prep = connection.prepareStatement("SELECT * FROM students")
+        val results = prep.executeQuery()
+        for (i in 0..1) {
+            val available = results.next()
+            assertTrue(available)
+
+            val id = results.getInt(1)
+            val name = results.getString(2)
+            when (i) {
+                0 -> {
+                    assertEquals(1, id)
+                    assertEquals("alice", name)
+                }
+                1 -> {
+                    assertEquals(2, id)
+                    assertEquals("bob", name)
+                }
+            }
+        }
+
+        Files.delete(file)
+    }
+
+}
\ No newline at end of file
-- 
GitLab