package influxdb import ( "encoding/json" "testing" "github.com/google/go-cmp/cmp" ) func TestSecretFieldJSON(t *testing.T) { cases := []struct { name string fld *SecretField json string target SecretField }{ { name: "regular", fld: &SecretField{Key: "some key"}, json: `"secret: some key"`, target: SecretField{Key: "some key"}, }, {name: "blank", fld: &SecretField{}, json: `""`}, { name: "with value", fld: &SecretField{ Key: "some key", Value: strPtr("some value"), }, json: `"secret: some key"`, target: SecretField{ Key: "some key", }, }, { name: "unmarshal a post", json: `"some value"`, target: SecretField{ Value: strPtr("some value"), }, }, } for _, c := range cases { if c.fld != nil { serialized, err := json.Marshal(c.fld) if err != nil { t.Fatalf("%s failed, secret key marshal err: %q", c.name, err.Error()) } if string(serialized) != c.json { t.Fatalf("%s failed, secret key marshal result is unexpected, got %q, want %q", c.name, string(serialized), c.json) } } var deserialized SecretField if err := json.Unmarshal([]byte(c.json), &deserialized); err != nil { t.Fatalf("%s failed, secret key unmarshal err: %q", c.name, err.Error()) } if diff := cmp.Diff(deserialized, c.target); diff != "" { t.Fatalf("%s failed, secret key unmarshal result is unexpected, diff %s", c.name, diff) } } }