github.com/markdia/terraform@v0.5.1-0.20150508012022-f1ae920aa970/terraform/transform_provider_test.go (about)

     1  package terraform
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/terraform/dag"
     8  )
     9  
    10  func TestProviderTransformer(t *testing.T) {
    11  	mod := testModule(t, "transform-provider-basic")
    12  
    13  	g := Graph{Path: RootModulePath}
    14  	{
    15  		tf := &ConfigTransformer{Module: mod}
    16  		if err := tf.Transform(&g); err != nil {
    17  			t.Fatalf("err: %s", err)
    18  		}
    19  	}
    20  
    21  	transform := &ProviderTransformer{}
    22  	if err := transform.Transform(&g); err != nil {
    23  		t.Fatalf("err: %s", err)
    24  	}
    25  
    26  	actual := strings.TrimSpace(g.String())
    27  	expected := strings.TrimSpace(testTransformProviderBasicStr)
    28  	if actual != expected {
    29  		t.Fatalf("bad:\n\n%s", actual)
    30  	}
    31  }
    32  
    33  func TestMissingProviderTransformer(t *testing.T) {
    34  	mod := testModule(t, "transform-provider-basic")
    35  
    36  	g := Graph{Path: RootModulePath}
    37  	{
    38  		tf := &ConfigTransformer{Module: mod}
    39  		if err := tf.Transform(&g); err != nil {
    40  			t.Fatalf("err: %s", err)
    41  		}
    42  	}
    43  
    44  	transform := &MissingProviderTransformer{Providers: []string{"foo"}}
    45  	if err := transform.Transform(&g); err != nil {
    46  		t.Fatalf("err: %s", err)
    47  	}
    48  
    49  	actual := strings.TrimSpace(g.String())
    50  	expected := strings.TrimSpace(testTransformMissingProviderBasicStr)
    51  	if actual != expected {
    52  		t.Fatalf("bad:\n\n%s", actual)
    53  	}
    54  }
    55  
    56  func TestPruneProviderTransformer(t *testing.T) {
    57  	mod := testModule(t, "transform-provider-prune")
    58  
    59  	g := Graph{Path: RootModulePath}
    60  	{
    61  		tf := &ConfigTransformer{Module: mod}
    62  		if err := tf.Transform(&g); err != nil {
    63  			t.Fatalf("err: %s", err)
    64  		}
    65  	}
    66  
    67  	{
    68  		transform := &MissingProviderTransformer{Providers: []string{"foo"}}
    69  		if err := transform.Transform(&g); err != nil {
    70  			t.Fatalf("err: %s", err)
    71  		}
    72  	}
    73  
    74  	{
    75  		transform := &ProviderTransformer{}
    76  		if err := transform.Transform(&g); err != nil {
    77  			t.Fatalf("err: %s", err)
    78  		}
    79  	}
    80  
    81  	{
    82  		transform := &PruneProviderTransformer{}
    83  		if err := transform.Transform(&g); err != nil {
    84  			t.Fatalf("err: %s", err)
    85  		}
    86  	}
    87  
    88  	actual := strings.TrimSpace(g.String())
    89  	expected := strings.TrimSpace(testTransformPruneProviderBasicStr)
    90  	if actual != expected {
    91  		t.Fatalf("bad:\n\n%s", actual)
    92  	}
    93  }
    94  
    95  func TestDisableProviderTransformer(t *testing.T) {
    96  	mod := testModule(t, "transform-provider-disable")
    97  
    98  	g := Graph{Path: RootModulePath}
    99  	{
   100  		tf := &ConfigTransformer{Module: mod}
   101  		if err := tf.Transform(&g); err != nil {
   102  			t.Fatalf("err: %s", err)
   103  		}
   104  	}
   105  
   106  	{
   107  		transform := &MissingProviderTransformer{Providers: []string{"aws"}}
   108  		if err := transform.Transform(&g); err != nil {
   109  			t.Fatalf("err: %s", err)
   110  		}
   111  	}
   112  
   113  	{
   114  		transform := &ProviderTransformer{}
   115  		if err := transform.Transform(&g); err != nil {
   116  			t.Fatalf("err: %s", err)
   117  		}
   118  	}
   119  
   120  	{
   121  		transform := &PruneProviderTransformer{}
   122  		if err := transform.Transform(&g); err != nil {
   123  			t.Fatalf("err: %s", err)
   124  		}
   125  	}
   126  
   127  	{
   128  		transform := &DisableProviderTransformer{}
   129  		if err := transform.Transform(&g); err != nil {
   130  			t.Fatalf("err: %s", err)
   131  		}
   132  	}
   133  
   134  	actual := strings.TrimSpace(g.String())
   135  	expected := strings.TrimSpace(testTransformDisableProviderBasicStr)
   136  	if actual != expected {
   137  		t.Fatalf("bad:\n\n%s", actual)
   138  	}
   139  }
   140  
   141  func TestDisableProviderTransformer_keep(t *testing.T) {
   142  	mod := testModule(t, "transform-provider-disable-keep")
   143  
   144  	g := Graph{Path: RootModulePath}
   145  	{
   146  		tf := &ConfigTransformer{Module: mod}
   147  		if err := tf.Transform(&g); err != nil {
   148  			t.Fatalf("err: %s", err)
   149  		}
   150  	}
   151  
   152  	{
   153  		transform := &MissingProviderTransformer{Providers: []string{"aws"}}
   154  		if err := transform.Transform(&g); err != nil {
   155  			t.Fatalf("err: %s", err)
   156  		}
   157  	}
   158  
   159  	{
   160  		transform := &ProviderTransformer{}
   161  		if err := transform.Transform(&g); err != nil {
   162  			t.Fatalf("err: %s", err)
   163  		}
   164  	}
   165  
   166  	{
   167  		transform := &PruneProviderTransformer{}
   168  		if err := transform.Transform(&g); err != nil {
   169  			t.Fatalf("err: %s", err)
   170  		}
   171  	}
   172  
   173  	{
   174  		transform := &DisableProviderTransformer{}
   175  		if err := transform.Transform(&g); err != nil {
   176  			t.Fatalf("err: %s", err)
   177  		}
   178  	}
   179  
   180  	actual := strings.TrimSpace(g.String())
   181  	expected := strings.TrimSpace(testTransformDisableProviderKeepStr)
   182  	if actual != expected {
   183  		t.Fatalf("bad:\n\n%s", actual)
   184  	}
   185  }
   186  
   187  func TestGraphNodeMissingProvider_impl(t *testing.T) {
   188  	var _ dag.Vertex = new(graphNodeMissingProvider)
   189  	var _ dag.NamedVertex = new(graphNodeMissingProvider)
   190  	var _ GraphNodeProvider = new(graphNodeMissingProvider)
   191  }
   192  
   193  func TestGraphNodeMissingProvider_ProviderName(t *testing.T) {
   194  	n := &graphNodeMissingProvider{ProviderNameValue: "foo"}
   195  	if v := n.ProviderName(); v != "foo" {
   196  		t.Fatalf("bad: %#v", v)
   197  	}
   198  }
   199  
   200  const testTransformProviderBasicStr = `
   201  aws_instance.web
   202    provider.aws
   203  provider.aws
   204  `
   205  
   206  const testTransformMissingProviderBasicStr = `
   207  aws_instance.web
   208  provider.aws
   209  provider.foo
   210  `
   211  
   212  const testTransformPruneProviderBasicStr = `
   213  foo_instance.web
   214    provider.foo
   215  provider.foo
   216  `
   217  
   218  const testTransformDisableProviderBasicStr = `
   219  module.child
   220    provider.aws (disabled)
   221    var.foo
   222  provider.aws (disabled)
   223  var.foo
   224  `
   225  
   226  const testTransformDisableProviderKeepStr = `
   227  aws_instance.foo
   228    provider.aws
   229  module.child
   230    provider.aws
   231    var.foo
   232  provider.aws
   233  var.foo
   234  `