@@ -4,10 +4,8 @@ import (
44 "context"
55 "testing"
66
7- "github.com/stackitcloud/stackit-cli/internal/pkg/types"
8-
97 "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
10- "github.com/stackitcloud/stackit-cli/internal/pkg/print "
8+ "github.com/stackitcloud/stackit-cli/internal/pkg/testutils "
119 "github.com/stackitcloud/stackit-cli/internal/pkg/utils"
1210
1311 "github.com/google/go-cmp/cmp"
@@ -111,13 +109,7 @@ func TestParseInput(t *testing.T) {
111109 isValid : false ,
112110 },
113111 {
114- description : "no flag values" ,
115- argValues : fixtureArgValues (),
116- flagValues : map [string ]string {},
117- isValid : false ,
118- },
119- {
120- description : "required flags only (no values to update)" ,
112+ description : "no update flags" ,
121113 argValues : fixtureArgValues (),
122114 flagValues : map [string ]string {
123115 projectIdFlag : testProjectId ,
@@ -172,6 +164,28 @@ func TestParseInput(t *testing.T) {
172164 flagValues : fixtureFlagValues (),
173165 isValid : false ,
174166 },
167+ {
168+ description : "kms key id without other required kms flags" ,
169+ argValues : fixtureArgValues (),
170+ flagValues : map [string ]string {
171+ projectIdFlag : testProjectId ,
172+ kmsKeyIdFlag : "key-id" ,
173+ },
174+ isValid : false ,
175+ },
176+ {
177+ description : "acl flag conflicts with kms flags" ,
178+ argValues : fixtureArgValues (),
179+ flagValues : map [string ]string {
180+ projectIdFlag : testProjectId ,
181+ aclFlag : testACL1 ,
182+ kmsKeyIdFlag : "key-id" ,
183+ kmsKeyringIdFlag : "keyring-id" ,
184+ kmsKeyVersionFlag : "1" ,
185+ kmsServiceAccountEmailFlag : "svc@example.com" ,
186+ },
187+ isValid : false ,
188+ },
175189 {
176190 description : "repeated acl flags" ,
177191 argValues : fixtureArgValues (),
@@ -199,64 +213,9 @@ func TestParseInput(t *testing.T) {
199213
200214 for _ , tt := range tests {
201215 t .Run (tt .description , func (t * testing.T ) {
202- p := print .NewPrinter ()
203- cmd := NewCmd (& types.CmdParams {Printer : p })
204- err := globalflags .Configure (cmd .Flags ())
205- if err != nil {
206- t .Fatalf ("configure global flags: %v" , err )
207- }
208-
209- for flag , value := range tt .flagValues {
210- err := cmd .Flags ().Set (flag , value )
211- if err != nil {
212- if ! tt .isValid {
213- return
214- }
215- t .Fatalf ("setting flag --%s=%s: %v" , flag , value , err )
216- }
217- }
218-
219- for _ , value := range tt .aclValues {
220- err := cmd .Flags ().Set (aclFlag , value )
221- if err != nil {
222- if ! tt .isValid {
223- return
224- }
225- t .Fatalf ("setting flag --%s=%s: %v" , aclFlag , value , err )
226- }
227- }
228-
229- err = cmd .ValidateArgs (tt .argValues )
230- if err != nil {
231- if ! tt .isValid {
232- return
233- }
234- t .Fatalf ("error validating args: %v" , err )
235- }
236-
237- err = cmd .ValidateRequiredFlags ()
238- if err != nil {
239- if ! tt .isValid {
240- return
241- }
242- t .Fatalf ("error validating flags: %v" , err )
243- }
244-
245- model , err := parseInput (p , cmd , tt .argValues )
246- if err != nil {
247- if ! tt .isValid {
248- return
249- }
250- t .Fatalf ("error parsing flags: %v" , err )
251- }
252-
253- if ! tt .isValid {
254- t .Fatalf ("did not fail on invalid input" )
255- }
256- diff := cmp .Diff (model , tt .expectedModel )
257- if diff != "" {
258- t .Fatalf ("Data does not match: %s" , diff )
259- }
216+ testutils .TestParseInputWithAdditionalFlags (t , NewCmd , parseInput , tt .expectedModel , tt .argValues , tt .flagValues , map [string ][]string {
217+ aclFlag : tt .aclValues ,
218+ }, tt .isValid )
260219 })
261220 }
262221}
0 commit comments