37 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|