Tests: server info reports version and security level

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-23 20:20:48 +02:00
co-authored by Claude Opus 5.5
parent 9e795a7802
commit a2fd942564
+28
View File
@@ -65,6 +65,23 @@ try
$"Welcome reports security level {level} and server version {serverVersion}"); $"Welcome reports security level {level} and server version {serverVersion}");
} }
{
// Server-Browser der Mod: Info endet mit Programmversion + Sicherheitsstufe (nach Profil und Spielernamen)
byte[] info = await TestClient.QueryInfo();
string infoVersion = "";
int infoLevel = -1;
if (info != null)
{
using var ir = new BinaryReader(new MemoryStream(info));
ir.ReadString(); ir.ReadString(); ir.ReadInt32(); ir.ReadInt32(); ir.ReadString();
ir.ReadBoolean(); ir.ReadString(); ir.ReadInt32();
int names = ir.ReadInt32();
for (int i = 0; i < names; i++) ir.ReadString();
infoVersion = ir.ReadString();
infoLevel = ir.ReadInt32();
}
Check(infoLevel == GameServer.SecurityLevel && infoVersion == Updater.CurrentVersion, $"Info query reports server {infoVersion}, security level {infoLevel}");
}
Console.WriteLine("== Ping"); Console.WriteLine("== Ping");
alice.Send(MsgType.Ping, BitConverter.GetBytes(12.5f)); alice.Send(MsgType.Ping, BitConverter.GetBytes(12.5f));
var pong = await alice.WaitFor(MsgType.Pong); var pong = await alice.WaitFor(MsgType.Pong);
@@ -864,6 +881,17 @@ sealed class TestClient
public string RejectReason; public string RejectReason;
public Dictionary<string, byte[]> Files = new(); public Dictionary<string, byte[]> Files = new();
/// <summary>Server-Browser-Abfrage (MsgType.Info) wie in der Mod.</summary>
public static async Task<byte[]> QueryInfo()
{
var c = new TestClient { tcp = new TcpClient() };
await c.tcp.ConnectAsync("127.0.0.1", Port);
c.stream = c.tcp.GetStream();
_ = Task.Run(c.ReadLoop);
c.Send(MsgType.Info, Array.Empty<byte>());
return await c.WaitFor(MsgType.InfoReply);
}
public static async Task<TestClient> Join(string name, ulong steamId, byte[] ticket, bool expectReject = false) public static async Task<TestClient> Join(string name, ulong steamId, byte[] ticket, bool expectReject = false)
{ {
var c = new TestClient { tcp = new TcpClient() }; var c = new TestClient { tcp = new TcpClient() };