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
|
package net.mamoe.mirai.internal.network.impl.netty
|
||||||
|
|
||||||
import kotlinx.coroutines.awaitCancellation
|
import kotlinx.coroutines.awaitCancellation
|
||||||
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.isActive
|
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.AbstractNettyNHTest
|
||||||
|
import net.mamoe.mirai.internal.network.framework.TestNettyNH
|
||||||
import net.mamoe.mirai.internal.network.framework.setSsoProcessor
|
import net.mamoe.mirai.internal.network.framework.setSsoProcessor
|
||||||
import net.mamoe.mirai.internal.network.handler.NetworkHandler
|
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.KeepAliveNetworkHandlerSelector
|
||||||
import net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler
|
import net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler
|
||||||
import net.mamoe.mirai.internal.network.handler.selectorLogger
|
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.internal.test.runBlockingUnit
|
||||||
import net.mamoe.mirai.network.CustomLoginFailedException
|
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 org.junit.jupiter.api.Test
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import kotlin.test.assertFailsWith
|
import kotlin.test.assertFailsWith
|
||||||
import kotlin.test.assertFalse
|
import kotlin.test.assertFalse
|
||||||
|
|
||||||
internal class NettyBotNormalLoginTest : AbstractNettyNHTest() {
|
internal class NettyBotNormalLoginTest : AbstractNettyNHTest() {
|
||||||
|
init {
|
||||||
|
overrideComponents[BotOfflineEventMonitor] = BotOfflineEventMonitorImpl()
|
||||||
|
}
|
||||||
|
|
||||||
val selector = KeepAliveNetworkHandlerSelector(selectorLogger) {
|
val selector = KeepAliveNetworkHandlerSelector(selectorLogger) {
|
||||||
super.factory.create(createContext(), createAddress())
|
super.factory.create(createContext(), createAddress())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val network: TestNettyNH
|
||||||
|
get() = bot.network.cast<SelectorNetworkHandler<*>>().selector.getCurrentInstanceOrCreate().cast()
|
||||||
|
|
||||||
override fun createHandler(): NetworkHandler {
|
override fun createHandler(): NetworkHandler {
|
||||||
return SelectorNetworkHandler(selector)
|
return SelectorNetworkHandler(selector)
|
||||||
}
|
}
|
||||||
|
|
||||||
class CusLoginException(message: String?) : CustomLoginFailedException(true, message)
|
class CusLoginException(message: String?) : CustomLoginFailedException(true, message)
|
||||||
|
|
||||||
|
@AfterEach
|
||||||
|
fun `close bot`() = runBlockingUnit {
|
||||||
|
bot.logger.info("[TEST UNIT] Releasing bot....")
|
||||||
|
bot.closeAndJoin()
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `test login fail`() = runBlockingUnit {
|
fun `test login fail`() = runBlockingUnit {
|
||||||
setSsoProcessor { throw CusLoginException("A") }
|
setSsoProcessor { throw CusLoginException("A") }
|
||||||
@ -55,4 +75,16 @@ internal class NettyBotNormalLoginTest : AbstractNettyNHTest() {
|
|||||||
}
|
}
|
||||||
bot.login()
|
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