diff --git a/src/test/kotlin/com/shr4pnel/ferretirc/IrcClientTest.kt b/src/test/kotlin/com/shr4pnel/ferretirc/IrcClientTest.kt index 3d6b7f2..8b74f14 100644 --- a/src/test/kotlin/com/shr4pnel/ferretirc/IrcClientTest.kt +++ b/src/test/kotlin/com/shr4pnel/ferretirc/IrcClientTest.kt @@ -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 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() + logger.debug { "Message: $message, Received: $receivedMessage" } + assertEquals(message.message, receivedMessage.message) + assertEquals(message.target.chanName, receivedMessage.targets.first()) + guestUser.close() } }