44 lines
1.7 KiB
Go
44 lines
1.7 KiB
Go
package app
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
|
|
"hyapp/pkg/outboxreplay"
|
|
"hyapp/services/wallet-service/internal/config"
|
|
)
|
|
|
|
func TestNormalizeWalletReplayEventTypes(t *testing.T) {
|
|
eventTypes, err := NormalizeWalletReplayEventTypes([]string{" GiftConfigChanged ", "WalletBalanceChanged", "GiftConfigChanged"})
|
|
if err != nil {
|
|
t.Fatalf("NormalizeWalletReplayEventTypes failed: %v", err)
|
|
}
|
|
if len(eventTypes) != 2 || eventTypes[0] != "GiftConfigChanged" || eventTypes[1] != "WalletBalanceChanged" {
|
|
t.Fatalf("normalized event types mismatch: %v", eventTypes)
|
|
}
|
|
if _, err := NormalizeWalletReplayEventTypes([]string{"bad || tag"}); err == nil {
|
|
t.Fatal("expected invalid RocketMQ tag rejection")
|
|
}
|
|
}
|
|
|
|
func TestRejectRealtimeReplayEventTypes(t *testing.T) {
|
|
if err := rejectRealtimeReplayEventTypes([]string{"GiftConfigChanged"}, []string{"WalletRedPacketCreated"}); err != nil {
|
|
t.Fatalf("normal event rejected: %v", err)
|
|
}
|
|
if err := rejectRealtimeReplayEventTypes([]string{"WalletRedPacketCreated"}, []string{"WalletRedPacketCreated"}); err == nil {
|
|
t.Fatal("expected realtime lane rejection")
|
|
}
|
|
}
|
|
|
|
func TestWalletReplayRejectsRealtimeTypeWhenLaneIsDisabled(t *testing.T) {
|
|
cfg := config.Default()
|
|
cfg.RealtimeOutboxWorker.Enabled = false
|
|
cfg.RocketMQ.RealtimeOutbox.Enabled = false
|
|
cfg.RealtimeOutboxWorker.EventTypes = []string{"WalletRedPacketCreated"}
|
|
_, err := ReplayWalletOutboxOnce(context.Background(), cfg, outboxreplay.Scope{AppCode: "huwaa", Limit: 1}, []string{"WalletRedPacketCreated"})
|
|
if err == nil || !strings.Contains(err.Error(), "realtime outbox lane") {
|
|
t.Fatalf("disabled realtime lane must retain event ownership, err=%v", err)
|
|
}
|
|
}
|