Files
Telegram-Panel/tests/TelegramPanel.Web.Tests/TelegramAccountWasteJudgeTests.cs
2026-08-09 13:38:07 +08:00

102 lines
3.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using TelegramPanel.Core.Models;
using Xunit;
namespace TelegramPanel.Web.Tests;
public sealed class TelegramAccountWasteJudgeTests
{
[Theory]
[InlineData("连接失败")]
[InlineData("连接失败A task was canceled.")]
[InlineData("请求超时")]
[InlineData("刷新失败")]
[InlineData("创建频道探测失败")]
[InlineData("无法获取账号资料")]
[InlineData("已取消")]
[InlineData("触发限流FLOOD_WAIT")]
public void (string summary)
{
var status = CreateStatus(summary);
var isWaste = TelegramAccountWasteJudge.TryGetWasteReason(status, out var reason);
Assert.False(isWaste);
Assert.Empty(reason);
Assert.False(TelegramAccountWasteJudge.IsWaste(status));
}
[Theory]
[InlineData("账号被封禁", "账号被封禁/停用")]
[InlineData("被封禁/停用PHONE_NUMBER_BANNED", "账号被封禁/停用")]
[InlineData("账号被停用USER_DEACTIVATED", "账号被封禁/停用")]
[InlineData("Session 失效AUTH_KEY_UNREGISTERED", "Session 失效")]
[InlineData("Session 冲突AUTH_KEY_DUPLICATED", "Session 冲突")]
[InlineData("Session 已被撤销SESSION_REVOKED", "Session 已被撤销")]
[InlineData("Session 无法读取Can't read session block", "Session 损坏/不匹配")]
[InlineData("账号受限Restricted", "账号受限Restricted")]
[InlineData("账号被冻结FROZEN_METHOD_INVALID", "账号被冻结")]
[InlineData("需要两步验证密码SESSION_PASSWORD_NEEDED", "需要两步验证密码(未登录)")]
[InlineData("账号已注销/被删除", "账号已注销/被删除")]
public void (string summary, string expectedReason)
{
var status = CreateStatus(summary);
var isWaste = TelegramAccountWasteJudge.TryGetWasteReason(status, out var reason);
Assert.True(isWaste);
Assert.Equal(expectedReason, reason);
Assert.True(TelegramAccountWasteJudge.IsWaste(status));
}
[Fact]
public void ()
{
var status = CreateStatus("正常", CreateProfile(isDeleted: true));
Assert.True(TelegramAccountWasteJudge.TryGetWasteReason(status, out var reason));
Assert.Equal("账号已注销/被删除", reason);
}
[Fact]
public void ()
{
var status = CreateStatus("正常", CreateProfile(isRestricted: true));
Assert.True(TelegramAccountWasteJudge.TryGetWasteReason(status, out var reason));
Assert.Equal("账号受限Restricted", reason);
}
[Fact]
public void ()
{
Assert.False(TelegramAccountWasteJudge.TryGetWasteReason(null, out var reason));
Assert.Empty(reason);
}
private static TelegramAccountStatusResult CreateStatus(
string summary,
TelegramAccountProfile? profile = null) =>
new(
Ok: false,
Summary: summary,
Details: null,
CheckedAtUtc: DateTime.UtcNow,
Profile: profile);
private static TelegramAccountProfile CreateProfile(
bool isDeleted = false,
bool isRestricted = false) =>
new(
UserId: 1,
Phone: null,
Username: null,
FirstName: null,
LastName: null,
IsDeleted: isDeleted,
IsScam: false,
IsFake: false,
IsRestricted: isRestricted,
IsVerified: false,
IsPremium: false);
}