Files
go-trustlog/api/model/signer_test.go
ryan 0ec1d3b87d refactor: 更改module路径为独立仓库路径
- go.yandata.net/iod/iod/go-trustlog → go.yandata.net/wangsiyuan/go-trustlog
- 更新 go.mod module声明
- 更新 README.md 安装说明
- 批量更新所有 .go 文件中的 import 路径
- 61个文件受影响

这样go-trustlog可以作为独立SDK使用
2025-12-26 14:35:39 +08:00

137 lines
2.6 KiB
Go

package model_test
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.yandata.net/wangsiyuan/go-trustlog/api/model"
)
func TestNewSM2Signer(t *testing.T) {
t.Parallel()
privateKey := []byte("test-private-key")
publicKey := []byte("test-public-key")
signer := model.NewSM2Signer(privateKey, publicKey)
assert.NotNil(t, signer)
}
func TestNewNopSigner(t *testing.T) {
t.Parallel()
signer := model.NewNopSigner()
assert.NotNil(t, signer)
}
func TestNopSigner_Sign(t *testing.T) {
t.Parallel()
signer := model.NewNopSigner()
data := []byte("test data")
result, err := signer.Sign(data)
require.NoError(t, err)
assert.Equal(t, data, result)
assert.NotSame(t, &data[0], &result[0]) // Should be a copy
}
func TestNopSigner_Sign_Empty(t *testing.T) {
t.Parallel()
signer := model.NewNopSigner()
data := []byte{}
result, err := signer.Sign(data)
require.NoError(t, err)
assert.Equal(t, data, result)
}
func TestNopSigner_Verify_Success(t *testing.T) {
t.Parallel()
signer := model.NewNopSigner()
data := []byte("test data")
signature := []byte("test data") // Same as data
valid, err := signer.Verify(data, signature)
require.NoError(t, err)
assert.True(t, valid)
}
func TestNopSigner_Verify_Failure(t *testing.T) {
t.Parallel()
signer := model.NewNopSigner()
data := []byte("test data")
signature := []byte("different data")
valid, err := signer.Verify(data, signature)
require.NoError(t, err)
assert.False(t, valid)
}
func TestNopSigner_RoundTrip(t *testing.T) {
t.Parallel()
signer := model.NewNopSigner()
data := []byte("test data")
signature, err := signer.Sign(data)
require.NoError(t, err)
valid, err := signer.Verify(data, signature)
require.NoError(t, err)
assert.True(t, valid)
}
func TestNopSigner_Verify_DifferentLengths(t *testing.T) {
t.Parallel()
signer := model.NewNopSigner()
tests := []struct {
name string
data []byte
signature []byte
expected bool
}{
{
name: "same data",
data: []byte("test"),
signature: []byte("test"),
expected: true,
},
{
name: "different data",
data: []byte("test"),
signature: []byte("test2"),
expected: false,
},
{
name: "different lengths",
data: []byte("test"),
signature: []byte("test1"),
expected: false,
},
{
name: "empty",
data: []byte{},
signature: []byte{},
expected: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
valid, err := signer.Verify(tt.data, tt.signature)
require.NoError(t, err)
assert.Equal(t, tt.expected, valid)
})
}
}