app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

NativeGeneratedRecoveryTest.kt (1841B)


      1 package org.harvestcircle.application
      2 
      3 import kotlinx.coroutines.test.runTest
      4 import java.nio.file.Files
      5 import java.nio.file.Path
      6 import kotlin.test.AfterTest
      7 import kotlin.test.BeforeTest
      8 import kotlin.test.Test
      9 import kotlin.test.assertEquals
     10 import kotlin.test.assertFalse
     11 import kotlin.test.assertTrue
     12 
     13 class NativeGeneratedRecoveryTest {
     14     private val dataDirectory =
     15         Path.of(checkNotNull(System.getProperty("harvestcircle.development.data.dir")))
     16 
     17     @BeforeTest
     18     fun prepareDataDirectory() {
     19         dataDirectory.toFile().deleteRecursively()
     20         Files.createDirectories(dataDirectory.resolve("data"))
     21     }
     22 
     23     @AfterTest
     24     fun removeDataDirectory() {
     25         dataDirectory.toFile().deleteRecursively()
     26     }
     27 
     28     @Test
     29     fun generatedRecoveryCrossesTheNativeBoundaryAndCancelsWithoutPersistence() =
     30         runTest {
     31             val runtime =
     32                 NativeHarvestCircleRuntime.open(
     33                     desktopRuntimeOpenConfiguration(
     34                         developmentMode = true,
     35                         explicitDataDirectory = dataDirectory.toRealPath().toString(),
     36                         configuredRelays = "",
     37                     ),
     38                 )
     39             try {
     40                 runtime.bootstrap()
     41                 val recovery = runtime.prepareLocalIdentity()
     42 
     43                 assertTrue(recovery.identity.npub.startsWith("npub1"))
     44                 assertTrue(recovery.backup.revealNsec().startsWith("nsec1"))
     45                 runtime.execute(ApplicationCommand.CancelGeneratedIdentity(recovery.requestId))
     46                 recovery.backup.clear()
     47                 assertFalse(runtime.currentSnapshot().identities.isNotEmpty())
     48                 assertEquals(0, runtime.currentSnapshot().identities.size)
     49             } finally {
     50                 runtime.shutdown()
     51             }
     52         }
     53 }