1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-3628 Notifications | Tests (#2437)

This commit is contained in:
Konstantin Ivanov 2025-05-22 15:06:41 +02:00 committed by GitHub
parent 03e251609d
commit cfa3f52b41
Signed by: github
GPG key ID: B5690EEEBB952194

View file

@ -0,0 +1,123 @@
package com.anytypeio.anytype.device
import android.os.Build
import android.util.Base64
import com.anytypeio.anytype.core_models.DecryptedPushContent
import com.anytypeio.anytype.presentation.notifications.DecryptionPushContentService
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.verifyNoInteractions
import org.mockito.kotlin.whenever
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.P])
class DefaultPushMessageProcessorTest {
private lateinit var decryptionService: DecryptionPushContentService
private lateinit var notificationBuilder: NotificationBuilder
private lateinit var processor: DefaultPushMessageProcessor
@Before
fun setup() {
decryptionService = mock()
notificationBuilder = mock()
processor = DefaultPushMessageProcessor(
decryptionService = decryptionService,
notificationBuilder = notificationBuilder
)
}
@Test
fun `process should return false when payload is missing`() {
// Given
val messageData = mapOf(
"x-any-key-id" to "test-key-id"
)
// When
val result = processor.process(messageData)
// Then
assertFalse(result)
verifyNoInteractions(decryptionService)
verifyNoInteractions(notificationBuilder)
}
@Test
fun `process should return false when key id is missing`() {
// Given
val messageData = mapOf(
"x-any-payload" to "test-payload"
)
// When
val result = processor.process(messageData)
// Then
assertFalse(result)
verifyNoInteractions(decryptionService)
verifyNoInteractions(notificationBuilder)
}
@Test
fun `process should return false when decryption fails`() {
// Given
val messageData = mapOf(
"x-any-payload" to "test-payload",
"x-any-key-id" to "test-key-id"
)
whenever(decryptionService.decrypt(any(), any())).thenReturn(null)
// When
val result = processor.process(messageData)
// Then
assertFalse(result)
verifyNoInteractions(notificationBuilder)
}
@Test
fun `process should return true and show notification when decryption succeeds`() {
// Given
val payload = "test-payload"
val keyId = "test-key-id"
val messageData = mapOf(
"x-any-payload" to payload,
"x-any-key-id" to keyId
)
val decryptedContent = DecryptedPushContent(
spaceId = "test-space-id",
type = 1,
senderId = "test-sender-id",
newMessage = DecryptedPushContent.Message(
chatId = "test-chat-id",
msgId = "test-msg-id",
text = "Test message",
spaceName = "Test Space",
senderName = "Test Sender"
)
)
whenever(decryptionService.decrypt(Base64.decode(payload, Base64.DEFAULT), keyId))
.thenReturn(decryptedContent)
// When
val result = processor.process(messageData)
// Then
assertTrue(result)
verify(notificationBuilder).buildAndNotify(
message = decryptedContent.newMessage,
spaceId = decryptedContent.spaceId
)
}
}