hyapp-server/services/room-service/internal/room/service/gift_billing_internal_test.go
2026-07-12 00:47:20 +08:00

37 lines
1.2 KiB
Go

package service
import (
"strings"
"testing"
"hyapp/pkg/giftlimits"
)
func TestGiftTargetCommandIDBoundsMaxLengthParentAndStaysDeterministic(t *testing.T) {
parent := strings.Repeat("p", giftlimits.MaxCommandIDBytes)
first := giftTargetCommandID(parent, 9001, 2)
retry := giftTargetCommandID(parent, 9001, 2)
otherTarget := giftTargetCommandID(parent, 9002, 2)
if first != retry {
t.Fatalf("same parent/target must derive a stable child command: %q != %q", first, retry)
}
if len(first) > giftlimits.MaxCommandIDBytes {
t.Fatalf("derived child command has %d bytes, max %d", len(first), giftlimits.MaxCommandIDBytes)
}
if first == otherTarget {
t.Fatalf("different targets must not share a child command: %q", first)
}
if !strings.HasPrefix(first, "gift-target:v2:") {
t.Fatalf("overflowing legacy key must use the bounded v2 derivation: %q", first)
}
}
func TestGiftTargetCommandIDPreservesCompatibleKeys(t *testing.T) {
if got := giftTargetCommandID("existing-command", 42, 1); got != "existing-command" {
t.Fatalf("single target command changed: %q", got)
}
if got := giftTargetCommandID("existing-command", 42, 2); got != "existing-command:target:42" {
t.Fatalf("existing bounded multi-target command changed: %q", got)
}
}