package service import ( "errors" "testing" ) func TestGenerate16CharSecure(t *testing.T) { for i := 0; i < 100; i++ { code := Generate16CharSecure() if len(code) != cdkCodeLength { t.Fatalf("expected code length %d, got %d", cdkCodeLength, len(code)) } for _, ch := range code { if !containsRune(charsetWithSymbol, ch) { t.Fatalf("unexpected character %q in code %q", ch, code) } } } } func TestBuildUniqueCodesSkipsDuplicatesAndExisting(t *testing.T) { sequence := []string{ "DUPLICATE-000001", "DUPLICATE-000001", "EXISTING-000001", "VALID-000000001", "VALID-000000002", "VALID-000000003", "VALID-000000004", "VALID-000000005", "VALID-000000006", } index := 0 codes, err := buildUniqueCodes(3, func() (string, error) { if index >= len(sequence) { return "", errors.New("generator exhausted") } code := sequence[index] index++ return code, nil }, func(candidates []string) (map[string]struct{}, error) { return map[string]struct{}{ "EXISTING-000001": {}, }, nil }) if err != nil { t.Fatalf("buildUniqueCodes returned error: %v", err) } if len(codes) != 3 { t.Fatalf("expected 3 codes, got %d", len(codes)) } want := []string{ "VALID-000000001", "VALID-000000002", "VALID-000000003", } for i, code := range want { if codes[i] != code { t.Fatalf("expected code %q at index %d, got %q", code, i, codes[i]) } } } func containsRune(value string, target rune) bool { for _, ch := range value { if ch == target { return true } } return false }