Skip to content

Commit d68c4d8

Browse files
authored
Merge pull request #5782 from thaJeztah/volume_tests_clean
cli/command/volume: various fixes and improvements in tests
2 parents 4808d1b + 31b8198 commit d68c4d8

1 file changed

Lines changed: 81 additions & 50 deletions

File tree

cli/command/volume/create_test.go

Lines changed: 81 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func TestVolumeCreateErrors(t *testing.T) {
4848
)
4949
cmd.SetArgs(tc.args)
5050
for key, value := range tc.flags {
51-
cmd.Flags().Set(key, value)
51+
assert.Check(t, cmd.Flags().Set(key, value))
5252
}
5353
cmd.SetOut(io.Discard)
5454
cmd.SetErr(io.Discard)
@@ -57,7 +57,7 @@ func TestVolumeCreateErrors(t *testing.T) {
5757
}
5858

5959
func TestVolumeCreateWithName(t *testing.T) {
60-
name := "foo"
60+
const name = "my-volume-name"
6161
cli := test.NewFakeCli(&fakeClient{
6262
volumeCreateFunc: func(body volume.CreateOptions) (volume.Volume, error) {
6363
if body.Name != name {
@@ -70,23 +70,42 @@ func TestVolumeCreateWithName(t *testing.T) {
7070
})
7171

7272
buf := cli.OutBuffer()
73+
t.Run("using-flags", func(t *testing.T) {
74+
cmd := newCreateCommand(cli)
75+
cmd.SetOut(io.Discard)
76+
cmd.SetErr(io.Discard)
77+
cmd.SetArgs([]string{})
78+
assert.Check(t, cmd.Flags().Set("name", name))
79+
assert.NilError(t, cmd.Execute())
80+
assert.Check(t, is.Equal(strings.TrimSpace(buf.String()), name))
81+
})
7382

74-
// Test by flags
75-
cmd := newCreateCommand(cli)
76-
cmd.Flags().Set("name", name)
77-
assert.NilError(t, cmd.Execute())
78-
assert.Check(t, is.Equal(name, strings.TrimSpace(buf.String())))
83+
buf.Reset()
84+
t.Run("using-args", func(t *testing.T) {
85+
cmd := newCreateCommand(cli)
86+
cmd.SetOut(io.Discard)
87+
cmd.SetErr(io.Discard)
88+
cmd.SetArgs([]string{name})
89+
assert.NilError(t, cmd.Execute())
90+
assert.Check(t, is.Equal(strings.TrimSpace(buf.String()), name))
91+
})
7992

80-
// Then by args
8193
buf.Reset()
82-
cmd = newCreateCommand(cli)
83-
cmd.SetArgs([]string{name})
84-
assert.NilError(t, cmd.Execute())
85-
assert.Check(t, is.Equal(name, strings.TrimSpace(buf.String())))
94+
t.Run("using-both", func(t *testing.T) {
95+
cmd := newCreateCommand(cli)
96+
cmd.SetOut(io.Discard)
97+
cmd.SetErr(io.Discard)
98+
cmd.SetArgs([]string{name})
99+
assert.Check(t, cmd.Flags().Set("name", name))
100+
err := cmd.Execute()
101+
assert.Check(t, is.Error(err, `conflicting options: cannot specify a volume-name through both --name and as a positional arg`))
102+
assert.Check(t, is.Equal(strings.TrimSpace(buf.String()), ""))
103+
})
86104
}
87105

88106
func TestVolumeCreateWithFlags(t *testing.T) {
89-
expectedDriver := "foo"
107+
const name = "random-generated-name"
108+
const expectedDriver = "foo-volume-driver"
90109
expectedOpts := map[string]string{
91110
"bar": "1",
92111
"baz": "baz",
@@ -95,7 +114,6 @@ func TestVolumeCreateWithFlags(t *testing.T) {
95114
"lbl1": "v1",
96115
"lbl2": "v2",
97116
}
98-
name := "banana"
99117

100118
cli := test.NewFakeCli(&fakeClient{
101119
volumeCreateFunc: func(body volume.CreateOptions) (volume.Volume, error) {
@@ -118,13 +136,16 @@ func TestVolumeCreateWithFlags(t *testing.T) {
118136
})
119137

120138
cmd := newCreateCommand(cli)
121-
cmd.Flags().Set("driver", "foo")
122-
cmd.Flags().Set("opt", "bar=1")
123-
cmd.Flags().Set("opt", "baz=baz")
124-
cmd.Flags().Set("label", "lbl1=v1")
125-
cmd.Flags().Set("label", "lbl2=v2")
139+
cmd.SetOut(io.Discard)
140+
cmd.SetErr(io.Discard)
141+
cmd.SetArgs([]string{})
142+
assert.Check(t, cmd.Flags().Set("driver", expectedDriver))
143+
assert.Check(t, cmd.Flags().Set("opt", "bar=1"))
144+
assert.Check(t, cmd.Flags().Set("opt", "baz=baz"))
145+
assert.Check(t, cmd.Flags().Set("label", "lbl1=v1"))
146+
assert.Check(t, cmd.Flags().Set("label", "lbl2=v2"))
126147
assert.NilError(t, cmd.Execute())
127-
assert.Check(t, is.Equal(name, strings.TrimSpace(cli.OutBuffer().String())))
148+
assert.Check(t, is.Equal(strings.TrimSpace(cli.OutBuffer().String()), name))
128149
}
129150

130151
func TestVolumeCreateCluster(t *testing.T) {
@@ -140,19 +161,27 @@ func TestVolumeCreateCluster(t *testing.T) {
140161
},
141162
})
142163

143-
cmd := newCreateCommand(cli)
144-
cmd.Flags().Set("type", "block")
145-
cmd.Flags().Set("group", "gronp")
146-
cmd.Flags().Set("driver", "csi")
147-
cmd.SetArgs([]string{"name"})
164+
t.Run("csi-volume", func(t *testing.T) {
165+
cmd := newCreateCommand(cli)
166+
cmd.SetOut(io.Discard)
167+
cmd.SetErr(io.Discard)
168+
assert.Check(t, cmd.Flags().Set("type", "block"))
169+
assert.Check(t, cmd.Flags().Set("group", "gronp"))
170+
assert.Check(t, cmd.Flags().Set("driver", "csi"))
171+
cmd.SetArgs([]string{"my-csi-volume"})
148172

149-
assert.NilError(t, cmd.Execute())
173+
assert.NilError(t, cmd.Execute())
174+
})
150175

151-
cmd = newCreateCommand(cli)
152-
cmd.Flags().Set("driver", "notcsi")
153-
cmd.SetArgs([]string{"name"})
176+
t.Run("non-csi-volume", func(t *testing.T) {
177+
cmd := newCreateCommand(cli)
178+
cmd.SetOut(io.Discard)
179+
cmd.SetErr(io.Discard)
180+
assert.Check(t, cmd.Flags().Set("driver", "notcsi"))
181+
cmd.SetArgs([]string{"my-non-csi-volume"})
154182

155-
assert.NilError(t, cmd.Execute())
183+
assert.NilError(t, cmd.Execute())
184+
})
156185
}
157186

158187
func TestVolumeCreateClusterOpts(t *testing.T) {
@@ -204,25 +233,27 @@ func TestVolumeCreateClusterOpts(t *testing.T) {
204233
})
205234

206235
cmd := newCreateCommand(cli)
236+
cmd.SetOut(io.Discard)
237+
cmd.SetErr(io.Discard)
207238
cmd.SetArgs([]string{"name"})
208-
cmd.Flags().Set("driver", "csi")
209-
cmd.Flags().Set("group", "gronp")
210-
cmd.Flags().Set("scope", "multi")
211-
cmd.Flags().Set("sharing", "onewriter")
212-
cmd.Flags().Set("type", "mount")
213-
cmd.Flags().Set("sharing", "onewriter")
214-
cmd.Flags().Set("required-bytes", "1234")
215-
cmd.Flags().Set("limit-bytes", "567890")
216-
217-
cmd.Flags().Set("secret", "key1=secret1")
218-
cmd.Flags().Set("secret", "key2=secret2")
219-
220-
cmd.Flags().Set("topology-required", "region=R1,zone=Z1")
221-
cmd.Flags().Set("topology-required", "region=R1,zone=Z2")
222-
cmd.Flags().Set("topology-required", "region=R1,zone=Z3")
223-
224-
cmd.Flags().Set("topology-preferred", "region=R1,zone=Z2")
225-
cmd.Flags().Set("topology-preferred", "region=R1,zone=Z3")
226-
227-
cmd.Execute()
239+
assert.Check(t, cmd.Flags().Set("driver", "csi"))
240+
assert.Check(t, cmd.Flags().Set("group", "gronp"))
241+
assert.Check(t, cmd.Flags().Set("scope", "multi"))
242+
assert.Check(t, cmd.Flags().Set("sharing", "onewriter"))
243+
assert.Check(t, cmd.Flags().Set("type", "mount"))
244+
assert.Check(t, cmd.Flags().Set("sharing", "onewriter"))
245+
assert.Check(t, cmd.Flags().Set("required-bytes", "1234"))
246+
assert.Check(t, cmd.Flags().Set("limit-bytes", "567890"))
247+
248+
assert.Check(t, cmd.Flags().Set("secret", "key1=secret1"))
249+
assert.Check(t, cmd.Flags().Set("secret", "key2=secret2"))
250+
251+
assert.Check(t, cmd.Flags().Set("topology-required", "region=R1,zone=Z1"))
252+
assert.Check(t, cmd.Flags().Set("topology-required", "region=R1,zone=Z2"))
253+
assert.Check(t, cmd.Flags().Set("topology-required", "region=R1,zone=Z3"))
254+
255+
assert.Check(t, cmd.Flags().Set("topology-preferred", "region=R1,zone=Z2"))
256+
assert.Check(t, cmd.Flags().Set("topology-preferred", "region=R1,zone=Z3"))
257+
258+
assert.NilError(t, cmd.Execute())
228259
}

0 commit comments

Comments
 (0)