80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
package parameter_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/bluenviron/mediamtx/internal/protocols/moq/parameter"
|
|
)
|
|
|
|
var cases = []struct {
|
|
name string
|
|
count int
|
|
enc []byte
|
|
dec parameter.Parameters
|
|
}{
|
|
{
|
|
name: "no parameters",
|
|
count: 0,
|
|
enc: []byte{},
|
|
dec: nil,
|
|
},
|
|
{
|
|
name: "authorization token",
|
|
count: 1,
|
|
enc: []byte{
|
|
0x03, // type delta = 3 (AuthorizationToken)
|
|
0x08, // inner length = 8
|
|
0x03, // alias type = UseValue
|
|
0x01, // token type = 1
|
|
0x73, 0x65, 0x63, 0x72, 0x65, 0x74, // token value = "secret"
|
|
},
|
|
dec: parameter.Parameters{
|
|
¶meter.AuthorizationToken{
|
|
AliasType: parameter.AuthorizationTokenAliasTypeUseValue,
|
|
TokenType: 1,
|
|
TokenValue: []byte("secret"),
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
func TestUnmarshal(t *testing.T) {
|
|
for _, ca := range cases {
|
|
t.Run(ca.name, func(t *testing.T) {
|
|
var params parameter.Parameters
|
|
_, err := params.Unmarshal(ca.count, ca.enc)
|
|
require.NoError(t, err)
|
|
require.Equal(t, ca.dec, params)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestMarshal(t *testing.T) {
|
|
for _, ca := range cases {
|
|
t.Run(ca.name, func(t *testing.T) {
|
|
buf := make([]byte, ca.dec.MarshalSize())
|
|
ca.dec.MarshalTo(buf)
|
|
require.Equal(t, ca.enc, buf)
|
|
})
|
|
}
|
|
}
|
|
|
|
func FuzzUnmarshal(f *testing.F) {
|
|
for _, ca := range cases {
|
|
f.Add(ca.count, ca.enc)
|
|
}
|
|
|
|
f.Fuzz(func(_ *testing.T, count int, buf []byte) {
|
|
var params parameter.Parameters
|
|
_, err := params.Unmarshal(count, buf)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
buf = make([]byte, params.MarshalSize())
|
|
params.MarshalTo(buf)
|
|
})
|
|
}
|