github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/jujuclient/credentialsfile_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package jujuclient_test 5 6 import ( 7 "io/ioutil" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/errors" 13 "github.com/juju/juju/cloud" 14 "github.com/juju/juju/juju/osenv" 15 "github.com/juju/juju/jujuclient" 16 "github.com/juju/juju/testing" 17 ) 18 19 type CredentialsFileSuite struct { 20 testing.FakeJujuXDGDataHomeSuite 21 } 22 23 var _ = gc.Suite(&CredentialsFileSuite{}) 24 25 const testCredentialsYAML = ` 26 credentials: 27 aws: 28 default-credential: peter 29 default-region: us-west-2 30 paul: 31 auth-type: access-key 32 access-key: paul-key 33 secret-key: paul-secret 34 peter: 35 auth-type: access-key 36 access-key: key 37 secret-key: secret 38 aws-gov: 39 fbi: 40 auth-type: access-key 41 access-key: key 42 secret-key: secret 43 ` 44 45 func (s *CredentialsFileSuite) TestWriteFile(c *gc.C) { 46 writeTestCredentialsFile(c) 47 data, err := ioutil.ReadFile(osenv.JujuXDGDataHomePath("credentials.yaml")) 48 c.Assert(err, jc.ErrorIsNil) 49 c.Assert(string(data), gc.Equals, testCredentialsYAML[1:]) 50 } 51 52 func (s *CredentialsFileSuite) TestReadNoFile(c *gc.C) { 53 credentials, err := jujuclient.ReadCredentialsFile("nohere.yaml") 54 c.Assert(err, jc.ErrorIsNil) 55 c.Assert(credentials, gc.IsNil) 56 } 57 58 func (s *CredentialsFileSuite) TestReadEmptyFile(c *gc.C) { 59 err := ioutil.WriteFile(osenv.JujuXDGDataHomePath("credentials.yaml"), []byte(""), 0600) 60 c.Assert(err, jc.ErrorIsNil) 61 62 credentialstore := jujuclient.NewFileCredentialStore() 63 _, err = credentialstore.CredentialForCloud("foo") 64 c.Assert(err, jc.Satisfies, errors.IsNotFound) 65 } 66 67 func parseCredentials(c *gc.C) map[string]cloud.CloudCredential { 68 credentials, err := cloud.ParseCredentials([]byte(testCredentialsYAML)) 69 c.Assert(err, jc.ErrorIsNil) 70 return credentials 71 } 72 73 func writeTestCredentialsFile(c *gc.C) map[string]cloud.CloudCredential { 74 credentials := parseCredentials(c) 75 err := jujuclient.WriteCredentialsFile(credentials) 76 c.Assert(err, jc.ErrorIsNil) 77 return credentials 78 }