github.com/rogpeppe/juju@v0.0.0-20140613142852-6337964b789e/provider/common/state_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package common_test 5 6 import ( 7 "errors" 8 9 gc "launchpad.net/gocheck" 10 11 "github.com/juju/juju/environs/config" 12 "github.com/juju/juju/instance" 13 "github.com/juju/juju/network" 14 "github.com/juju/juju/provider/common" 15 "github.com/juju/juju/testing" 16 ) 17 18 type StateSuite struct { 19 testing.BaseSuite 20 } 21 22 var _ = gc.Suite(&StateSuite{}) 23 24 func (suite *StateSuite) TestGetAddressesAcceptsNil(c *gc.C) { 25 result := common.GetAddresses(nil) 26 c.Check(result, gc.DeepEquals, []string{}) 27 } 28 29 func (suite *StateSuite) TestGetAddressesReturnsNames(c *gc.C) { 30 instances := []instance.Instance{ 31 &mockInstance{addresses: network.NewAddresses("foo")}, 32 &mockInstance{addresses: network.NewAddresses("bar")}, 33 } 34 c.Check(common.GetAddresses(instances), gc.DeepEquals, []string{"foo", "bar"}) 35 } 36 37 func (suite *StateSuite) TestGetAddressesIgnoresNils(c *gc.C) { 38 instances := []instance.Instance{ 39 nil, 40 &mockInstance{addresses: network.NewAddresses("foo")}, 41 nil, 42 &mockInstance{addresses: network.NewAddresses("bar")}, 43 nil, 44 } 45 c.Check(common.GetAddresses(instances), gc.DeepEquals, []string{"foo", "bar"}) 46 c.Check(common.GetAddresses(nil), gc.DeepEquals, []string{}) 47 } 48 49 func (suite *StateSuite) TestGetAddressesIgnoresInstancesWithoutAddrs(c *gc.C) { 50 instances := []instance.Instance{&mockInstance{}} 51 c.Check(common.GetAddresses(instances), gc.DeepEquals, []string{}) 52 } 53 54 func (suite *StateSuite) TestGetAddressesIgnoresAddressesErrors(c *gc.C) { 55 instances := []instance.Instance{ 56 &mockInstance{ 57 addresses: network.NewAddresses("one"), 58 addressesErr: errors.New("ignored"), 59 }, 60 &mockInstance{addresses: network.NewAddresses("two", "three")}, 61 } 62 c.Check(common.GetAddresses(instances), gc.DeepEquals, []string{"two", "three"}) 63 } 64 65 func (suite *StateSuite) TestComposeAddressesAcceptsNil(c *gc.C) { 66 c.Check(common.ComposeAddresses(nil, 1433), gc.DeepEquals, []string{}) 67 } 68 69 func (suite *StateSuite) TestComposeAddressesSuffixesAddresses(c *gc.C) { 70 c.Check( 71 common.ComposeAddresses([]string{"onehost", "otherhost"}, 1957), 72 gc.DeepEquals, 73 []string{"onehost:1957", "otherhost:1957"}) 74 } 75 76 func (suite *StateSuite) TestGetStateInfo(c *gc.C) { 77 cert := testing.CACert 78 attrs := testing.FakeConfig().Merge(testing.Attrs{ 79 "ca-cert": cert, 80 "state-port": 123, 81 "api-port": 456, 82 }) 83 cfg, err := config.New(config.NoDefaults, attrs) 84 c.Assert(err, gc.IsNil) 85 hostnames := []string{"onehost", "otherhost"} 86 87 stateInfo, apiInfo := common.GetStateInfo(cfg, hostnames) 88 89 c.Check(stateInfo.Addrs, gc.DeepEquals, []string{"onehost:123", "otherhost:123"}) 90 c.Check(string(stateInfo.CACert), gc.Equals, cert) 91 c.Check(apiInfo.Addrs, gc.DeepEquals, []string{"onehost:456", "otherhost:456"}) 92 c.Check(string(apiInfo.CACert), gc.Equals, cert) 93 }