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  }