github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/juju/cloud/defaultcredential_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 "fmt" 8 "strings" 9 10 "github.com/juju/cmd/cmdtesting" 11 jc "github.com/juju/testing/checkers" 12 gc "gopkg.in/check.v1" 13 14 jujucloud "github.com/juju/juju/cloud" 15 "github.com/juju/juju/cmd/juju/cloud" 16 "github.com/juju/juju/jujuclient" 17 "github.com/juju/juju/testing" 18 ) 19 20 type defaultCredentialSuite struct { 21 testing.FakeJujuXDGDataHomeSuite 22 } 23 24 var _ = gc.Suite(&defaultCredentialSuite{}) 25 26 func (s *defaultCredentialSuite) TestBadArgs(c *gc.C) { 27 cmd := cloud.NewSetDefaultCredentialCommand() 28 _, err := cmdtesting.RunCommand(c, cmd) 29 c.Assert(err, gc.ErrorMatches, "Usage: juju set-default-credential <cloud-name> <credential-name>") 30 _, err = cmdtesting.RunCommand(c, cmd, "cloud", "credential", "extra") 31 c.Assert(err, gc.ErrorMatches, `unrecognized args: \["extra"\]`) 32 } 33 34 func (s *defaultCredentialSuite) TestBadCredential(c *gc.C) { 35 cmd := cloud.NewSetDefaultCredentialCommand() 36 _, err := cmdtesting.RunCommand(c, cmd, "aws", "foo") 37 c.Assert(err, gc.ErrorMatches, `credential "foo" for cloud aws not valid`) 38 } 39 40 func (s *defaultCredentialSuite) TestBadCloudName(c *gc.C) { 41 cmd := cloud.NewSetDefaultCredentialCommand() 42 _, err := cmdtesting.RunCommand(c, cmd, "somecloud", "us-west-1") 43 c.Assert(err, gc.ErrorMatches, `cloud somecloud not valid`) 44 } 45 46 func (s *defaultCredentialSuite) assertSetDefaultCredential(c *gc.C, cloudName string) { 47 store := jujuclient.NewMemStore() 48 store.Credentials[cloudName] = jujucloud.CloudCredential{ 49 AuthCredentials: map[string]jujucloud.Credential{ 50 "my-sekrets": {}, 51 }, 52 } 53 cmd := cloud.NewSetDefaultCredentialCommandForTest(store) 54 ctx, err := cmdtesting.RunCommand(c, cmd, cloudName, "my-sekrets") 55 c.Assert(err, jc.ErrorIsNil) 56 output := cmdtesting.Stderr(ctx) 57 output = strings.Replace(output, "\n", "", -1) 58 c.Assert(output, gc.Equals, fmt.Sprintf(`Local credential "my-sekrets" is set to be default for %q for this client.`, cloudName)) 59 c.Assert(store.Credentials[cloudName].DefaultCredential, gc.Equals, "my-sekrets") 60 } 61 62 func (s *defaultCredentialSuite) TestSetDefaultCredential(c *gc.C) { 63 s.assertSetDefaultCredential(c, "aws") 64 } 65 66 func (s *defaultCredentialSuite) TestSetDefaultCredentialBuiltIn(c *gc.C) { 67 s.assertSetDefaultCredential(c, "localhost") 68 }