github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/juju/cloud/removecredential_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package cloud_test
     5  
     6  import (
     7  	"strings"
     8  
     9  	"github.com/juju/cmd/cmdtesting"
    10  	jc "github.com/juju/testing/checkers"
    11  	gc "gopkg.in/check.v1"
    12  
    13  	jujucloud "github.com/juju/juju/cloud"
    14  	"github.com/juju/juju/cmd/juju/cloud"
    15  	"github.com/juju/juju/jujuclient"
    16  	"github.com/juju/juju/testing"
    17  )
    18  
    19  type removeCredentialSuite struct {
    20  	testing.BaseSuite
    21  }
    22  
    23  var _ = gc.Suite(&removeCredentialSuite{})
    24  
    25  func (s *removeCredentialSuite) TestBadArgs(c *gc.C) {
    26  	cmd := cloud.NewRemoveCredentialCommand()
    27  	_, err := cmdtesting.RunCommand(c, cmd)
    28  	c.Assert(err, gc.ErrorMatches, "Usage: juju remove-credential <cloud-name> <credential-name>")
    29  	_, err = cmdtesting.RunCommand(c, cmd, "cloud", "credential", "extra")
    30  	c.Assert(err, gc.ErrorMatches, `unrecognized args: \["extra"\]`)
    31  }
    32  
    33  func (s *removeCredentialSuite) TestMissingCredential(c *gc.C) {
    34  	store := &jujuclient.MemStore{
    35  		Credentials: map[string]jujucloud.CloudCredential{
    36  			"aws": {
    37  				AuthCredentials: map[string]jujucloud.Credential{
    38  					"my-credential": jujucloud.NewCredential(jujucloud.AccessKeyAuthType, nil),
    39  				},
    40  			},
    41  		},
    42  	}
    43  	cmd := cloud.NewRemoveCredentialCommandForTest(store)
    44  	ctx, err := cmdtesting.RunCommand(c, cmd, "aws", "foo")
    45  	c.Assert(err, jc.ErrorIsNil)
    46  	output := cmdtesting.Stderr(ctx)
    47  	output = strings.Replace(output, "\n", "", -1)
    48  	c.Assert(output, gc.Equals, `No local credential called "foo" exists for cloud "aws"`)
    49  }
    50  
    51  func (s *removeCredentialSuite) TestBadCloudName(c *gc.C) {
    52  	cmd := cloud.NewRemoveCredentialCommandForTest(jujuclient.NewMemStore())
    53  	ctx, err := cmdtesting.RunCommand(c, cmd, "somecloud", "foo")
    54  	c.Assert(err, jc.ErrorIsNil)
    55  	output := cmdtesting.Stderr(ctx)
    56  	output = strings.Replace(output, "\n", "", -1)
    57  	c.Assert(output, gc.Equals, `No locally stored credentials exist for cloud "somecloud"`)
    58  }
    59  
    60  func (s *removeCredentialSuite) TestRemove(c *gc.C) {
    61  	store := &jujuclient.MemStore{
    62  		Credentials: map[string]jujucloud.CloudCredential{
    63  			"aws": {
    64  				AuthCredentials: map[string]jujucloud.Credential{
    65  					"my-credential":      jujucloud.NewCredential(jujucloud.AccessKeyAuthType, nil),
    66  					"another-credential": jujucloud.NewCredential(jujucloud.AccessKeyAuthType, nil),
    67  				},
    68  			},
    69  		},
    70  	}
    71  	cmd := cloud.NewRemoveCredentialCommandForTest(store)
    72  	ctx, err := cmdtesting.RunCommand(c, cmd, "aws", "my-credential")
    73  	c.Assert(err, jc.ErrorIsNil)
    74  	output := cmdtesting.Stderr(ctx)
    75  	output = strings.Replace(output, "\n", "", -1)
    76  	c.Assert(output, gc.Equals, `Local credential "my-credential" for cloud "aws" has been deleted.`)
    77  	_, stillThere := store.Credentials["aws"].AuthCredentials["my-credential"]
    78  	c.Assert(stillThere, jc.IsFalse)
    79  	c.Assert(store.Credentials["aws"].AuthCredentials, gc.HasLen, 1)
    80  }