mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-03 16:53:48 +08:00
Add testing
This commit is contained in:
parent
6ab2d7e4c0
commit
b74b6da8a3
@ -10,31 +10,51 @@
|
||||
package net.mamoe.mirai.internal.network.impl.netty
|
||||
|
||||
import kotlinx.coroutines.awaitCancellation
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.isActive
|
||||
import net.mamoe.mirai.internal.network.components.BotOfflineEventMonitor
|
||||
import net.mamoe.mirai.internal.network.components.BotOfflineEventMonitorImpl
|
||||
import net.mamoe.mirai.internal.network.framework.AbstractNettyNHTest
|
||||
import net.mamoe.mirai.internal.network.framework.TestNettyNH
|
||||
import net.mamoe.mirai.internal.network.framework.setSsoProcessor
|
||||
import net.mamoe.mirai.internal.network.handler.NetworkHandler
|
||||
import net.mamoe.mirai.internal.network.handler.selector.KeepAliveNetworkHandlerSelector
|
||||
import net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler
|
||||
import net.mamoe.mirai.internal.network.handler.selectorLogger
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.login.StatSvc
|
||||
import net.mamoe.mirai.internal.test.runBlockingUnit
|
||||
import net.mamoe.mirai.network.CustomLoginFailedException
|
||||
import net.mamoe.mirai.utils.cast
|
||||
import org.junit.jupiter.api.AfterEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import java.io.IOException
|
||||
import kotlin.test.assertFailsWith
|
||||
import kotlin.test.assertFalse
|
||||
|
||||
internal class NettyBotNormalLoginTest : AbstractNettyNHTest() {
|
||||
init {
|
||||
overrideComponents[BotOfflineEventMonitor] = BotOfflineEventMonitorImpl()
|
||||
}
|
||||
|
||||
val selector = KeepAliveNetworkHandlerSelector(selectorLogger) {
|
||||
super.factory.create(createContext(), createAddress())
|
||||
}
|
||||
|
||||
override val network: TestNettyNH
|
||||
get() = bot.network.cast<SelectorNetworkHandler<*>>().selector.getCurrentInstanceOrCreate().cast()
|
||||
|
||||
override fun createHandler(): NetworkHandler {
|
||||
return SelectorNetworkHandler(selector)
|
||||
}
|
||||
|
||||
class CusLoginException(message: String?) : CustomLoginFailedException(true, message)
|
||||
|
||||
@AfterEach
|
||||
fun `close bot`() = runBlockingUnit {
|
||||
bot.logger.info("[TEST UNIT] Releasing bot....")
|
||||
bot.closeAndJoin()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test login fail`() = runBlockingUnit {
|
||||
setSsoProcessor { throw CusLoginException("A") }
|
||||
@ -55,4 +75,16 @@ internal class NettyBotNormalLoginTest : AbstractNettyNHTest() {
|
||||
}
|
||||
bot.login()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test resume after MsfOffline received`() = runBlockingUnit {
|
||||
bot.login()
|
||||
bot.network.close(StatSvc.ReqMSFOffline.MsfOfflineToken(0, 0, 0))
|
||||
|
||||
eventDispatcher.joinBroadcast()
|
||||
delay(1000L) // auto resume in BotOfflineEventMonitor
|
||||
eventDispatcher.joinBroadcast()
|
||||
|
||||
assertState(NetworkHandler.State.OK)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user