github.com/opentofu/opentofu@v1.7.1/internal/tofu/transform_config_test.go (about)

     1  // Copyright (c) The OpenTofu Authors
     2  // SPDX-License-Identifier: MPL-2.0
     3  // Copyright (c) 2023 HashiCorp, Inc.
     4  // SPDX-License-Identifier: MPL-2.0
     5  
     6  package tofu
     7  
     8  import (
     9  	"strings"
    10  	"testing"
    11  
    12  	"github.com/opentofu/opentofu/internal/addrs"
    13  )
    14  
    15  func TestConfigTransformer_nilModule(t *testing.T) {
    16  	g := Graph{Path: addrs.RootModuleInstance}
    17  	tf := &ConfigTransformer{}
    18  	if err := tf.Transform(&g); err != nil {
    19  		t.Fatalf("err: %s", err)
    20  	}
    21  
    22  	if len(g.Vertices()) > 0 {
    23  		t.Fatalf("graph is not empty: %s", g.String())
    24  	}
    25  }
    26  
    27  func TestConfigTransformer(t *testing.T) {
    28  	g := Graph{Path: addrs.RootModuleInstance}
    29  	tf := &ConfigTransformer{Config: testModule(t, "graph-basic")}
    30  	if err := tf.Transform(&g); err != nil {
    31  		t.Fatalf("err: %s", err)
    32  	}
    33  
    34  	actual := strings.TrimSpace(g.String())
    35  	expected := strings.TrimSpace(testConfigTransformerGraphBasicStr)
    36  	if actual != expected {
    37  		t.Fatalf("bad:\n\n%s", actual)
    38  	}
    39  }
    40  
    41  func TestConfigTransformer_mode(t *testing.T) {
    42  	g := Graph{Path: addrs.RootModuleInstance}
    43  	tf := &ConfigTransformer{
    44  		Config:     testModule(t, "transform-config-mode-data"),
    45  		ModeFilter: true,
    46  		Mode:       addrs.DataResourceMode,
    47  	}
    48  	if err := tf.Transform(&g); err != nil {
    49  		t.Fatalf("err: %s", err)
    50  	}
    51  
    52  	actual := strings.TrimSpace(g.String())
    53  	expected := strings.TrimSpace(`
    54  data.aws_ami.foo
    55  `)
    56  	if actual != expected {
    57  		t.Fatalf("bad:\n\n%s", actual)
    58  	}
    59  }
    60  
    61  func TestConfigTransformer_nonUnique(t *testing.T) {
    62  	g := Graph{Path: addrs.RootModuleInstance}
    63  	g.Add(NewNodeAbstractResource(
    64  		addrs.RootModule.Resource(
    65  			addrs.ManagedResourceMode, "aws_instance", "web",
    66  		),
    67  	))
    68  	tf := &ConfigTransformer{Config: testModule(t, "graph-basic")}
    69  	if err := tf.Transform(&g); err != nil {
    70  		t.Fatalf("err: %s", err)
    71  	}
    72  
    73  	actual := strings.TrimSpace(g.String())
    74  	expected := strings.TrimSpace(`
    75  aws_instance.web
    76  aws_instance.web
    77  aws_load_balancer.weblb
    78  aws_security_group.firewall
    79  openstack_floating_ip.random
    80  `)
    81  	if actual != expected {
    82  		t.Fatalf("bad:\n\n%s", actual)
    83  	}
    84  }
    85  
    86  const testConfigTransformerGraphBasicStr = `
    87  aws_instance.web
    88  aws_load_balancer.weblb
    89  aws_security_group.firewall
    90  openstack_floating_ip.random
    91  `