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  }