mirror of
https://github.com/greenart7c3/Amber.git
synced 2026-09-14 00:35:08 +00:00
Fix CI test failures and linter violations
This commit is contained in:
@@ -40,9 +40,7 @@ object SecureCryptoHelper {
|
||||
* here so blocking callers do not need a [kotlinx.coroutines.runBlocking]
|
||||
* bridge.
|
||||
*/
|
||||
fun encryptBlocking(plainText: String): String {
|
||||
return encryptWithKey(getOrCreateSecretKey(), plainText)
|
||||
}
|
||||
fun encryptBlocking(plainText: String): String = encryptWithKey(getOrCreateSecretKey(), plainText)
|
||||
|
||||
private fun encryptWithKey(key: SecretKey, plainText: String): String {
|
||||
val cipher = Cipher.getInstance(TRANSFORMATION)
|
||||
@@ -62,9 +60,7 @@ object SecureCryptoHelper {
|
||||
* Non-suspending equivalent of [decrypt]. See [encryptBlocking] for the
|
||||
* rationale.
|
||||
*/
|
||||
fun decryptBlocking(encryptedText: String): String {
|
||||
return decryptWithKey(getOrCreateSecretKey(), encryptedText)
|
||||
}
|
||||
fun decryptBlocking(encryptedText: String): String = decryptWithKey(getOrCreateSecretKey(), encryptedText)
|
||||
|
||||
private fun decryptWithKey(key: SecretKey, encryptedText: String): String {
|
||||
val data = Base64.decode(encryptedText, Base64.NO_WRAP)
|
||||
|
||||
@@ -75,7 +75,7 @@ import kotlinx.coroutines.CancellationException
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class EventNotificationConsumer(private val applicationContext: Context) {
|
||||
private fun saveLog(
|
||||
internal fun saveLog(
|
||||
text: String,
|
||||
url: String,
|
||||
npub: String? = null,
|
||||
|
||||
+25
-8
@@ -1,6 +1,7 @@
|
||||
package com.greenart7c3.nostrsigner.service
|
||||
|
||||
import com.greenart7c3.nostrsigner.Amber
|
||||
import com.greenart7c3.nostrsigner.AmberLog
|
||||
import com.greenart7c3.nostrsigner.LocalPreferences
|
||||
import com.greenart7c3.nostrsigner.database.AppDatabase
|
||||
import com.greenart7c3.nostrsigner.database.ApplicationDao
|
||||
@@ -9,6 +10,7 @@ import com.greenart7c3.nostrsigner.models.Account
|
||||
import com.vitorpamplona.quartz.nip01Core.core.Event
|
||||
import com.vitorpamplona.quartz.nip01Core.crypto.verify
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
||||
import com.vitorpamplona.quartz.nip01Core.tags.people.PTag
|
||||
import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers
|
||||
import com.vitorpamplona.quartz.nip40Expiration.ExpirationTag
|
||||
import com.vitorpamplona.quartz.nip46RemoteSigner.NostrConnectEvent
|
||||
@@ -41,7 +43,7 @@ class EventNotificationConsumerTest {
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
mockkStatic("com.vitorpamplona.quartz.nip01Core.crypto.EventKt")
|
||||
mockkStatic("com.vitorpamplona.quartz.nip01Core.crypto.EventExtKt")
|
||||
mockkStatic("com.vitorpamplona.quartz.nip01Core.tags.people.EventExtKt")
|
||||
mockkStatic("com.vitorpamplona.quartz.nip40Expiration.EventExtKt")
|
||||
|
||||
@@ -52,28 +54,42 @@ class EventNotificationConsumerTest {
|
||||
every { database.dao() } returns dao
|
||||
|
||||
amber = mockk(relaxed = true)
|
||||
every { amber.applicationIOScope } returns scope
|
||||
every { amber.getDatabase(any()) } returns database
|
||||
every { amber.dao(any()) } returns dao
|
||||
installAmberInstance(amber)
|
||||
|
||||
mockkObject(AmberLog)
|
||||
every { AmberLog.d(any(), any()) } returns Unit
|
||||
every { AmberLog.d(any(), any(), any()) } returns Unit
|
||||
|
||||
mockkObject(LocalPreferences)
|
||||
account = newTestAccount(scope)
|
||||
|
||||
consumer = spyk(EventNotificationConsumer(mockk(relaxed = true)))
|
||||
every { consumer["notificationManager"]() } returns mockk(relaxed = true)
|
||||
every { consumer.saveLog(any(), any(), any()) } returns Unit
|
||||
val nm = mockk<android.app.NotificationManager>(relaxed = true)
|
||||
every { nm.areNotificationsEnabled() } returns true
|
||||
every { consumer.notificationManager() } returns nm
|
||||
|
||||
mockkObject(NotificationUtils)
|
||||
every { NotificationUtils.getOrCreateBunkerChannel(any()) } returns mockk(relaxed = true)
|
||||
every { NotificationUtils.getOrCreateErrorsChannel(any()) } returns mockk(relaxed = true)
|
||||
}
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
unmockkObject(NotificationUtils)
|
||||
unmockkObject(AmberLog)
|
||||
unmockkObject(LocalPreferences)
|
||||
unmockkStatic("com.vitorpamplona.quartz.nip01Core.crypto.EventKt")
|
||||
unmockkStatic("com.vitorpamplona.quartz.nip01Core.crypto.EventExtKt")
|
||||
unmockkStatic("com.vitorpamplona.quartz.nip01Core.tags.people.EventExtKt")
|
||||
unmockkStatic("com.vitorpamplona.quartz.nip40Expiration.EventExtKt")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `consume rejects old events`() = runBlocking {
|
||||
val event = mockk<Event>()
|
||||
val event = mockk<Event>(relaxed = true)
|
||||
every { event.verify() } returns true
|
||||
every { event.kind } returns NostrConnectEvent.KIND
|
||||
every { event.createdAt } returns (TimeUtils.now() - TimeUtils.FIVE_MINUTES - 1)
|
||||
@@ -85,7 +101,7 @@ class EventNotificationConsumerTest {
|
||||
|
||||
@Test
|
||||
fun `consume rejects future events`() = runBlocking {
|
||||
val event = mockk<Event>()
|
||||
val event = mockk<Event>(relaxed = true)
|
||||
every { event.verify() } returns true
|
||||
every { event.kind } returns NostrConnectEvent.KIND
|
||||
every { event.createdAt } returns (TimeUtils.now() + TimeUtils.FIVE_MINUTES + 1)
|
||||
@@ -97,7 +113,7 @@ class EventNotificationConsumerTest {
|
||||
|
||||
@Test
|
||||
fun `consume rejects expired events`() = runBlocking {
|
||||
val event = mockk<Event>()
|
||||
val event = mockk<Event>(relaxed = true)
|
||||
every { event.verify() } returns true
|
||||
every { event.kind } returns NostrConnectEvent.KIND
|
||||
every { event.createdAt } returns TimeUtils.now()
|
||||
@@ -111,19 +127,20 @@ class EventNotificationConsumerTest {
|
||||
|
||||
@Test
|
||||
fun `consume rejects duplicate events persistently`() = runBlocking {
|
||||
val event = mockk<Event>()
|
||||
val event = mockk<Event>(relaxed = true)
|
||||
every { event.id } returns "event1"
|
||||
every { event.verify() } returns true
|
||||
every { event.kind } returns NostrConnectEvent.KIND
|
||||
every { event.createdAt } returns TimeUtils.now()
|
||||
every { event.tags } returns arrayOf(arrayOf("p", account.hexKey))
|
||||
every { event.taggedUsers() } returns listOf(PTag(account.hexKey))
|
||||
|
||||
coEvery { LocalPreferences.loadFromEncryptedStorageSync(any(), any()) } returns account
|
||||
coEvery { bunkerEventDao.exists("event1") } returns true
|
||||
|
||||
consumer.consume(event, NormalizedRelayUrl("wss://relay.com"))
|
||||
|
||||
coVerify(exactly = 1) { bunkerEventDao.exists("event1") }
|
||||
coVerify(exactly = 1) { bunkerEventDao.exists(any()) }
|
||||
coVerify(exactly = 0) { bunkerEventDao.insert(any()) }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user