57 lines
1.1 KiB
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")
|
|
}
|
|
}
|