launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/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  	gc "launchpad.net/gocheck"
     8  
     9  	"launchpad.net/juju-core/environs/config"
    10  	"launchpad.net/juju-core/instance"
    11  	"launchpad.net/juju-core/provider/common"
    12  	"launchpad.net/juju-core/testing"
    13  	"launchpad.net/juju-core/testing/testbase"
    14  )
    15  
    16  type StateSuite struct {
    17  	testbase.LoggingSuite
    18  }
    19  
    20  var _ = gc.Suite(&StateSuite{})
    21  
    22  func (suite *StateSuite) TestGetDNSNamesAcceptsNil(c *gc.C) {
    23  	result := common.GetDNSNames(nil)
    24  	c.Check(result, gc.DeepEquals, []string{})
    25  }
    26  
    27  func (suite *StateSuite) TestGetDNSNamesReturnsNames(c *gc.C) {
    28  	instances := []instance.Instance{
    29  		&dnsNameFakeInstance{name: "foo"},
    30  		&dnsNameFakeInstance{name: "bar"},
    31  	}
    32  
    33  	c.Check(common.GetDNSNames(instances), gc.DeepEquals, []string{"foo", "bar"})
    34  }
    35  
    36  func (suite *StateSuite) TestGetDNSNamesIgnoresNils(c *gc.C) {
    37  	c.Check(common.GetDNSNames([]instance.Instance{nil, nil}), gc.DeepEquals, []string{})
    38  }
    39  
    40  func (suite *StateSuite) TestGetDNSNamesIgnoresInstancesWithoutNames(c *gc.C) {
    41  	instances := []instance.Instance{&dnsNameFakeInstance{err: instance.ErrNoDNSName}}
    42  	c.Check(common.GetDNSNames(instances), gc.DeepEquals, []string{})
    43  }
    44  
    45  func (suite *StateSuite) TestGetDNSNamesIgnoresInstancesWithBlankNames(c *gc.C) {
    46  	instances := []instance.Instance{&dnsNameFakeInstance{name: ""}}
    47  	c.Check(common.GetDNSNames(instances), gc.DeepEquals, []string{})
    48  }
    49  
    50  func (suite *StateSuite) TestComposeAddressesAcceptsNil(c *gc.C) {
    51  	c.Check(common.ComposeAddresses(nil, 1433), gc.DeepEquals, []string{})
    52  }
    53  
    54  func (suite *StateSuite) TestComposeAddressesSuffixesAddresses(c *gc.C) {
    55  	c.Check(
    56  		common.ComposeAddresses([]string{"onehost", "otherhost"}, 1957),
    57  		gc.DeepEquals,
    58  		[]string{"onehost:1957", "otherhost:1957"})
    59  }
    60  
    61  func (suite *StateSuite) TestGetStateInfo(c *gc.C) {
    62  	cert := testing.CACert
    63  	attrs := testing.FakeConfig().Merge(testing.Attrs{
    64  		"ca-cert":    cert,
    65  		"state-port": 123,
    66  		"api-port":   456,
    67  	})
    68  	cfg, err := config.New(config.NoDefaults, attrs)
    69  	c.Assert(err, gc.IsNil)
    70  	hostnames := []string{"onehost", "otherhost"}
    71  
    72  	stateInfo, apiInfo := common.GetStateInfo(cfg, hostnames)
    73  
    74  	c.Check(stateInfo.Addrs, gc.DeepEquals, []string{"onehost:123", "otherhost:123"})
    75  	c.Check(string(stateInfo.CACert), gc.Equals, cert)
    76  	c.Check(apiInfo.Addrs, gc.DeepEquals, []string{"onehost:456", "otherhost:456"})
    77  	c.Check(string(apiInfo.CACert), gc.Equals, cert)
    78  }