@@ -3,10 +3,13 @@ package to.bitkit.repositories
33import android.content.Context
44import com.synonym.vssclient.VssItem
55import kotlinx.coroutines.flow.MutableStateFlow
6+ import kotlinx.serialization.json.jsonObject
67import org.junit.Before
78import org.junit.Test
89import org.mockito.kotlin.any
910import org.mockito.kotlin.anyOrNull
11+ import org.mockito.kotlin.argumentCaptor
12+ import org.mockito.kotlin.eq
1013import org.mockito.kotlin.mock
1114import org.mockito.kotlin.never
1215import org.mockito.kotlin.verify
@@ -23,11 +26,13 @@ import to.bitkit.data.entities.TransferEntity
2326import to.bitkit.di.json
2427import to.bitkit.models.BackupCategory
2528import to.bitkit.models.PrivatePaykitContactLinkBackupV1
29+ import to.bitkit.models.SettingsBackupV1
2630import to.bitkit.models.WalletBackupV1
2731import to.bitkit.services.LightningService
2832import to.bitkit.test.BaseUnitTest
2933import to.bitkit.utils.AppError
3034import javax.inject.Provider
35+ import kotlin.test.assertFalse
3136import kotlin.test.assertTrue
3237import kotlin.time.Clock
3338import kotlin.time.ExperimentalTime
@@ -65,6 +70,8 @@ class BackupRepoTest : BaseUnitTest() {
6570 whenever(settingsStore.data).thenReturn(settingsData)
6671 whenever { settingsStore.update(any()) }.thenReturn(Unit )
6772 whenever { vssBackupClient.getObject(any()) }.thenReturn(Result .success(null ))
73+ whenever { vssBackupClient.putObject(any(), any()) }
74+ .thenReturn(Result .success(VssItem (key = BackupCategory .SETTINGS .name, value = byteArrayOf(), version = 1 )))
6875 whenever { privatePaykitRepo.restoreBackup(anyOrNull()) }.thenReturn(Result .success(Unit ))
6976 whenever { privatePaykitAddressReservationRepo.restoreBackup(any()) }.thenReturn(Result .success(Unit ))
7077 whenever {
@@ -126,6 +133,27 @@ class BackupRepoTest : BaseUnitTest() {
126133 verify(privatePaykitRepo).setContactSharingCleanupPending(true )
127134 }
128135
136+ @Test
137+ fun `settings backup excludes local Paykit UI flag` () = test {
138+ settingsData.value = SettingsData (
139+ isPaykitEnabled = true ,
140+ sharesPublicPaykitEndpoints = true ,
141+ publicPaykitBolt11 = " lnbc1backup" ,
142+ )
143+ val dataCaptor = argumentCaptor<ByteArray >()
144+
145+ sut.triggerBackup(BackupCategory .SETTINGS )
146+
147+ verify(vssBackupClient).putObject(eq(BackupCategory .SETTINGS .name), dataCaptor.capture())
148+ val backupJson = json.parseToJsonElement(dataCaptor.firstValue.decodeToString()).jsonObject
149+ val settingsJson = backupJson.getValue(" settings" ).jsonObject
150+ val payload = json.decodeFromString<SettingsBackupV1 >(dataCaptor.firstValue.decodeToString())
151+ assertFalse(" isPaykitEnabled" in settingsJson)
152+ assertFalse(payload.settings.isPaykitEnabled)
153+ assertTrue(payload.settings.sharesPublicPaykitEndpoints)
154+ assertTrue(payload.settings.publicPaykitBolt11.isNotBlank())
155+ }
156+
129157 private fun stubWalletBackup (
130158 privatePaykitContactLinks : Map <String , PrivatePaykitContactLinkBackupV1 >? = null,
131159 ) {
0 commit comments