Files
cc4fb45d70 feat: upstream enterprise preview (#1841)
feat: upstream enterprise preview

---------

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>
Co-authored-by: CorentinPtrl <pitrel.corentin@gmail.com>
2026-05-28 00:58:58 +02:00

81 lines
2.0 KiB
Go

// Copyright 2020-2026 Project Capsule Authors
// SPDX-License-Identifier: Apache-2.0
package functions
import (
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestDeterministicUUID(t *testing.T) {
tests := []struct {
name string
partsA []string
partsB []string
sameAsA bool
wantUpper bool
}{
{
name: "same inputs produce same uuid",
partsA: []string{"tenant", "wind", "ns", "wind-test"},
partsB: []string{"tenant", "wind", "ns", "wind-test"},
sameAsA: true,
wantUpper: true,
},
{
name: "whitespace is trimmed (same logical inputs)",
partsA: []string{" tenant ", " wind", "ns ", " wind-test "},
partsB: []string{"tenant", "wind", "ns", "wind-test"},
sameAsA: true,
wantUpper: true,
},
{
name: "different inputs produce different uuid",
partsA: []string{"tenant", "wind", "ns", "wind-test"},
partsB: []string{"tenant", "wind", "ns", "other-ns"},
sameAsA: false,
wantUpper: true,
},
{
name: "empty strings are kept as separators (affects output)",
partsA: []string{"a", "", "b"},
partsB: []string{"a", "b"},
sameAsA: false,
wantUpper: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
uA := deterministicUUID(tt.partsA...)
uB := deterministicUUID(tt.partsB...)
// Basic UUID formatting checks
assert.Len(t, uA, 36)
assert.Equal(t, byte('-'), uA[8])
assert.Equal(t, byte('-'), uA[13])
assert.Equal(t, byte('-'), uA[18])
assert.Equal(t, byte('-'), uA[23])
if tt.wantUpper {
assert.Equal(t, strings.ToUpper(uA), uA)
}
// Version 5 and RFC4122 variant checks:
// UUID format: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
// M must be '5' (version 5). N must be one of 8,9,A,B (variant 10xx)
assert.Equal(t, byte('5'), uA[14], "expected version 5 at position 14")
assert.Contains(t, "89AB", string(uA[19]), "expected RFC4122 variant at position 19")
if tt.sameAsA {
assert.Equal(t, uA, uB)
} else {
assert.NotEqual(t, uA, uB)
}
})
}
}