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 }