Files
bd2/go/internal/server/bootstrap/bootstrap_test.go
T

83 lines
2.5 KiB
Go

package bootstrap
import (
"testing"
"time"
"bd2server/internal/server/versionconfig"
"bd2server/internal/server/wire"
)
func TestMaintenance(t *testing.T) {
req := wire.AppendVarint(nil, 1, 2)
req = wire.AppendVarint(req, 2, 8)
response, err := Maintenance(versionconfig.Client(), versionconfig.Bundle(), req)
if err != nil {
t.Fatal(err)
}
market, found, err := wire.Bytes(response, 1)
if err != nil || !found {
t.Fatalf("market info missing: %v", err)
}
typ, _, _ := wire.Varint(market, 1)
if typ != 4 {
t.Fatalf("market type does not match response contract: %d", typ)
}
connect, _, _ := wire.Varint(response, 3)
user, _, _ := wire.Varint(response, 4)
if connect != 1 || user == 0 {
t.Fatalf("client would enter update branch: connect=%d user=%d", connect, user)
}
}
func TestServerInfoNoOfficialEndpoints(t *testing.T) {
c := Config{BaseURL: "http://127.0.0.1:8080/game/", CDNURL: "http://127.0.0.1:8080/assets/ServerData", Version: versionconfig.Client(), BundleVer: versionconfig.Bundle()}
if err := c.Validate(); err != nil {
t.Fatal(err)
}
response := ServerInfo(c)
info, _, _ := wire.Bytes(response, 1)
address, _, _ := wire.Bytes(info, 2)
if string(address) != c.BaseURL {
t.Fatalf("game URL: %q", address)
}
if _, exists, _ := wire.Bytes(info, 8); exists {
t.Fatal("unexpected GameData URL")
}
if v, _, _ := wire.Varint(ServerNowTime(time.UnixMilli(1234567)), 1); v != 1234567 {
t.Fatalf("time: %d", v)
}
}
func TestConfigAcceptsHTTPSPublicOrigin(t *testing.T) {
cfg := Config{
BaseURL: "https://bd2.example.com/game/", CDNURL: "https://bd2.example.com/assets/ServerData",
Version: "client", BundleVer: "bundle",
}
if err := cfg.Validate(); err != nil {
t.Fatalf("HTTPS self-hosted server config rejected: %v", err)
}
}
func TestServerInfoIncludesLocalGameData(t *testing.T) {
c := Config{
BaseURL: "http://127.0.0.1:8080/game/",
CDNURL: "http://127.0.0.1:8080/assets/ServerData",
Version: versionconfig.Client(), BundleVer: versionconfig.Bundle(),
GameDataURL: "http://127.0.0.1:8080/assets/GameData",
GameDataVer: "20260921140855",
}
if err := c.Validate(); err != nil {
t.Fatal(err)
}
info, found, err := wire.Bytes(ServerInfo(c), 1)
if err != nil || !found {
t.Fatalf("server info missing: %v", err)
}
url, _, _ := wire.Bytes(info, 8)
version, _, _ := wire.Bytes(info, 9)
if string(url) != c.GameDataURL || string(version) != c.GameDataVer {
t.Fatalf("GameData mismatch: url=%q version=%q", url, version)
}
}