2025-07-04 10:04:40 -04:00
|
|
|
package varsig_test
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
|
|
|
|
"encoding/hex"
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
|
2025-07-08 08:23:30 -04:00
|
|
|
"github.com/ucan-wg/go-varsig"
|
2025-07-04 10:04:40 -04:00
|
|
|
)
|
|
|
|
|
|
2025-07-07 07:34:17 -04:00
|
|
|
func TestRegistry_Decode(t *testing.T) {
|
2025-07-04 10:04:40 -04:00
|
|
|
t.Run("passes - v1", func(t *testing.T) {
|
|
|
|
|
data, err := hex.DecodeString("34018120")
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
reg := testRegistry(t)
|
|
|
|
|
|
|
|
|
|
vs, err := reg.DecodeStream(bytes.NewReader(data))
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
assert.Equal(t, varsig.Version1, vs.Version())
|
2025-08-05 15:35:12 +02:00
|
|
|
assert.Equal(t, testAlgorithm1, vs.Algorithm())
|
2025-07-04 10:04:40 -04:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const (
|
2025-08-05 15:35:12 +02:00
|
|
|
testAlgorithm0 varsig.Algorithm = 0x1000
|
|
|
|
|
testAlgorithm1 varsig.Algorithm = 0x1001
|
2025-07-04 10:04:40 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func testRegistry(t *testing.T) varsig.Registry {
|
|
|
|
|
t.Helper()
|
|
|
|
|
|
|
|
|
|
reg := varsig.NewRegistry()
|
2025-08-05 15:35:12 +02:00
|
|
|
reg.Register(testAlgorithm0, testDecodeFunc(testAlgorithm0))
|
|
|
|
|
reg.Register(testAlgorithm1, testDecodeFunc(testAlgorithm1))
|
2025-07-04 10:04:40 -04:00
|
|
|
|
|
|
|
|
return reg
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-05 15:35:12 +02:00
|
|
|
func testDecodeFunc(algo varsig.Algorithm) varsig.DecodeFunc {
|
2025-07-28 18:40:45 +02:00
|
|
|
return func(r varsig.BytesReader) (varsig.Varsig, error) {
|
2025-08-05 15:35:12 +02:00
|
|
|
return &testVarsig{algo: algo}, nil
|
2025-07-04 10:04:40 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-08 18:38:23 +02:00
|
|
|
var _ varsig.Varsig = testVarsig{}
|
2025-07-04 10:04:40 -04:00
|
|
|
|
|
|
|
|
type testVarsig struct {
|
2025-08-05 15:35:12 +02:00
|
|
|
algo varsig.Algorithm
|
2025-07-08 07:34:57 -04:00
|
|
|
payEnc varsig.PayloadEncoding
|
2025-07-04 10:04:40 -04:00
|
|
|
}
|
|
|
|
|
|
2025-07-08 18:38:23 +02:00
|
|
|
func (v testVarsig) Version() varsig.Version {
|
2025-07-28 18:40:45 +02:00
|
|
|
return varsig.Version1
|
2025-07-04 10:04:40 -04:00
|
|
|
}
|
|
|
|
|
|
2025-08-05 15:35:12 +02:00
|
|
|
func (v testVarsig) Algorithm() varsig.Algorithm {
|
|
|
|
|
return v.algo
|
2025-07-04 10:04:40 -04:00
|
|
|
}
|
|
|
|
|
|
2025-07-29 14:04:42 +02:00
|
|
|
func (v testVarsig) Hash() varsig.Hash {
|
|
|
|
|
return varsig.HashUnspecified
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-08 18:38:23 +02:00
|
|
|
func (v testVarsig) PayloadEncoding() varsig.PayloadEncoding {
|
2025-07-07 07:34:17 -04:00
|
|
|
return v.payEnc
|
2025-07-04 10:04:40 -04:00
|
|
|
}
|
|
|
|
|
|
2025-07-08 18:38:23 +02:00
|
|
|
func (v testVarsig) Encode() []byte {
|
2025-07-04 10:04:40 -04:00
|
|
|
return nil
|
|
|
|
|
}
|