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