Add 2 new tests (PRIVMSG & LIST)

This commit is contained in:
2026-09-12 20:38:40 +01:00
parent d5397f99a3
commit 9b5df85bf2
@@ -2,7 +2,6 @@ package com.shr4pnel.ferretirc
import com.shr4pnel.ferretirc.net.messages.ServerMessage
import io.github.oshai.kotlinlogging.KotlinLogging
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withTimeoutOrNull
@@ -17,14 +16,16 @@ import kotlin.test.assertNotNull
import kotlin.time.Duration.Companion.seconds
class IrcClientTest {
private val logger = KotlinLogging.logger {}
companion object {
lateinit var processes: MutableList<Process>
val client = IrcClient("localhost", 6667)
private val logger = KotlinLogging.logger("IrcClientTest")
private val logger = KotlinLogging.logger {}
@JvmStatic
@BeforeAll
fun setup() {
fun setup() = runBlocking {
val logFile = File("src/test/resources/logs/ngircd.log")
val ngircdConfigPath = javaClass.classLoader.getResource("ngircd.conf")!!.path
logFile.createNewFile()
@@ -38,13 +39,8 @@ class IrcClientTest {
ProcessBuilder("ts", "-s", "%H:%M:%.S").redirectOutput(logFile)
)
)
client.scope.launch {
client.connect()
client.register("shr4p", "password")
}
runBlocking {
delay(0.5.seconds)
}
client.connect()
client.register("shr4p", "Tyler D", "password")
}
@JvmStatic
@@ -93,7 +89,23 @@ class IrcClientTest {
@Test
fun listChannels() = runBlocking {
client.queueMessage(Message.List())
delay(1.seconds)
val channels = client.server.fetchChannels()
assert(channels.isNotEmpty())
client.queueMessage(Message.Join(channels.first()))
}
@Test
fun messageLands() = runBlocking {
val guestUser = IrcClient("localhost", 6667, false)
guestUser.connect()
guestUser.register("guest", "guest", "pass")
val channels = client.server.fetchChannels()
val message = Message.PrivMsg(channels.first(), "bring me to life")
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())
guestUser.close()
}
}