github.com/terraform-modules-krish/terratest@v0.29.0/modules/terraform/workspace_test.go (about)

     1  package terraform
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/terraform-modules-krish/terratest/modules/files"
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestWorkspaceNew(t *testing.T) {
    11  	t.Parallel()
    12  
    13  	testFolder, err := files.CopyTerraformFolderToTemp("../../test/fixtures/terraform-workspace", t.Name())
    14  	if err != nil {
    15  		t.Fatal(err)
    16  	}
    17  
    18  	options := &Options{
    19  		TerraformDir: testFolder,
    20  	}
    21  
    22  	out := WorkspaceSelectOrNew(t, options, "terratest")
    23  
    24  	assert.Equal(t, "terratest", out)
    25  }
    26  
    27  func TestWorkspaceIllegalName(t *testing.T) {
    28  	t.Parallel()
    29  
    30  	testFolder, err := files.CopyTerraformFolderToTemp("../../test/fixtures/terraform-workspace", t.Name())
    31  	if err != nil {
    32  		t.Fatal(err)
    33  	}
    34  
    35  	options := &Options{
    36  		TerraformDir: testFolder,
    37  	}
    38  
    39  	out, err := WorkspaceSelectOrNewE(t, options, "###@@@&&&")
    40  
    41  	assert.Error(t, err)
    42  	assert.Equal(t, "", out, "%q should be an empty string", out)
    43  }
    44  
    45  func TestWorkspaceSelect(t *testing.T) {
    46  	t.Parallel()
    47  
    48  	testFolder, err := files.CopyTerraformFolderToTemp("../../test/fixtures/terraform-workspace", t.Name())
    49  	if err != nil {
    50  		t.Fatal(err)
    51  	}
    52  
    53  	options := &Options{
    54  		TerraformDir: testFolder,
    55  	}
    56  
    57  	out := WorkspaceSelectOrNew(t, options, "terratest")
    58  	assert.Equal(t, "terratest", out)
    59  
    60  	out = WorkspaceSelectOrNew(t, options, "default")
    61  	assert.Equal(t, "default", out)
    62  }
    63  
    64  func TestWorkspaceApply(t *testing.T) {
    65  	t.Parallel()
    66  
    67  	testFolder, err := files.CopyTerraformFolderToTemp("../../test/fixtures/terraform-workspace", t.Name())
    68  	if err != nil {
    69  		t.Fatal(err)
    70  	}
    71  
    72  	options := &Options{
    73  		TerraformDir: testFolder,
    74  	}
    75  
    76  	WorkspaceSelectOrNew(t, options, "Terratest")
    77  	out := InitAndApply(t, options)
    78  
    79  	assert.Contains(t, out, "Hello, Terratest")
    80  }
    81  
    82  func TestIsExistingWorkspace(t *testing.T) {
    83  	t.Parallel()
    84  
    85  	testCases := []struct {
    86  		out      string
    87  		name     string
    88  		expected bool
    89  	}{
    90  		{"  default\n* foo\n", "default", true},
    91  		{"* default\n  foo\n", "default", true},
    92  		{"  foo\n* default\n", "default", true},
    93  		{"* foo\n  default\n", "default", true},
    94  		{"  foo\n* bar\n", "default", false},
    95  		{"* foo\n  bar\n", "default", false},
    96  		{"  default\n* foobar\n", "foo", false},
    97  		{"* default\n  foobar\n", "foo", false},
    98  		{"  default\n* foo\n", "foobar", false},
    99  		{"* default\n  foo\n", "foobar", false},
   100  		{"* default\n  foo\n", "foo", true},
   101  	}
   102  
   103  	for _, testCase := range testCases {
   104  		actual := isExistingWorkspace(testCase.out, testCase.name)
   105  		assert.Equal(t, testCase.expected, actual, "Out: %q, Name: %q", testCase.out, testCase.name)
   106  	}
   107  }
   108  
   109  func TestNameMatchesWorkspace(t *testing.T) {
   110  	t.Parallel()
   111  
   112  	testCases := []struct {
   113  		name      string
   114  		workspace string
   115  		expected  bool
   116  	}{
   117  		{"default", "  default", true},
   118  		{"default", "* default", true},
   119  		{"default", "", false},
   120  		{"foo", "  foobar", false},
   121  		{"foo", "* foobar", false},
   122  		{"foobar", "  foo", false},
   123  		{"foobar", "* foo", false},
   124  		{"foo", "  foo", true},
   125  		{"foo", "* foo", true},
   126  	}
   127  
   128  	for _, testCase := range testCases {
   129  		actual := nameMatchesWorkspace(testCase.name, testCase.workspace)
   130  		assert.Equal(t, testCase.expected, actual, "Name: %q, Workspace: %q", testCase.name, testCase.workspace)
   131  	}
   132  }