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}");
|
$"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() };
|
||||||
|
|||||||
Reference in New Issue
Block a user