commit 66e2c61f523be343df1c190c139e7f066dd772f4
parent 2ecf3f5679331a4a1f10550471743f43b776a7a1
Author: t3sserakt <t3sserakt@posteo.de>
Date: Tue, 4 Nov 2025 17:20:33 +0100
implemented mock test with
Diffstat:
4 files changed, 214 insertions(+), 15 deletions(-)
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/model/ChatContext.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/model/ChatContext.kt
@@ -29,8 +29,9 @@ import kotlinx.parcelize.Parcelize
@Parcelize
data class ChatContext (
- val chatContextType: ChatContextType,
+ val chatContextType: ChatContextType?,
var userPointer: String?,
val isGroup: Boolean,
- val isPlatform: Boolean): Parcelable
+ val isPlatform: Boolean
+): Parcelable
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/mock/GnunetChatMock.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/mock/GnunetChatMock.kt
@@ -44,6 +44,17 @@ class GnunetChatMock : GnunetChat {
private lateinit var messageCallback: (ChatContext, ChatMessage) -> Unit
private var uuidCounter: Long = 0
+ var lastDestroyedUri: ChatUri? = null
+ private set
+
+ var lastSetUserPointer: Pair<ChatContact?, String?>? = null
+ private set
+ var lastSetGroupPointer: Pair<ChatGroup?, String?>? = null
+ private set
+
+ var lastSetMessageForGroupContact: Triple<ChatGroup?, ChatContact?, ChatMessage?>? = null
+ private set
+
override suspend fun awaitReady(handle: ChatHandle) {
return
}
@@ -146,11 +157,14 @@ class GnunetChatMock : GnunetChat {
}
override fun parseUri(uri: String): ChatUri {
- TODO("Not yet implemented")
+ // Return a fake, hard-coded ChatUri.
+ // We'll just put the URI we received inside it.
+ return ChatUri(uri)
}
override fun destroyUri(uri: ChatUri) {
- TODO("Not yet implemented")
+ // This is our "side effect" that the test can check
+ lastDestroyedUri = uri
}
override fun inviteContactToGroup(group: ChatGroup, contact: ChatContact) {
@@ -179,19 +193,30 @@ class GnunetChatMock : GnunetChat {
}
override fun getMessageForGroupContact(group: ChatGroup, contact: ChatContact): ChatMessage {
- TODO("Not yet implemented")
+ // Return a fixed, hard-coded ChatMessage for testing
+ return ChatMessage(
+ ChatContext(null, null, false, false),
+ "fake-message-for-group",
+ 12345L,
+ contact,
+ MessageKind.TEXT,
+ null
+ )
}
override fun getMessageKind(message: ChatMessage): MessageKind {
- TODO("Not yet implemented")
+ // Always return TEXT for our mock
+ return MessageKind.TEXT
}
override fun isMessageRecent(message: ChatMessage): GnunetReturnValue {
- TODO("Not yet implemented")
+ // Always return OK for our mock
+ return GnunetReturnValue.OK
}
override fun getMessageTimestamp(message: ChatMessage): Long {
- TODO("Not yet implemented")
+ // Return a fixed, hard-coded timestamp for testing
+ return 123456789L
}
override fun setMessageForGroupContact(
@@ -199,7 +224,7 @@ class GnunetChatMock : GnunetChat {
contact: ChatContact,
message: ChatMessage
) {
- TODO("Not yet implemented")
+ lastSetMessageForGroupContact = Triple(group, contact, message)
}
override fun iterateContacts(handle: ChatHandle, callback: (ChatContact) -> Int) {
@@ -268,19 +293,21 @@ class GnunetChatMock : GnunetChat {
}
override fun getContactUserPointer(chatContact: ChatContact): String {
- TODO("Not yet implemented")
+ // Return a fixed, hard-coded string for testing
+ return "fake-user-pointer-123"
}
override fun setContactUserPointer(chatContact: ChatContact, userPointer: String) {
- TODO("Not yet implemented")
+ lastSetUserPointer = Pair(chatContact, userPointer)
}
override fun getGroupUserPointer(chatGroup: ChatGroup): String {
- TODO("Not yet implemented")
+ // Return a fixed, hard-coded string for testing
+ return "fake-group-pointer-789"
}
override fun setGroupUserPointer(chatGroup: ChatGroup, userPointer: String) {
- println("set group name")
+ lastSetGroupPointer = Pair(chatGroup, userPointer)
}
override fun sendText(chatContext: ChatContext, text: String) {
@@ -348,4 +375,4 @@ class GnunetChatMock : GnunetChat {
override fun unshareAttributes(handle: ChatHandle, contact: ChatContact, key: String) {
println("unshare ${key} for contact ${contact.name}")
}
-}
-\ No newline at end of file
+}
diff --git a/GNUnetMessenger/app/src/test/java/org/gnunet/gnunetmessenger/logic/MessageValidatorTest.kt b/GNUnetMessenger/app/src/test/java/org/gnunet/gnunetmessenger/logic/MessageValidatorTest.kt
@@ -20,4 +20,19 @@ class MessageValidatorTest {
// We expect 'true' because the message is valid
assertEquals(true, result)
}
+
+ // Test case 2: Check an empty message
+ @Test
+ fun `isValid returns false for an empty message`() {
+ // Arrange
+ val validator = MessageValidator()
+ val message = "" // Empty string
+
+ // Act
+ val result = validator.isValid(message)
+
+ // Assert
+ // This time, we expect the result to be 'false'
+ assertEquals(false, result)
+ }
}
\ No newline at end of file
diff --git a/GNUnetMessenger/app/src/test/java/org/gnunet/gnunetmessenger/service/mock/GnunetChatMockTest.kt b/GNUnetMessenger/app/src/test/java/org/gnunet/gnunetmessenger/service/mock/GnunetChatMockTest.kt
@@ -0,0 +1,156 @@
+package org.gnunet.gnunetmessenger.service.mock
+
+import org.gnunet.gnunetmessenger.model.ChatHandle
+import org.gnunet.gnunetmessenger.model.ChatContext
+import org.gnunet.gnunetmessenger.model.ChatMessage
+import org.gnunet.gnunetmessenger.model.MessageKind
+import org.gnunet.gnunetmessenger.model.ChatUri
+import org.gnunet.gnunetmessenger.model.GnunetReturnValue
+import org.gnunet.gnunetmessenger.model.ChatContact
+import org.gnunet.gnunetmessenger.model.ChatGroup
+import org.junit.Assert.assertEquals
+import org.junit.Test
+
+class GnunetChatMockTest {
+
+ @Test
+ fun `iterateAccounts returns the hardcoded account names`() {
+ val mock = GnunetChatMock()
+
+ val fakeHandle = ChatHandle(1)
+
+ val resultingNames = mutableListOf<String>()
+
+ mock.iterateAccounts(fakeHandle) { account ->
+ resultingNames.add(account.name)
+ }
+
+ val expectedNames = listOf("Alice", "Bob", "Charlie")
+
+ assertEquals(3, resultingNames.size)
+ assertEquals(expectedNames, resultingNames)
+ }
+
+ @Test
+ fun `getMessageTimestamp returns the hardcoded timestamp`() {
+ val mock = GnunetChatMock()
+
+ val fakeMessage = ChatMessage(ChatContext(null, null, false, false), "", 0, null, MessageKind.TEXT, null)
+ val resultTimestamp = mock.getMessageTimestamp(fakeMessage)
+
+ assertEquals(123456789L, resultTimestamp)
+ }
+
+ @Test
+ fun `parseUri returns a ChatUri object with the correct uri`() {
+ val mock = GnunetChatMock()
+ val testUriString = "gnunet://example-uri/12345"
+
+ val resultChatUri = mock.parseUri(testUriString)
+
+ assertEquals(testUriString, resultChatUri.error)
+ }
+
+ @Test
+ fun `isMessageRecent always returns OK`() {
+ val mock = GnunetChatMock()
+
+ val fakeMessage = ChatMessage(ChatContext(null, null, false, false), "", 0, null, MessageKind.TEXT, null)
+
+ val result = mock.isMessageRecent(fakeMessage)
+
+ assertEquals(GnunetReturnValue.OK, result)
+ }
+
+ @Test
+ fun `getMessageKind always returns TEXT`() {
+ val mock = GnunetChatMock()
+
+ val fakeMessage = ChatMessage(ChatContext(null, null, false, false), "", 0, null, MessageKind.TEXT, null)
+
+ val result = mock.getMessageKind(fakeMessage)
+
+ assertEquals(MessageKind.TEXT, result)
+ }
+
+ @Test
+ fun `destroyUri sets the lastDestroyedUri property`() {
+ val mock = GnunetChatMock()
+ val fakeUri = ChatUri("gnunet://test-uri-to-destroy")
+
+ mock.destroyUri(fakeUri)
+
+ assertEquals(fakeUri, mock.lastDestroyedUri)
+ }
+
+ @Test
+ fun `getContactUserPointer returns a hardcoded string`() {
+ val mock = GnunetChatMock()
+
+ val fakeContact = ChatContact(ChatContext(null, null, false, false), "")
+
+ val result = mock.getContactUserPointer(fakeContact)
+
+ assertEquals("fake-user-pointer-123", result)
+ }
+
+ @Test
+ fun `setContactUserPointer sets the lastSetUserPointer property`() {
+ val mock = GnunetChatMock()
+ val fakeContact = ChatContact(ChatContext(null, null, false, false), "test-contact")
+ val fakePointer = "test-pointer-456"
+
+ mock.setContactUserPointer(fakeContact, fakePointer)
+
+ assertEquals(Pair(fakeContact, fakePointer), mock.lastSetUserPointer)
+ }
+
+ @Test
+ fun `getGroupUserPointer returns a hardcoded string`() {
+ val mock = GnunetChatMock()
+
+ val fakeGroup = ChatGroup(ChatContext(null, null, false, false), "")
+
+ val result = mock.getGroupUserPointer(fakeGroup)
+
+ assertEquals("fake-group-pointer-789", result)
+ }
+
+ @Test
+ fun `setGroupUserPointer sets the lastSetGroupPointer property`() {
+ val mock = GnunetChatMock()
+ val fakeGroup = ChatGroup(ChatContext(null, null, false, false), "test-group")
+ val fakePointer = "test-group-pointer-xyz"
+
+ mock.setGroupUserPointer(fakeGroup, fakePointer)
+
+ assertEquals(Pair(fakeGroup, fakePointer), mock.lastSetGroupPointer)
+ }
+
+ @Test
+ fun `getMessageForGroupContact returns a hardcoded chat message`() {
+
+ val mock = GnunetChatMock()
+ val fakeGroup = ChatGroup(ChatContext(null, null, false, false), "test-group")
+ val fakeContact = ChatContact(ChatContext(null, null, false, false), "test-contact")
+
+ val resultMessage = mock.getMessageForGroupContact(fakeGroup, fakeContact)
+
+ assertEquals("fake-message-for-group", resultMessage.text)
+ assertEquals(MessageKind.TEXT, resultMessage.kind)
+ assertEquals(fakeContact, resultMessage.sender) // Check it attached the contact
+ }
+
+ @Test
+ fun `setMessageForGroupContact sets the lastSetMessageForGroupContact property`() {
+ val mock = GnunetChatMock()
+ val fakeGroup = ChatGroup(ChatContext(null, null, false, false), "test-group")
+ val fakeContact = ChatContact(ChatContext(null, null, false, false), "test-contact")
+ val fakeMessage = ChatMessage(ChatContext(null, null, false, false), "test-msg", 0, null, MessageKind.TEXT, null)
+
+
+ mock.setMessageForGroupContact(fakeGroup, fakeContact, fakeMessage)
+
+ assertEquals(Triple(fakeGroup, fakeContact, fakeMessage), mock.lastSetMessageForGroupContact)
+ }
+}
+\ No newline at end of file