Use new Server.kt listeners in test

This commit is contained in:
2026-10-05 12:47:53 +01:00
parent d3deed36db
commit 06e0ff92de
@@ -3,7 +3,6 @@ package com.shr4pnel.ferretirc
import com.shr4pnel.ferretirc.net.messages.ServerMessage import com.shr4pnel.ferretirc.net.messages.ServerMessage
import io.github.oshai.kotlinlogging.KotlinLogging import io.github.oshai.kotlinlogging.KotlinLogging
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.AfterAll
import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
@@ -43,7 +42,9 @@ class IrcClientTest {
client.register("shr4p", "Tyler Fullname", "password") client.register("shr4p", "Tyler Fullname", "password")
guestUser.connect() guestUser.connect()
guestUser.register("guest", "guest", "pass") guestUser.register("guest", "guest", "pass")
client.server val default = client.server.fetchChannels().first()
client.join(default)
guestUser.join(default)
} }
@JvmStatic @JvmStatic
@@ -59,38 +60,37 @@ class IrcClientTest {
@Test @Test
fun pingGetsPong() = fun pingGetsPong() =
runTest { runBlocking {
val token = "ACK" val token = "ACK"
val msg = Message.Ping(token) val msg = Message.Ping(token)
val pong = client.queueAndWaitForNext<ServerMessage.Pong>(msg) val pong = client.queueMessageAndWaitForNext<ServerMessage.Pong>(msg)
assertEquals(token, pong.token, "Token in PING did not match PONG") assertEquals(token, pong.token, "Token in PING did not match PONG")
} }
@Test @Test
fun oper() = fun oper() =
runTest { runBlocking {
client.queueMessage(Message.Oper("shr4p", "password")) val mode = client.queueMessageAndWaitForNext<ServerMessage.Mode>(Message.Oper("shr4p", "password"))
val mode = client.waitForNext<ServerMessage.Mode>()
assertEquals("shr4p", mode.operatorName, "Received incorrect operator name in MODE") assertEquals("shr4p", mode.operatorName, "Received incorrect operator name in MODE")
assertEquals("+o", mode.pMask, "Received unexpected mask in MODE") assertEquals("+o", mode.pMask, "Received unexpected mask in MODE")
logger.info { "Received MODE with mask ${mode.pMask}" } logger.info { "Received MODE with mask ${mode.pMask}" }
} }
@Test @Test
fun listChannels() = fun listChannels() = runBlocking {
runTest { assert(
val channels = client.server.fetchChannels() client.server.channels.value.isNotEmpty(),
assert(channels.isNotEmpty()) )
client.queueMessage(Message.Join(channels.first())) }
}
@Test @Test
fun messageLands() = fun messageLands() =
runTest { runBlocking {
val channels = client.server.fetchChannels() val channels = client.server.channels.value
val message = Message.PrivMsg(channels.first(), "bring me to life") val message = Message.PrivMsg(channels.first(), "bring me to life")
guestUser.queueMessage(message) val receivedMessage = client.waitForNextMessageAfterAction<ServerMessage.PrivMsg> {
val receivedMessage = client.waitForNext<ServerMessage.PrivMsg>() guestUser.queueMessage(message)
}
logger.debug { "Message: $message, Received: $receivedMessage" } logger.debug { "Message: $message, Received: $receivedMessage" }
assertEquals(message.message, receivedMessage.message) assertEquals(message.message, receivedMessage.message)
assertEquals(message.target.chanName, receivedMessage.targets.first()) assertEquals(message.target.chanName, receivedMessage.targets.first())
@@ -98,8 +98,8 @@ class IrcClientTest {
@Test @Test
fun manyMessagesLand() = fun manyMessagesLand() =
runTest { runBlocking {
val channels = client.server.fetchChannels() val channels = client.server.channels.value
val channel = channels.first() val channel = channels.first()
val max = 100 val max = 100
@@ -109,7 +109,9 @@ class IrcClientTest {
for (i in 1..max) messages.add(Message.PrivMsg(channel, "$i: bring me to life")) for (i in 1..max) messages.add(Message.PrivMsg(channel, "$i: bring me to life"))
for (i in 0..<max) { for (i in 0..<max) {
val msg = client.waitForNextAfterAction<ServerMessage.PrivMsg> { guestUser.queueMessage(messages[i]) } val msg = client.waitForNextMessageAfterAction<ServerMessage.PrivMsg> {
guestUser.queueMessage(messages[i])
}
receivedMessages.add(msg) receivedMessages.add(msg)
} }
for (i in 0..<max) assertEquals(messages[i].message, receivedMessages[i].message) for (i in 0..<max) assertEquals(messages[i].message, receivedMessages[i].message)