|
1 | 1 | package secrethub |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "bytes" |
4 | 5 | "testing" |
5 | 6 |
|
6 | 7 | "github.com/secrethub/secrethub-cli/internals/cli/ui" |
@@ -118,40 +119,40 @@ func TestPromptVariableReader(t *testing.T) { |
118 | 119 | reader, err := newVariableReader(osEnv, commandTemplateVars) |
119 | 120 | assert.OK(t, err) |
120 | 121 |
|
121 | | - t.Run("prompt", func(t *testing.T) { |
122 | | - io := ui.NewFakeIO() |
123 | | - io.PromptIn.Reads = []string{"foobar\n"} |
124 | | - reader = newPromptMissingVariableReader(reader, io) |
125 | | - |
126 | | - val, err := reader.ReadVariable("test5") |
127 | | - assert.Equal(t, val, "foobar") |
128 | | - assert.Equal(t, err, nil) |
129 | | - }) |
130 | | - |
131 | | - t.Run("no prompt", func(t *testing.T) { |
132 | | - io := ui.NewFakeIO() |
133 | | - reader = newPromptMissingVariableReader(reader, io) |
134 | | - |
135 | | - val, err := reader.ReadVariable("test4") |
136 | | - assert.Equal(t, val, "testD") |
137 | | - assert.Equal(t, err, nil) |
138 | | - }) |
139 | | - |
140 | | - t.Run("from os env", func(t *testing.T) { |
141 | | - io := ui.NewFakeIO() |
142 | | - reader = newPromptMissingVariableReader(reader, io) |
143 | | - |
144 | | - val, err := reader.ReadVariable("test2") |
145 | | - assert.Equal(t, val, "testB") |
146 | | - assert.Equal(t, err, nil) |
147 | | - }) |
| 122 | + cases := map[string]struct { |
| 123 | + promptIn string |
| 124 | + varName string |
| 125 | + expected string |
| 126 | + err error |
| 127 | + }{ |
| 128 | + "prompt": { |
| 129 | + promptIn: "foobar", |
| 130 | + varName: "test5", |
| 131 | + expected: "foobar", |
| 132 | + }, |
| 133 | + "no prompt": { |
| 134 | + varName: "test4", |
| 135 | + expected: "testD", |
| 136 | + }, |
| 137 | + "from os env": { |
| 138 | + varName: "test2", |
| 139 | + expected: "testB", |
| 140 | + }, |
| 141 | + "template vars shadow os env": { |
| 142 | + varName: "test1", |
| 143 | + expected: "testAA", |
| 144 | + }, |
| 145 | + } |
148 | 146 |
|
149 | | - t.Run("template vars shadow os env", func(t *testing.T) { |
150 | | - io := ui.NewFakeIO() |
151 | | - reader = newPromptMissingVariableReader(reader, io) |
| 147 | + for name, tc := range cases { |
| 148 | + t.Run(name, func(t *testing.T) { |
| 149 | + io := ui.NewFakeIO() |
| 150 | + io.PromptIn.Buffer = bytes.NewBufferString(tc.promptIn) |
| 151 | + reader = newPromptMissingVariableReader(reader, io) |
152 | 152 |
|
153 | | - val, err := reader.ReadVariable("test1") |
154 | | - assert.Equal(t, val, "testAA") |
155 | | - assert.Equal(t, err, nil) |
156 | | - }) |
| 153 | + val, err := reader.ReadVariable(tc.varName) |
| 154 | + assert.Equal(t, val, tc.expected) |
| 155 | + assert.Equal(t, err, tc.err) |
| 156 | + }) |
| 157 | + } |
157 | 158 | } |
0 commit comments