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 io.github.oshai.kotlinlogging.KotlinLogging
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.AfterAll
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
@@ -43,7 +42,9 @@ class IrcClientTest {
client.register("shr4p", "Tyler Fullname", "password")
guestUser.connect()
guestUser.register("guest", "guest", "pass")
client.server
val default = client.server.fetchChannels().first()
client.join(default)
guestUser.join(default)
}
@JvmStatic
@@ -59,38 +60,37 @@ class IrcClientTest {
@Test
fun pingGetsPong() =
runTest {
runBlocking {
val token = "ACK"
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")
}
@Test
fun oper() =
runTest {
client.queueMessage(Message.Oper("shr4p", "password"))
val mode = client.waitForNext<ServerMessage.Mode>()
runBlocking {
val mode = client.queueMessageAndWaitForNext<ServerMessage.Mode>(Message.Oper("shr4p", "password"))
assertEquals("shr4p", mode.operatorName, "Received incorrect operator name in MODE")
assertEquals("+o", mode.pMask, "Received unexpected mask in MODE")
logger.info { "Received MODE with mask ${mode.pMask}" }
}
@Test
fun listChannels() =
runTest {
val channels = client.server.fetchChannels()
assert(channels.isNotEmpty())
client.queueMessage(Message.Join(channels.first()))
fun listChannels() = runBlocking {
assert(
client.server.channels.value.isNotEmpty(),
)
}
@Test
fun messageLands() =
runTest {
val channels = client.server.fetchChannels()
runBlocking {
val channels = client.server.channels.value
val message = Message.PrivMsg(channels.first(), "bring me to life")
val receivedMessage = client.waitForNextMessageAfterAction<ServerMessage.PrivMsg> {
guestUser.queueMessage(message)
val receivedMessage = client.waitForNext<ServerMessage.PrivMsg>()
}
logger.debug { "Message: $message, Received: $receivedMessage" }
assertEquals(message.message, receivedMessage.message)
assertEquals(message.target.chanName, receivedMessage.targets.first())
@@ -98,8 +98,8 @@ class IrcClientTest {
@Test
fun manyMessagesLand() =
runTest {
val channels = client.server.fetchChannels()
runBlocking {
val channels = client.server.channels.value
val channel = channels.first()
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 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)
}
for (i in 0..<max) assertEquals(messages[i].message, receivedMessages[i].message)