You've already forked agentic-coding-workflow
feat(mcp): plaintext token generator + SHA-256 hash helper
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package mcp
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestNewToken_FormatAndUniqueness(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
tok1, hash1, err := NewToken()
|
||||
require.NoError(t, err)
|
||||
tok2, hash2, err := NewToken()
|
||||
require.NoError(t, err)
|
||||
|
||||
// 前缀正确
|
||||
assert.True(t, strings.HasPrefix(tok1, "mcpt_"))
|
||||
assert.True(t, strings.HasPrefix(tok2, "mcpt_"))
|
||||
|
||||
// 两次生成不重复(碰撞概率 ≈ 2^-128)
|
||||
assert.NotEqual(t, tok1, tok2)
|
||||
assert.NotEqual(t, hash1, hash2)
|
||||
|
||||
// hash 是 32 字节
|
||||
assert.Len(t, hash1, 32)
|
||||
assert.Len(t, hash2, 32)
|
||||
}
|
||||
|
||||
func TestHashToken_Deterministic(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
plain := "mcpt_someplaintext"
|
||||
h1 := HashToken(plain)
|
||||
h2 := HashToken(plain)
|
||||
|
||||
assert.Equal(t, h1, h2)
|
||||
assert.Len(t, h1, 32)
|
||||
}
|
||||
|
||||
func TestNewToken_HashMatchesPlaintext(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
tok, hash, err := NewToken()
|
||||
require.NoError(t, err)
|
||||
|
||||
expected := HashToken(tok)
|
||||
assert.Equal(t, expected, hash)
|
||||
}
|
||||
Reference in New Issue
Block a user