github.com/justincormack/cli@v0.0.0-20201215022714-831ebeae9675/cli/command/secret/remove_test.go (about)

     1  package secret
     2  
     3  import (
     4  	"io/ioutil"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/docker/cli/internal/test"
     9  	"github.com/pkg/errors"
    10  	"gotest.tools/v3/assert"
    11  	is "gotest.tools/v3/assert/cmp"
    12  )
    13  
    14  func TestSecretRemoveErrors(t *testing.T) {
    15  	testCases := []struct {
    16  		args             []string
    17  		secretRemoveFunc func(string) error
    18  		expectedError    string
    19  	}{
    20  		{
    21  			args:          []string{},
    22  			expectedError: "requires at least 1 argument.",
    23  		},
    24  		{
    25  			args: []string{"foo"},
    26  			secretRemoveFunc: func(name string) error {
    27  				return errors.Errorf("error removing secret")
    28  			},
    29  			expectedError: "error removing secret",
    30  		},
    31  	}
    32  	for _, tc := range testCases {
    33  		cmd := newSecretRemoveCommand(
    34  			test.NewFakeCli(&fakeClient{
    35  				secretRemoveFunc: tc.secretRemoveFunc,
    36  			}),
    37  		)
    38  		cmd.SetArgs(tc.args)
    39  		cmd.SetOut(ioutil.Discard)
    40  		assert.ErrorContains(t, cmd.Execute(), tc.expectedError)
    41  	}
    42  }
    43  
    44  func TestSecretRemoveWithName(t *testing.T) {
    45  	names := []string{"foo", "bar"}
    46  	var removedSecrets []string
    47  	cli := test.NewFakeCli(&fakeClient{
    48  		secretRemoveFunc: func(name string) error {
    49  			removedSecrets = append(removedSecrets, name)
    50  			return nil
    51  		},
    52  	})
    53  	cmd := newSecretRemoveCommand(cli)
    54  	cmd.SetArgs(names)
    55  	assert.NilError(t, cmd.Execute())
    56  	assert.Check(t, is.DeepEqual(names, strings.Split(strings.TrimSpace(cli.OutBuffer().String()), "\n")))
    57  	assert.Check(t, is.DeepEqual(names, removedSecrets))
    58  }
    59  
    60  func TestSecretRemoveContinueAfterError(t *testing.T) {
    61  	names := []string{"foo", "bar"}
    62  	var removedSecrets []string
    63  
    64  	cli := test.NewFakeCli(&fakeClient{
    65  		secretRemoveFunc: func(name string) error {
    66  			removedSecrets = append(removedSecrets, name)
    67  			if name == "foo" {
    68  				return errors.Errorf("error removing secret: %s", name)
    69  			}
    70  			return nil
    71  		},
    72  	})
    73  
    74  	cmd := newSecretRemoveCommand(cli)
    75  	cmd.SetOut(ioutil.Discard)
    76  	cmd.SetArgs(names)
    77  	assert.Error(t, cmd.Execute(), "error removing secret: foo")
    78  	assert.Check(t, is.DeepEqual(names, removedSecrets))
    79  }