53 lines
1.3 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package parsing
import (
"testing"
"github.com/google/certificate-transparency-go/asn1"
"github.com/stretchr/testify/require"
)
// TestAsn1UnmarshallNoTrailing tests the Asn1UnmarshallNoTrailing function returns
// errors as we expect if the input is not marshalled correctly or there is trailing
// data.
func TestAsn1UnmarshallNoTrailing(t *testing.T) {
stringToMarshal := "a string"
marshal, err := asn1.Marshal(stringToMarshal)
require.NoError(t, err, "marshal failed")
var myTestString string
type args struct {
b []byte
val any
}
tests := []struct {
name string
args args
wantErr bool
}{
{"happy-path", args{marshal, &myTestString}, false},
{"bad-marshalling", args{[]byte("incorrect"), &myTestString}, true},
{"trailing-data", args{append(marshal, []byte("\n")...), &myTestString}, true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
myTestString = ""
err := Asn1UnmarshallNoTrailing(tt.args.b, tt.args.val)
if (err != nil) != tt.wantErr {
t.Errorf("Asn1UnmarshallNoTrailing() error = %v, wantErr %v", err, tt.wantErr)
}
if !tt.wantErr {
if myTestString != stringToMarshal {
t.Errorf("Asn1UnmarshallNoTrailing() = %v, want %v", myTestString, stringToMarshal)
}
}
})
}
}