github.com/thajeztah/cli@v0.0.0-20240223162942-dc6bfac81a8b/cli/command/secret/remove_test.go (about) 1 package secret 2 3 import ( 4 "context" 5 "io" 6 "strings" 7 "testing" 8 9 "github.com/docker/cli/internal/test" 10 "github.com/pkg/errors" 11 "gotest.tools/v3/assert" 12 is "gotest.tools/v3/assert/cmp" 13 ) 14 15 func TestSecretRemoveErrors(t *testing.T) { 16 testCases := []struct { 17 args []string 18 secretRemoveFunc func(context.Context, string) error 19 expectedError string 20 }{ 21 { 22 args: []string{}, 23 expectedError: "requires at least 1 argument.", 24 }, 25 { 26 args: []string{"foo"}, 27 secretRemoveFunc: func(_ context.Context, name string) error { 28 return errors.Errorf("error removing secret") 29 }, 30 expectedError: "error removing secret", 31 }, 32 } 33 for _, tc := range testCases { 34 cmd := newSecretRemoveCommand( 35 test.NewFakeCli(&fakeClient{ 36 secretRemoveFunc: tc.secretRemoveFunc, 37 }), 38 ) 39 cmd.SetArgs(tc.args) 40 cmd.SetOut(io.Discard) 41 assert.ErrorContains(t, cmd.Execute(), tc.expectedError) 42 } 43 } 44 45 func TestSecretRemoveWithName(t *testing.T) { 46 names := []string{"foo", "bar"} 47 var removedSecrets []string 48 cli := test.NewFakeCli(&fakeClient{ 49 secretRemoveFunc: func(_ context.Context, name string) error { 50 removedSecrets = append(removedSecrets, name) 51 return nil 52 }, 53 }) 54 cmd := newSecretRemoveCommand(cli) 55 cmd.SetArgs(names) 56 assert.NilError(t, cmd.Execute()) 57 assert.Check(t, is.DeepEqual(names, strings.Split(strings.TrimSpace(cli.OutBuffer().String()), "\n"))) 58 assert.Check(t, is.DeepEqual(names, removedSecrets)) 59 } 60 61 func TestSecretRemoveContinueAfterError(t *testing.T) { 62 names := []string{"foo", "bar"} 63 var removedSecrets []string 64 65 cli := test.NewFakeCli(&fakeClient{ 66 secretRemoveFunc: func(_ context.Context, name string) error { 67 removedSecrets = append(removedSecrets, name) 68 if name == "foo" { 69 return errors.Errorf("error removing secret: %s", name) 70 } 71 return nil 72 }, 73 }) 74 75 cmd := newSecretRemoveCommand(cli) 76 cmd.SetOut(io.Discard) 77 cmd.SetArgs(names) 78 assert.Error(t, cmd.Execute(), "error removing secret: foo") 79 assert.Check(t, is.DeepEqual(names, removedSecrets)) 80 }