github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/provider/joyent/config_internal_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package joyent 5 6 import ( 7 "os" 8 9 gc "gopkg.in/check.v1" 10 11 coretesting "github.com/juju/juju/testing" 12 ) 13 14 type InternalSuite struct { 15 coretesting.FakeJujuHomeSuite 16 } 17 18 var _ = gc.Suite(&InternalSuite{}) 19 20 func (s *InternalSuite) TestEnsurePrivateKey(c *gc.C) { 21 m := map[string]interface{}{ 22 "private-key": "foo", 23 } 24 25 e := &environConfig{attrs: copymap(m)} 26 27 err := ensurePrivateKeyOrPath(e) 28 c.Assert(err, gc.IsNil) 29 c.Assert(e.attrs, gc.DeepEquals, m) 30 } 31 32 func (s *InternalSuite) TestEnsurePrivateKeyPathSet(c *gc.C) { 33 // if path is set, func should noop 34 m := map[string]interface{}{ 35 "private-key-path": "foo", 36 } 37 38 e := &environConfig{attrs: copymap(m)} 39 40 err := ensurePrivateKeyOrPath(e) 41 c.Assert(err, gc.IsNil) 42 c.Assert(e.attrs, gc.DeepEquals, m) 43 } 44 45 func (s *InternalSuite) TestEnsurePrivateKeyEnvPath(c *gc.C) { 46 // if path is set in env, use it 47 old := os.Getenv("MANTA_PRIVATE_KEY_FILE") 48 err := os.Setenv("MANTA_PRIVATE_KEY_FILE", "foobar") 49 defer os.Setenv("MANTA_PRIVATE_KEY_FILE", old) 50 c.Assert(err, gc.IsNil) 51 52 e := &environConfig{attrs: map[string]interface{}{}} 53 54 err = ensurePrivateKeyOrPath(e) 55 c.Assert(err, gc.IsNil) 56 c.Assert(e.attrs, gc.DeepEquals, map[string]interface{}{ 57 "private-key-path": "foobar", 58 }) 59 } 60 61 func (s *InternalSuite) TestEnsurePrivateKeySet(c *gc.C) { 62 // if key is set, func should noop 63 m := map[string]interface{}{"private-key": "foo"} 64 65 e := &environConfig{attrs: copymap(m)} 66 67 err := ensurePrivateKeyOrPath(e) 68 c.Assert(err, gc.IsNil) 69 c.Assert(e.attrs, gc.DeepEquals, m) 70 } 71 72 func (s *InternalSuite) TestEnsurePrivateKeyMissing(c *gc.C) { 73 e := &environConfig{attrs: map[string]interface{}{}} 74 75 err := ensurePrivateKeyOrPath(e) 76 c.Assert(err, gc.ErrorMatches, "no ssh private key specified in joyent configuration") 77 } 78 79 func copymap(m map[string]interface{}) map[string]interface{} { 80 m1 := make(map[string]interface{}, len(m)) 81 for k, v := range m { 82 m1[k] = v 83 } 84 return m1 85 }