github.com/flavio/docker@v0.1.3-0.20170117145210-f63d1a6eec47/cli/command/swarm/leave_test.go (about) 1 package swarm 2 3 import ( 4 "bytes" 5 "fmt" 6 "io/ioutil" 7 "strings" 8 "testing" 9 10 "github.com/docker/docker/cli/internal/test" 11 "github.com/docker/docker/pkg/testutil/assert" 12 ) 13 14 func TestSwarmLeaveErrors(t *testing.T) { 15 testCases := []struct { 16 name string 17 args []string 18 swarmLeaveFunc func() error 19 expectedError string 20 }{ 21 { 22 name: "too-many-args", 23 args: []string{"foo"}, 24 expectedError: "accepts no argument(s)", 25 }, 26 { 27 name: "leave-failed", 28 swarmLeaveFunc: func() error { 29 return fmt.Errorf("error leaving the swarm") 30 }, 31 expectedError: "error leaving the swarm", 32 }, 33 } 34 for _, tc := range testCases { 35 buf := new(bytes.Buffer) 36 cmd := newLeaveCommand( 37 test.NewFakeCli(&fakeClient{ 38 swarmLeaveFunc: tc.swarmLeaveFunc, 39 }, buf)) 40 cmd.SetArgs(tc.args) 41 cmd.SetOutput(ioutil.Discard) 42 assert.Error(t, cmd.Execute(), tc.expectedError) 43 } 44 } 45 46 func TestSwarmLeave(t *testing.T) { 47 buf := new(bytes.Buffer) 48 cmd := newLeaveCommand( 49 test.NewFakeCli(&fakeClient{}, buf)) 50 assert.NilError(t, cmd.Execute()) 51 assert.Equal(t, strings.TrimSpace(buf.String()), "Node left the swarm.") 52 }