github.com/iaas-resource-provision/iaas-rpc@v1.0.7-0.20211021023331-ed21f798c408/internal/plans/changes_test.go (about)

     1  package plans
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/zclconf/go-cty/cty"
     8  )
     9  
    10  func TestChangeEncodeSensitive(t *testing.T) {
    11  	testVals := []cty.Value{
    12  		cty.ObjectVal(map[string]cty.Value{
    13  			"ding": cty.StringVal("dong").Mark("sensitive"),
    14  		}),
    15  		cty.StringVal("bleep").Mark("bloop"),
    16  		cty.ListVal([]cty.Value{cty.UnknownVal(cty.String).Mark("sup?")}),
    17  	}
    18  
    19  	for _, v := range testVals {
    20  		t.Run(fmt.Sprintf("%#v", v), func(t *testing.T) {
    21  			change := Change{
    22  				Before: cty.NullVal(v.Type()),
    23  				After:  v,
    24  			}
    25  
    26  			encoded, err := change.Encode(v.Type())
    27  			if err != nil {
    28  				t.Fatal(err)
    29  			}
    30  
    31  			decoded, err := encoded.Decode(v.Type())
    32  			if err != nil {
    33  				t.Fatal(err)
    34  			}
    35  
    36  			if !v.RawEquals(decoded.After) {
    37  				t.Fatalf("%#v != %#v\n", decoded.After, v)
    38  			}
    39  		})
    40  	}
    41  }