leave_test.go 1.1 KB

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