github.com/wolfi-dev/wolfictl@v0.16.11/pkg/configs/advisory/v2/yaml_test.go (about)

     1  package v2
     2  
     3  import (
     4  	"testing"
     5  
     6  	"gopkg.in/yaml.v3"
     7  )
     8  
     9  func Test_strictUnmarshal(t *testing.T) {
    10  	type targetDataType struct {
    11  		Color string `yaml:"color"`
    12  	}
    13  
    14  	cases := []struct {
    15  		name    string
    16  		in      string
    17  		wantErr bool
    18  	}{
    19  		{
    20  			name:    "empty",
    21  			in:      "",
    22  			wantErr: false,
    23  		},
    24  		{
    25  			name:    "complete",
    26  			in:      "color: blue",
    27  			wantErr: false,
    28  		},
    29  		{
    30  			name:    "invalid due to unknown fields",
    31  			in:      "color: blue\nextra: field",
    32  			wantErr: true,
    33  		},
    34  	}
    35  
    36  	for _, tt := range cases {
    37  		t.Run(tt.name, func(t *testing.T) {
    38  			n := new(yaml.Node)
    39  			err := yaml.Unmarshal([]byte(tt.in), n)
    40  			if err != nil {
    41  				t.Fatalf("failed to decode test YAML data: %v", err)
    42  			}
    43  
    44  			v, err := strictUnmarshal[targetDataType](n)
    45  			if (err != nil) != tt.wantErr {
    46  				t.Errorf("strictUnmarshal() error = %v, wantErr %v, actual value was %+v", err, tt.wantErr, v)
    47  				return
    48  			}
    49  		})
    50  	}
    51  }