68 lines
2.0 KiB
Go
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)
|
|
}
|