remove_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package secret
  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/assert"
  9. "github.com/pkg/errors"
  10. )
  11. func TestSecretRemoveErrors(t *testing.T) {
  12. testCases := []struct {
  13. args []string
  14. secretRemoveFunc func(string) error
  15. expectedError string
  16. }{
  17. {
  18. args: []string{},
  19. expectedError: "requires at least 1 argument(s).",
  20. },
  21. {
  22. args: []string{"foo"},
  23. secretRemoveFunc: func(name string) error {
  24. return errors.Errorf("error removing secret")
  25. },
  26. expectedError: "error removing secret",
  27. },
  28. }
  29. for _, tc := range testCases {
  30. buf := new(bytes.Buffer)
  31. cmd := newSecretRemoveCommand(
  32. test.NewFakeCli(&fakeClient{
  33. secretRemoveFunc: tc.secretRemoveFunc,
  34. }, buf),
  35. )
  36. cmd.SetArgs(tc.args)
  37. cmd.SetOutput(ioutil.Discard)
  38. assert.Error(t, cmd.Execute(), tc.expectedError)
  39. }
  40. }
  41. func TestSecretRemoveWithName(t *testing.T) {
  42. names := []string{"foo", "bar"}
  43. buf := new(bytes.Buffer)
  44. var removedSecrets []string
  45. cli := test.NewFakeCli(&fakeClient{
  46. secretRemoveFunc: func(name string) error {
  47. removedSecrets = append(removedSecrets, name)
  48. return nil
  49. },
  50. }, buf)
  51. cmd := newSecretRemoveCommand(cli)
  52. cmd.SetArgs(names)
  53. assert.NilError(t, cmd.Execute())
  54. assert.EqualStringSlice(t, strings.Split(strings.TrimSpace(buf.String()), "\n"), names)
  55. assert.EqualStringSlice(t, removedSecrets, names)
  56. }
  57. func TestSecretRemoveContinueAfterError(t *testing.T) {
  58. names := []string{"foo", "bar"}
  59. buf := new(bytes.Buffer)
  60. var removedSecrets []string
  61. cli := test.NewFakeCli(&fakeClient{
  62. secretRemoveFunc: func(name string) error {
  63. removedSecrets = append(removedSecrets, name)
  64. if name == "foo" {
  65. return errors.Errorf("error removing secret: %s", name)
  66. }
  67. return nil
  68. },
  69. }, buf)
  70. cmd := newSecretRemoveCommand(cli)
  71. cmd.SetArgs(names)
  72. assert.Error(t, cmd.Execute(), "error removing secret: foo")
  73. assert.EqualStringSlice(t, removedSecrets, names)
  74. }