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