leave_test.go 1.2 KB

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