99 lines
2.3 KiB
Go
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)
|
|
}
|
|
}
|