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

     1  package terraform
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/iaas-resource-provision/iaas-rpc/internal/addrs"
     7  	"github.com/iaas-resource-provision/iaas-rpc/internal/configs"
     8  	"github.com/iaas-resource-provision/iaas-rpc/internal/instances"
     9  	"github.com/iaas-resource-provision/iaas-rpc/internal/states"
    10  )
    11  
    12  func TestNodePlannableResourceExecute(t *testing.T) {
    13  	state := states.NewState()
    14  	ctx := &MockEvalContext{
    15  		StateState:               state.SyncWrapper(),
    16  		InstanceExpanderExpander: instances.NewExpander(),
    17  	}
    18  
    19  	t.Run("no config", func(t *testing.T) {
    20  		node := NodePlannableResource{
    21  			NodeAbstractResource: &NodeAbstractResource{
    22  				Config: nil,
    23  			},
    24  			Addr: mustAbsResourceAddr("test_instance.foo"),
    25  		}
    26  		diags := node.Execute(ctx, walkApply)
    27  		if diags.HasErrors() {
    28  			t.Fatalf("unexpected error: %s", diags.Err())
    29  		}
    30  		if !state.Empty() {
    31  			t.Fatalf("expected no state, got:\n %s", state.String())
    32  		}
    33  	})
    34  
    35  	t.Run("simple", func(t *testing.T) {
    36  
    37  		node := NodePlannableResource{
    38  			NodeAbstractResource: &NodeAbstractResource{
    39  				Config: &configs.Resource{
    40  					Mode: addrs.ManagedResourceMode,
    41  					Type: "test_instance",
    42  					Name: "foo",
    43  				},
    44  				ResolvedProvider: addrs.AbsProviderConfig{
    45  					Provider: addrs.NewDefaultProvider("test"),
    46  					Module:   addrs.RootModule,
    47  				},
    48  			},
    49  			Addr: mustAbsResourceAddr("test_instance.foo"),
    50  		}
    51  		diags := node.Execute(ctx, walkApply)
    52  		if diags.HasErrors() {
    53  			t.Fatalf("unexpected error: %s", diags.Err())
    54  		}
    55  		if state.Empty() {
    56  			t.Fatal("expected resources in state, got empty state")
    57  		}
    58  		r := state.Resource(mustAbsResourceAddr("test_instance.foo"))
    59  		if r == nil {
    60  			t.Fatal("test_instance.foo not found in state")
    61  		}
    62  	})
    63  }