Use new Server.kt listeners in test
This commit is contained in:
@@ -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")
|
||||
guestUser.queueMessage(message)
|
||||
val receivedMessage = client.waitForNext<ServerMessage.PrivMsg>()
|
||||
val receivedMessage = client.waitForNextMessageAfterAction<ServerMessage.PrivMsg> {
|
||||
guestUser.queueMessage(message)
|
||||
}
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user