github.com/influxdata/influxdb/v2@v2.7.6/secret_test.go (about)

     1  package influxdb
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/google/go-cmp/cmp"
     8  )
     9  
    10  func TestSecretFieldJSON(t *testing.T) {
    11  	cases := []struct {
    12  		name   string
    13  		fld    *SecretField
    14  		json   string
    15  		target SecretField
    16  	}{
    17  		{
    18  			name:   "regular",
    19  			fld:    &SecretField{Key: "some key"},
    20  			json:   `"secret: some key"`,
    21  			target: SecretField{Key: "some key"},
    22  		},
    23  		{name: "blank", fld: &SecretField{}, json: `""`},
    24  		{
    25  			name: "with value",
    26  			fld: &SecretField{
    27  				Key:   "some key",
    28  				Value: strPtr("some value"),
    29  			},
    30  			json: `"secret: some key"`,
    31  			target: SecretField{
    32  				Key: "some key",
    33  			},
    34  		},
    35  		{
    36  			name: "unmarshal a post",
    37  			json: `"some value"`,
    38  			target: SecretField{
    39  				Value: strPtr("some value"),
    40  			},
    41  		},
    42  	}
    43  	for _, c := range cases {
    44  		if c.fld != nil {
    45  			serialized, err := json.Marshal(c.fld)
    46  			if err != nil {
    47  				t.Fatalf("%s failed, secret key marshal err: %q", c.name, err.Error())
    48  			}
    49  			if string(serialized) != c.json {
    50  				t.Fatalf("%s failed, secret key marshal result is unexpected, got %q, want %q", c.name, string(serialized), c.json)
    51  			}
    52  		}
    53  		var deserialized SecretField
    54  		if err := json.Unmarshal([]byte(c.json), &deserialized); err != nil {
    55  			t.Fatalf("%s failed, secret key unmarshal err: %q", c.name, err.Error())
    56  		}
    57  		if diff := cmp.Diff(deserialized, c.target); diff != "" {
    58  			t.Fatalf("%s failed, secret key unmarshal result is unexpected, diff %s", c.name, diff)
    59  		}
    60  	}
    61  }