Skip to content

Commit 38162db

Browse files
committed
[core] Add test rethrow exception caught during Bot_login, helps #2338
1 parent 2accabe commit 38162db

File tree

2 files changed

+55
-1
lines changed

2 files changed

+55
-1
lines changed

mirai-core/src/commonTest/kotlin/network/handler/SelectorRecoveryTest.kt mirai-core/src/commonTest/kotlin/network/handler/SelectorHeartbeatRecoveryTest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import kotlin.test.*
2929
/**
3030
* Test whether the selector can recover the connection after first successful login.
3131
*/
32-
internal class SelectorRecoveryTest : AbstractCommonNHTestWithSelector() {
32+
internal class SelectorHeartbeatRecoveryTest : AbstractCommonNHTestWithSelector() {
3333
// @BeforeTest
3434
// fun beforeTest(info: TestInfo) {
3535
// println("=".repeat(30) + "BEGIN: ${info.displayName}" + "=".repeat(30))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* Copyright 2019-2022 Mamoe Technologies and contributors.
3+
*
4+
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
5+
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
6+
*
7+
* https://github.com/mamoe/mirai/blob/dev/LICENSE
8+
*/
9+
10+
package net.mamoe.mirai.internal.network.handler
11+
12+
import kotlinx.coroutines.test.runTest
13+
import net.mamoe.mirai.internal.network.components.SsoProcessor
14+
import net.mamoe.mirai.internal.network.framework.AbstractRealNetworkHandlerTest
15+
import net.mamoe.mirai.internal.network.framework.TestCommonNetworkHandler
16+
import net.mamoe.mirai.internal.network.framework.components.TestSsoProcessor
17+
import net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler
18+
import net.mamoe.mirai.internal.network.protocol.packet.login.WtLogin
19+
import kotlin.test.Test
20+
import kotlin.test.assertEquals
21+
import kotlin.test.assertFailsWith
22+
23+
internal class SelectorLoginRecoveryTest :
24+
AbstractRealNetworkHandlerTest<SelectorNetworkHandler<TestCommonNetworkHandler>>() {
25+
26+
// does not use selector
27+
override val factory: NetworkHandlerFactory<SelectorNetworkHandler<TestCommonNetworkHandler>> =
28+
NetworkHandlerFactory<SelectorNetworkHandler<TestCommonNetworkHandler>> { context, address ->
29+
SelectorNetworkHandler(TestSelector {
30+
object : TestCommonNetworkHandler(bot, context, address) {
31+
}
32+
})
33+
}
34+
35+
/**
36+
* 登录时遇到未知错误, [WtLogin] 会抛 [IllegalStateException] (即抛不可挽救的异常),
37+
* selector 应该停止登录, 不要重试, 重新抛出捕获的异常.
38+
*/
39+
@Test
40+
fun `rethrow exception caught during Bot_login`() = runTest {
41+
val exceptionMessage = "Login failed!"
42+
setComponent(SsoProcessor, object : TestSsoProcessor(bot) {
43+
override suspend fun login(handler: NetworkHandler) {
44+
throw IllegalStateException(exceptionMessage)
45+
}
46+
})
47+
48+
assertFailsWith<IllegalStateException> {
49+
bot.login()
50+
}.let { e ->
51+
assertEquals(exceptionMessage, e.message)
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)