Tests: server info reports version and security level
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -65,6 +65,23 @@ try
|
||||
$"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");
|
||||
alice.Send(MsgType.Ping, BitConverter.GetBytes(12.5f));
|
||||
var pong = await alice.WaitFor(MsgType.Pong);
|
||||
@@ -864,6 +881,17 @@ sealed class TestClient
|
||||
public string RejectReason;
|
||||
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)
|
||||
{
|
||||
var c = new TestClient { tcp = new TcpClient() };
|
||||
|
||||
Reference in New Issue
Block a user