Add operator test

This commit is contained in:
2026-08-14 18:42:21 +01:00
parent 06d89db5b5
commit f7943e4289
@@ -5,7 +5,6 @@ import io.github.oshai.kotlinlogging.KotlinLogging
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withTimeout
import kotlinx.coroutines.withTimeoutOrNull import kotlinx.coroutines.withTimeoutOrNull
import com.shr4pnel.ferretirc.net.messages.ClientMessage as Message import com.shr4pnel.ferretirc.net.messages.ClientMessage as Message
import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.AfterAll
@@ -15,8 +14,6 @@ import java.io.File
import java.lang.ProcessBuilder import java.lang.ProcessBuilder
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.test.assertNotNull import kotlin.test.assertNotNull
import kotlin.time.Duration.Companion.microseconds
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds
class IrcClientTest { class IrcClientTest {
@@ -52,7 +49,12 @@ class IrcClientTest {
@JvmStatic @JvmStatic
@AfterAll @AfterAll
fun shutdown() = processes.forEach { it.destroy() } fun shutdown() = runBlocking {
logger.info { "Closing server." }
client.queueMessage(Message.Die())
client.waitForNext<ServerMessage.Notice>()
processes.forEach { it.destroy() }
}
} }
@Test @Test
@@ -74,5 +76,18 @@ class IrcClientTest {
} }
assertNotNull(pong, "Reached timeout while waiting for PONG") assertNotNull(pong, "Reached timeout while waiting for PONG")
assertEquals(token, pong.token, "Token in PING did not match PONG") assertEquals(token, pong.token, "Token in PING did not match PONG")
logger.info { "Received PING" }
}
@Test
fun oper() = runBlocking {
client.queueMessage(Message.Oper("shr4p", "password"))
val mode = withTimeoutOrNull(1.seconds) {
client.waitForNext<ServerMessage.Mode>()
}
assertNotNull(mode, "Timed out waiting for OPER MODE response")
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}" }
} }
} }