62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
|
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)
|
||
|
}
|
||
|
}
|
||
|
}
|