44
44
return nil, errors.NotFoundf("cloud %v", cloud)
46
46
return &jujucloud.Cloud{
47
Type: "mock-addcredential-provider",
48
AuthTypes: s.authTypes,
47
Type: "mock-addcredential-provider",
48
AuthTypes: s.authTypes,
49
Endpoint: "cloud-endpoint",
50
IdentityEndpoint: "cloud-identity-endpoint",
207
209
s.assertAddUserpassCredential(c, "fred\nuserpass\nuser\npassword\n", nil)
212
func (s *addCredentialSuite) TestAddCredentialInteractive(c *gc.C) {
213
s.authTypes = []jujucloud.AuthType{"interactive"}
214
s.schema = map[jujucloud.AuthType]jujucloud.CredentialSchema{
215
"interactive": {{"username", jujucloud.CredentialAttr{}}},
218
stdin := strings.NewReader("bobscreds\nbob\n")
219
ctx, err := s.run(c, stdin, "somecloud")
220
c.Assert(err, jc.ErrorIsNil)
222
c.Assert(testing.Stderr(ctx), gc.Equals, `
223
Enter credential name: Using auth-type "interactive".
224
Enter username: generating userpass credential
227
// FinalizeCredential should have generated a userpass credential
228
// based on the input from the interactive credential.
229
c.Assert(s.store.Credentials, jc.DeepEquals, map[string]jujucloud.CloudCredential{
231
AuthCredentials: map[string]jujucloud.Credential{
232
"bobscreds": jujucloud.NewCredential(jujucloud.UserPassAuthType, map[string]string{
234
"password": "cloud-endpoint",
235
"application-password": "cloud-identity-endpoint",
210
242
func (s *addCredentialSuite) TestAddCredentialReplace(c *gc.C) {
211
243
s.store.Credentials = map[string]jujucloud.CloudCredential{