clavitor/clavis/clavis-vault/_old/lib/token_test.go

57 lines
1.1 KiB
Go

package lib
import (
"strings"
"testing"
)
func TestMintToken_roundtrip(t *testing.T) {
l1 := []byte{0xAA, 0xBB, 0xCC, 0xDD, 0x11, 0x22, 0x33, 0x44}
raw, hash := MintToken(l1)
if !strings.HasPrefix(raw, "cvt_") {
t.Fatalf("token missing cvt_ prefix: %s", raw)
}
if hash == "" {
t.Fatal("hash is empty")
}
l1Out, hashOut, err := ParseToken(raw)
if err != nil {
t.Fatalf("ParseToken: %v", err)
}
if len(l1Out) != 8 {
t.Fatalf("l1 length: got %d, want 8", len(l1Out))
}
for i := range l1 {
if l1[i] != l1Out[i] {
t.Fatalf("l1 mismatch at byte %d: got %x, want %x", i, l1Out[i], l1[i])
}
}
if hashOut != hash {
t.Fatalf("hash mismatch: got %s, want %s", hashOut, hash)
}
if HashToken(raw) != hash {
t.Fatal("HashToken mismatch")
}
}
func TestMintToken_unique(t *testing.T) {
l1 := []byte{0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}
r1, _ := MintToken(l1)
r2, _ := MintToken(l1)
if r1 == r2 {
t.Fatal("two tokens should be different")
}
}
func TestParseToken_invalid(t *testing.T) {
_, _, err := ParseToken("not_a_token")
if err == nil {
t.Fatal("expected error for invalid token")
}
}