From a6f5064d8f2fb9496434d7736bfa1430ab0e4fd6 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Mon, 16 May 2022 10:19:38 -0300
Subject: [PATCH] Test that no temp files get left behind after upload errors

---
 .../mailbox/core/files/FileManagerIntegrationTest.kt | 12 ++++++++++++
 .../mailbox/core/server/IntegrationTest.kt           |  2 ++
 2 files changed, 14 insertions(+)

diff --git a/mailbox-core/src/test/java/org/briarproject/mailbox/core/files/FileManagerIntegrationTest.kt b/mailbox-core/src/test/java/org/briarproject/mailbox/core/files/FileManagerIntegrationTest.kt
index f9af0421..22c77236 100644
--- a/mailbox-core/src/test/java/org/briarproject/mailbox/core/files/FileManagerIntegrationTest.kt
+++ b/mailbox-core/src/test/java/org/briarproject/mailbox/core/files/FileManagerIntegrationTest.kt
@@ -15,8 +15,10 @@ import org.briarproject.mailbox.core.server.IntegrationTest
 import org.junit.jupiter.api.Assertions.assertArrayEquals
 import org.junit.jupiter.api.BeforeEach
 import org.junit.jupiter.api.Test
+import java.io.File
 import kotlin.random.Random
 import kotlin.test.assertEquals
+import kotlin.test.assertTrue
 
 class FileManagerIntegrationTest : IntegrationTest() {
 
@@ -68,6 +70,7 @@ class FileManagerIntegrationTest : IntegrationTest() {
         }
         assertEquals(HttpStatusCode.BadRequest, response.status)
         assertEquals("Bad request: File larger than allowed.", response.readText())
+        assertNoTmpFiles()
     }
 
     @Test
@@ -79,6 +82,7 @@ class FileManagerIntegrationTest : IntegrationTest() {
             body = bytes
         }
         assertEquals(HttpStatusCode.OK, response.status)
+        assertNoTmpFiles()
         // owner connection got registered
         assertTimestampRecent(metadataManager.ownerConnectionTime.value)
 
@@ -112,6 +116,7 @@ class FileManagerIntegrationTest : IntegrationTest() {
                 authenticateWithToken(contact1.token)
             }
         assertEquals(0, emptyFileListResponse.files.size)
+        assertNoTmpFiles()
     }
 
     @Test
@@ -335,4 +340,11 @@ class FileManagerIntegrationTest : IntegrationTest() {
         // owner connection got registered
         assertTimestampRecent(metadataManager.ownerConnectionTime.value)
     }
+
+    private fun assertNoTmpFiles() {
+        val dir = requireNotNull(this.tempDir)
+        val tmp = File(dir, "tmp")
+        assertTrue(tmp.isDirectory)
+        assertEquals(0, tmp.listFiles()?.size)
+    }
 }
diff --git a/mailbox-core/src/test/java/org/briarproject/mailbox/core/server/IntegrationTest.kt b/mailbox-core/src/test/java/org/briarproject/mailbox/core/server/IntegrationTest.kt
index 778f9ed0..3eef276a 100644
--- a/mailbox-core/src/test/java/org/briarproject/mailbox/core/server/IntegrationTest.kt
+++ b/mailbox-core/src/test/java/org/briarproject/mailbox/core/server/IntegrationTest.kt
@@ -61,6 +61,7 @@ abstract class IntegrationTest(private val installJsonFeature: Boolean = true) {
     protected val id = getNewRandomId()
     protected val contact1 = getNewRandomContact()
     protected val contact2 = getNewRandomContact()
+    protected var tempDir: File? = null
 
     @Volatile
     protected var exceptionInBackgroundThread: Throwable? = null
@@ -76,6 +77,7 @@ abstract class IntegrationTest(private val installJsonFeature: Boolean = true) {
 
     @BeforeAll
     fun setUp(@TempDir tempDir: File) {
+        this.tempDir = tempDir
         testComponent = DaggerTestComponent.builder().testModule(TestModule(tempDir)).build()
         testComponent.injectCoreEagerSingletons()
         assertFalse(setupManager.hasDb)
-- 
GitLab