Files
GaCy-GO/internal/sdkserver/android_gateway_test.go
T

47 lines
2.0 KiB
Go

package sdkserver
import (
"encoding/base64"
"net/http/httptest"
"testing"
"gac-hkrpg-go/internal/common"
"gac-hkrpg-go/protocol/proto"
google "google.golang.org/protobuf/proto"
)
func TestAndroidGatewayResolvesBuildSuffix(t *testing.T) {
const version = "OSBETAAndroid4.6.54_D16927089_A16927089_L16927077"
metadata := VersionConfig{AssetBundleURL: "https://example.test/assets", AssetBundleURLB: "https://example.test/backup", ExResourceURL: "https://example.test/data", LuaURL: "https://example.test/lua", IfixURL: "https://example.test/ifix", LuaVersion: "123", IfixVersion: "4"}
state := &appState{runtime: common.RuntimeConfig{PublicGameHost: "127.0.0.1", GamePort: 23301}, hotfixMap: map[string]VersionConfig{
"OSBETAAndroid4.6.54": metadata,
version: {}, // An earlier failed lookup may have cached an empty entry.
}}
rec := httptest.NewRecorder()
queryGateway(state)(rec, httptest.NewRequest("GET", "/query_gateway?version="+version, nil))
if rec.Code != 200 {
t.Fatalf("HTTP status = %d", rec.Code)
}
wire, err := base64.StdEncoding.DecodeString(rec.Body.String())
if err != nil {
t.Fatal(err)
}
var got proto.Gateserver
if err := google.Unmarshal(wire, &got); err != nil {
t.Fatal(err)
}
if got.Ip != "127.0.0.1" || got.Port != 23301 || got.AssetBundleUrl != metadata.AssetBundleURL || got.AssetBundleUrlB != metadata.AssetBundleURLB || got.ExResourceUrl != metadata.ExResourceURL || got.LuaUrl != metadata.LuaURL || got.IfixUrl != metadata.IfixURL || got.LuaVersion != metadata.LuaVersion || got.IfixVersion != metadata.IfixVersion {
t.Fatalf("unexpected gateway response: %v", &got)
}
}
func TestAndroidGatewayPrefersExactBuildMetadata(t *testing.T) {
state := &appState{hotfixMap: map[string]VersionConfig{
"OSBETAAndroid4.6.54": {AssetBundleURL: "release"},
"OSBETAAndroid4.6.54_D1": {AssetBundleURL: "specific"},
}}
if got := state.getOrInsertHotfix("OSBETAAndroid4.6.54_D1", ""); got.AssetBundleURL != "specific" {
t.Fatalf("exact build lost: %+v", got)
}
}