Files
varsig/constant_test.go

100 lines
2.1 KiB
Go
Raw Permalink Normal View History

package varsig_test
import (
"bytes"
"io"
"testing"
"github.com/stretchr/testify/require"
"github.com/ucan-wg/go-varsig"
)
func TestDecodeHashAlgorithm(t *testing.T) {
t.Parallel()
t.Run("passes", func(t *testing.T) {
t.Parallel()
hashAlg, err := varsig.DecodeHashAlgorithm(bytes.NewReader([]byte{0x12}))
require.NoError(t, err)
require.Equal(t, varsig.HashSha2_256, hashAlg)
})
t.Run("fails - truncated varsig (no bytes)", func(t *testing.T) {
t.Parallel()
hashAlg, err := varsig.DecodeHashAlgorithm(bytes.NewReader([]byte{}))
require.ErrorIs(t, err, varsig.ErrUnknownHash)
require.ErrorIs(t, err, io.EOF)
require.Equal(t, varsig.HashUnspecified, hashAlg)
})
t.Run("fails - unknown hash algorithm", func(t *testing.T) {
t.Parallel()
hashAlg, err := varsig.DecodeHashAlgorithm(bytes.NewReader([]byte{0x42}))
require.ErrorIs(t, err, varsig.ErrUnknownHash)
require.Equal(t, varsig.HashUnspecified, hashAlg)
})
}
func BenchmarkDecodeHashAlgorithm(b *testing.B) {
b.ReportAllocs()
data := []byte{0x12}
for i := 0; i < b.N; i++ {
_, _ = varsig.DecodeHashAlgorithm(bytes.NewReader(data))
}
}
func TestDecodePayloadEncoding(t *testing.T) {
t.Parallel()
t.Run("passes", func(t *testing.T) {
t.Parallel()
t.Run("v1", func(t *testing.T) {
t.Parallel()
2025-07-28 18:40:45 +02:00
payEnc, err := varsig.DecodePayloadEncoding(bytes.NewReader([]byte{0x5f}))
require.NoError(t, err)
require.Equal(t, varsig.PayloadEncodingVerbatim, payEnc)
})
})
t.Run("fails", func(t *testing.T) {
t.Parallel()
tests := []struct {
name string
data []byte
err error
}{
{
2025-07-28 18:40:45 +02:00
name: "unsupported encoding",
data: []byte{0x6a, 0x77}, // JWT
err: varsig.ErrUnsupportedPayloadEncoding,
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
r := bytes.NewReader(tt.data)
2025-07-28 18:40:45 +02:00
_, err := varsig.DecodePayloadEncoding(r)
require.ErrorIs(t, err, tt.err)
})
}
})
}
func BenchmarkDecodePayloadEncoding(b *testing.B) {
b.ReportAllocs()
data := []byte{0x5f}
for i := 0; i < b.N; i++ {
2025-07-28 18:40:45 +02:00
_, _ = varsig.DecodePayloadEncoding(bytes.NewReader(data))
}
}