2026-04-27 12:38:54 +08:00

68 lines
2.0 KiB
Go

package registerreward
import (
"encoding/binary"
"testing"
"github.com/redis/go-redis/v9"
)
func TestParseRegisterRewardEventSupportsJavaSerializedStringValues(t *testing.T) {
message := redis.XMessage{
ID: "1777262756108-0",
Values: map[string]any{
"eventId": javaSerializedStringForTest("REGISTER_REWARD:LIKEI:2048614597363036161"),
"sysOrigin": javaSerializedStringForTest("LIKEI"),
"userId": javaSerializedStringForTest("2048614597363036161"),
"countryId": javaSerializedStringForTest("1231833351745187842"),
"publishedAt": javaSerializedStringForTest("1777262756107"),
},
}
event, err := parseRegisterRewardEvent(message)
if err != nil {
t.Fatalf("parseRegisterRewardEvent() error = %v", err)
}
if event.EventID != "REGISTER_REWARD:LIKEI:2048614597363036161" {
t.Fatalf("eventID = %q", event.EventID)
}
if event.SysOrigin != "LIKEI" {
t.Fatalf("sysOrigin = %q", event.SysOrigin)
}
if event.UserID != 2048614597363036161 {
t.Fatalf("userID = %d", event.UserID)
}
if event.CountryID != 1231833351745187842 {
t.Fatalf("countryID = %d", event.CountryID)
}
}
func TestParseRegisterRewardEventStillSupportsPlainStringValues(t *testing.T) {
message := redis.XMessage{
ID: "1-0",
Values: map[string]any{
"eventId": "REGISTER_REWARD:LIKEI:2048614597363036161",
"sysOrigin": "LIKEI",
"userId": "2048614597363036161",
"countryId": "1231833351745187842",
},
}
event, err := parseRegisterRewardEvent(message)
if err != nil {
t.Fatalf("parseRegisterRewardEvent() error = %v", err)
}
if event.UserID != 2048614597363036161 || event.CountryID != 1231833351745187842 {
t.Fatalf("unexpected event: %+v", event)
}
}
func javaSerializedStringForTest(value string) string {
payload := []byte(value)
result := make([]byte, 7+len(payload))
copy(result[:5], []byte{0xac, 0xed, 0x00, 0x05, 0x74})
binary.BigEndian.PutUint16(result[5:7], uint16(len(payload)))
copy(result[7:], payload)
return string(result)
}