github.com/skyscape-cloud-services/terraform@v0.9.2-0.20170609144644-7ece028a1747/terraform/plan_test.go (about)

     1  package terraform
     2  
     3  import (
     4  	"bytes"
     5  	"strings"
     6  
     7  	"testing"
     8  )
     9  
    10  func TestReadWritePlan(t *testing.T) {
    11  	plan := &Plan{
    12  		Module: testModule(t, "new-good"),
    13  		Diff: &Diff{
    14  			Modules: []*ModuleDiff{
    15  				&ModuleDiff{
    16  					Path: rootModulePath,
    17  					Resources: map[string]*InstanceDiff{
    18  						"nodeA": &InstanceDiff{
    19  							Attributes: map[string]*ResourceAttrDiff{
    20  								"foo": &ResourceAttrDiff{
    21  									Old: "foo",
    22  									New: "bar",
    23  								},
    24  								"bar": &ResourceAttrDiff{
    25  									Old:         "foo",
    26  									NewComputed: true,
    27  								},
    28  								"longfoo": &ResourceAttrDiff{
    29  									Old:         "foo",
    30  									New:         "bar",
    31  									RequiresNew: true,
    32  								},
    33  							},
    34  
    35  							Meta: map[string]interface{}{
    36  								"foo": []interface{}{1, 2, 3},
    37  							},
    38  						},
    39  					},
    40  				},
    41  			},
    42  		},
    43  		State: &State{
    44  			Modules: []*ModuleState{
    45  				&ModuleState{
    46  					Path: rootModulePath,
    47  					Resources: map[string]*ResourceState{
    48  						"foo": &ResourceState{
    49  							Primary: &InstanceState{
    50  								ID: "bar",
    51  							},
    52  						},
    53  					},
    54  				},
    55  			},
    56  		},
    57  		Vars: map[string]interface{}{
    58  			"foo": "bar",
    59  		},
    60  	}
    61  
    62  	buf := new(bytes.Buffer)
    63  	if err := WritePlan(plan, buf); err != nil {
    64  		t.Fatalf("err: %s", err)
    65  	}
    66  
    67  	actual, err := ReadPlan(buf)
    68  	if err != nil {
    69  		t.Fatalf("err: %s", err)
    70  	}
    71  
    72  	actualStr := strings.TrimSpace(actual.String())
    73  	expectedStr := strings.TrimSpace(plan.String())
    74  	if actualStr != expectedStr {
    75  		t.Fatalf("bad:\n\n%s\n\nexpected:\n\n%s", actualStr, expectedStr)
    76  	}
    77  }