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  }