package feed import ( "encoding/json" "testing" ) func TestV3PrivilegesRequiredUnmarshalInvalidData(t *testing.T) { test := []byte(`{}`) var val V3PrivilegesRequired if err := json.Unmarshal(test, &val); err == nil { t.Errorf("got \"%s\", exp error", val) } } func TestV3PrivilegesRequiredUnmarshalUnknown(t *testing.T) { test := []byte(`"foo"`) exp := "unknown CVSS v3 privileges required: foo" var val V3PrivilegesRequired err := json.Unmarshal(test, &val) if err == nil { t.Errorf("got \"%s\", exp error", val) return } if err.Error() != exp { t.Errorf("got \"%s\", exp \"%s\"", err.Error(), exp) } } func TestV3PrivilegesRequiredUnmarshalValid(t *testing.T) { tests := []struct { val string exp V3PrivilegesRequired } { { "\"NONE\"", V3PRNone }, { "\"LOW\"", V3PRLow }, { "\"MEDIUM\"", V3PRMedium }, { "\"HIGH\"", V3PRHigh }, } for _, test := range(tests) { t.Run(test.val, func(t *testing.T) { var got V3PrivilegesRequired if err := json.Unmarshal([]byte(test.val), &got); err != nil { t.Error(err) return } if got != test.exp { t.Errorf("got \"%s\", exp \"%s\"", got, test.exp) } }) } } func TestV3PrivilegesRequiredString(t *testing.T) { tests := []struct { val V3PrivilegesRequired exp string } { { V3PRNone, "NONE" }, { V3PRLow, "LOW" }, { V3PRMedium, "MEDIUM" }, { V3PRHigh, "HIGH" }, { V3PrivilegesRequired(255), "V3PrivilegesRequired(255)" }, } for _, test := range(tests) { t.Run(test.exp, func(t *testing.T) { got := test.val.String() if got != test.exp { t.Errorf("got \"%s\", exp \"%s\"", got, test.exp) } }) } }