func (s *updateCredentialSuite) TestUpdate(c *gc.C) { store := &jujuclienttesting.MemStore{ Controllers: map[string]jujuclient.ControllerDetails{ "controller": {}, }, CurrentControllerName: "controller", Accounts: map[string]jujuclient.AccountDetails{ "controller": { User: "******", }, }, Credentials: map[string]jujucloud.CloudCredential{ "aws": { AuthCredentials: map[string]jujucloud.Credential{ "my-credential": jujucloud.NewCredential(jujucloud.AccessKeyAuthType, nil), "another-credential": jujucloud.NewCredential(jujucloud.UserPassAuthType, nil), }, }, }, } fake := &fakeUpdateCredentialAPI{} cmd := cloud.NewUpdateCredentialCommandForTest(store, fake) ctx, err := testing.RunCommand(c, cmd, "aws", "my-credential") c.Assert(err, jc.ErrorIsNil) output := testing.Stderr(ctx) output = strings.Replace(output, "\n", "", -1) c.Assert(output, gc.Equals, `Updated credential "my-credential" for user "admin@local" on cloud "aws".`) c.Assert(fake.creds, jc.DeepEquals, map[names.CloudCredentialTag]jujucloud.Credential{ names.NewCloudCredentialTag("aws/admin@local/my-credential"): jujucloud.NewCredential(jujucloud.AccessKeyAuthType, nil), }) }
func (s *updateCredentialSuite) TestBadArgs(c *gc.C) { store := &jujuclienttesting.MemStore{ Controllers: map[string]jujuclient.ControllerDetails{ "controller": {}, }, CurrentControllerName: "controller", } cmd := cloud.NewUpdateCredentialCommandForTest(store, nil) _, err := testing.RunCommand(c, cmd) c.Assert(err, gc.ErrorMatches, "Usage: juju update-credential <cloud-name> <credential-name>") _, err = testing.RunCommand(c, cmd, "cloud", "credential", "extra") c.Assert(err, gc.ErrorMatches, `unrecognized args: \["extra"\]`) }
func (s *updateCredentialSuite) TestBadCloudName(c *gc.C) { store := &jujuclienttesting.MemStore{ Controllers: map[string]jujuclient.ControllerDetails{ "controller": {}, }, CurrentControllerName: "controller", } cmd := cloud.NewUpdateCredentialCommandForTest(store, nil) ctx, err := testing.RunCommand(c, cmd, "somecloud", "foo") c.Assert(err, jc.ErrorIsNil) output := testing.Stderr(ctx) output = strings.Replace(output, "\n", "", -1) c.Assert(output, gc.Equals, `No credentials exist for cloud "somecloud"`) }
func (s *updateCredentialSuite) TestMissingCredential(c *gc.C) { store := &jujuclienttesting.MemStore{ Controllers: map[string]jujuclient.ControllerDetails{ "controller": {}, }, CurrentControllerName: "controller", Credentials: map[string]jujucloud.CloudCredential{ "aws": { AuthCredentials: map[string]jujucloud.Credential{ "my-credential": jujucloud.NewCredential(jujucloud.AccessKeyAuthType, nil), }, }, }, } cmd := cloud.NewUpdateCredentialCommandForTest(store, nil) ctx, err := testing.RunCommand(c, cmd, "aws", "foo") c.Assert(err, jc.ErrorIsNil) output := testing.Stderr(ctx) output = strings.Replace(output, "\n", "", -1) c.Assert(output, gc.Equals, `No credential called "foo" exists for cloud "aws"`) }