github.com/paultyng/terraform@v0.6.11-0.20180227224804-66ff8f8bed40/command/state_list_test.go (about) 1 package command 2 3 import ( 4 "os" 5 "strings" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/copy" 9 "github.com/mitchellh/cli" 10 ) 11 12 func TestStateList(t *testing.T) { 13 state := testState() 14 statePath := testStateFile(t, state) 15 16 p := testProvider() 17 ui := new(cli.MockUi) 18 c := &StateListCommand{ 19 Meta: Meta{ 20 testingOverrides: metaOverridesForProvider(p), 21 Ui: ui, 22 }, 23 } 24 25 args := []string{ 26 "-state", statePath, 27 } 28 if code := c.Run(args); code != 0 { 29 t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) 30 } 31 32 // Test that outputs were displayed 33 expected := strings.TrimSpace(testStateListOutput) + "\n" 34 actual := ui.OutputWriter.String() 35 if actual != expected { 36 t.Fatalf("Expected:\n%q\n\nTo equal: %q", actual, expected) 37 } 38 } 39 40 func TestStateListWithID(t *testing.T) { 41 state := testState() 42 statePath := testStateFile(t, state) 43 44 p := testProvider() 45 ui := new(cli.MockUi) 46 c := &StateListCommand{ 47 Meta: Meta{ 48 testingOverrides: metaOverridesForProvider(p), 49 Ui: ui, 50 }, 51 } 52 53 args := []string{ 54 "-state", statePath, 55 "-id", "bar", 56 } 57 if code := c.Run(args); code != 0 { 58 t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) 59 } 60 61 // Test that outputs were displayed 62 expected := strings.TrimSpace(testStateListOutput) + "\n" 63 actual := ui.OutputWriter.String() 64 if actual != expected { 65 t.Fatalf("Expected:\n%q\n\nTo equal: %q", actual, expected) 66 } 67 } 68 69 func TestStateListWithNonExistentID(t *testing.T) { 70 state := testState() 71 statePath := testStateFile(t, state) 72 73 p := testProvider() 74 ui := new(cli.MockUi) 75 c := &StateListCommand{ 76 Meta: Meta{ 77 testingOverrides: metaOverridesForProvider(p), 78 Ui: ui, 79 }, 80 } 81 82 args := []string{ 83 "-state", statePath, 84 "-id", "baz", 85 } 86 if code := c.Run(args); code != 0 { 87 t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) 88 } 89 90 // Test that output is empty 91 if ui.OutputWriter != nil { 92 actual := ui.OutputWriter.String() 93 if actual != "" { 94 t.Fatalf("Expected an empty output but got: %q", actual) 95 } 96 } 97 } 98 99 func TestStateList_backendState(t *testing.T) { 100 // Create a temporary working directory that is empty 101 td := tempDir(t) 102 copy.CopyDir(testFixturePath("state-list-backend"), td) 103 defer os.RemoveAll(td) 104 defer testChdir(t, td)() 105 106 p := testProvider() 107 ui := new(cli.MockUi) 108 c := &StateListCommand{ 109 Meta: Meta{ 110 testingOverrides: metaOverridesForProvider(p), 111 Ui: ui, 112 }, 113 } 114 115 args := []string{} 116 if code := c.Run(args); code != 0 { 117 t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) 118 } 119 120 // Test that outputs were displayed 121 expected := "null_resource.a\n" 122 actual := ui.OutputWriter.String() 123 if actual != expected { 124 t.Fatalf("Expected:\n%q\n\nTo equal: %q", actual, expected) 125 } 126 } 127 128 func TestStateList_noState(t *testing.T) { 129 tmp, cwd := testCwd(t) 130 defer testFixCwd(t, tmp, cwd) 131 132 p := testProvider() 133 ui := new(cli.MockUi) 134 c := &StateListCommand{ 135 Meta: Meta{ 136 testingOverrides: metaOverridesForProvider(p), 137 Ui: ui, 138 }, 139 } 140 141 args := []string{} 142 if code := c.Run(args); code != 1 { 143 t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) 144 } 145 } 146 147 const testStateListOutput = ` 148 test_instance.foo 149 `