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 }