Files
huya-go/internal/huya/wss_client_test.go
T

99 lines
2.3 KiB
Go

package huya
import (
"encoding/base64"
"encoding/hex"
"net/url"
"strings"
"testing"
"huya-go/internal/taf"
)
func TestWSRegisterGroupReqEncoding(t *testing.T) {
w := taf.NewWriter()
req := &wsRegisterGroupReq{GroupIDs: []string{WSSGroupID}}
if err := req.WriteTo(w); err != nil {
t.Fatal(err)
}
got := hex.EncodeToString(w.Bytes())
want := "09000106066c6976653a301600"
if got != want {
t.Fatalf("register group bytes = %s, want %s", got, want)
}
}
func TestWSUpdateUserExpsReqEncoding(t *testing.T) {
w := taf.NewWriter()
if err := (&wsUpdateUserExpsReq{}).WriteTo(w); err != nil {
t.Fatal(err)
}
got := hex.EncodeToString(w.Bytes())
want := "080c"
if got != want {
t.Fatalf("update user exps bytes = %s, want %s", got, want)
}
}
func TestGenerateWSSBaseinfoMatchesBrowserShape(t *testing.T) {
encoded, err := GenerateWSSBaseinfo(123, "guid-value")
if err != nil {
t.Fatal(err)
}
unescaped, err := url.QueryUnescape(encoded)
if err != nil {
t.Fatal(err)
}
raw, err := base64.StdEncoding.DecodeString(unescaped)
if err != nil {
t.Fatal(err)
}
r := taf.NewReader(raw)
uid, err := r.ReadInt64(0, true, 0)
if err != nil {
t.Fatal(err)
}
guid, err := r.ReadString(1, true, "")
if err != nil {
t.Fatal(err)
}
ua, err := r.ReadString(2, true, "")
if err != nil {
t.Fatal(err)
}
appSrc, err := r.ReadString(3, true, "")
if err != nil {
t.Fatal(err)
}
cookie, err := r.ReadString(8, false, "not-empty")
if err != nil {
t.Fatal(err)
}
traceID, err := r.ReadString(9, false, "not-empty")
if err != nil {
t.Fatal(err)
}
if uid != 123 || guid != "guid-value" || ua != WSSCookieUA || appSrc != "HUYA&ZH&2052" {
t.Fatalf("unexpected baseinfo: uid=%d guid=%q ua=%q appSrc=%q", uid, guid, ua, appSrc)
}
if cookie != "" || traceID != "" {
t.Fatalf("wss baseinfo should not carry cookie/trace: cookie=%q trace=%q", cookie, traceID)
}
}
func TestNewWSSCommandTraceMatchesBrowserShape(t *testing.T) {
trace := NewWSSCommandTrace()
parts := strings.Split(trace, ":")
if len(parts) != 4 {
t.Fatalf("trace parts = %v", parts)
}
if parts[0] == "" || parts[1] == "" || parts[0] != parts[1] {
t.Fatalf("unexpected trace prefix: %q", trace)
}
if parts[2] != "0" || parts[3] != "0" {
t.Fatalf("trace suffix = %q, want :0:0", trace)
}
}