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 }