func (c *listCredentialsCommand) removeSecrets(cloudName string, cloudCred *jujucloud.CloudCredential) error { cloud, err := c.cloudByNameFunc(cloudName) if err != nil { return err } provider, err := environs.Provider(cloud.Type) if err != nil { return err } schemas := provider.CredentialSchemas() for name, cred := range cloudCred.AuthCredentials { sanitisedCred, err := jujucloud.RemoveSecrets(cred, schemas) if err != nil { return err } cloudCred.AuthCredentials[name] = *sanitisedCred } return nil }
func (s *credentialsSuite) TestRemoveSecrets(c *gc.C) { cred := cloud.NewCredential( cloud.UserPassAuthType, map[string]string{ "username": "******", "password": "******", }, ) c.Assert(cred.Revoked, jc.IsFalse) schema := cloud.CredentialSchema{{ "username", cloud.CredentialAttr{}, }, { "password", cloud.CredentialAttr{Hidden: true}, }} sanitisedCred, err := cloud.RemoveSecrets(cred, map[cloud.AuthType]cloud.CredentialSchema{ cloud.UserPassAuthType: schema, }) c.Assert(err, jc.ErrorIsNil) c.Assert(sanitisedCred.Attributes(), jc.DeepEquals, map[string]string{ "username": "******", }) }