github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/provider/gce/environ_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package gce_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"github.com/juju/juju/cloudconfig/instancecfg"
    11  	"github.com/juju/juju/environs"
    12  	envtesting "github.com/juju/juju/environs/testing"
    13  	"github.com/juju/juju/provider/gce"
    14  )
    15  
    16  type environSuite struct {
    17  	gce.BaseSuite
    18  }
    19  
    20  var _ = gc.Suite(&environSuite{})
    21  
    22  func (s *environSuite) TestName(c *gc.C) {
    23  	name := s.Env.Name()
    24  
    25  	c.Check(name, gc.Equals, "google")
    26  }
    27  
    28  func (s *environSuite) TestProvider(c *gc.C) {
    29  	provider := s.Env.Provider()
    30  
    31  	c.Check(provider, gc.Equals, gce.Provider)
    32  }
    33  
    34  func (s *environSuite) TestRegion(c *gc.C) {
    35  	cloudSpec, err := s.Env.Region()
    36  	c.Assert(err, jc.ErrorIsNil)
    37  
    38  	c.Check(cloudSpec.Region, gc.Equals, "home")
    39  	c.Check(cloudSpec.Endpoint, gc.Equals, "https://www.googleapis.com")
    40  }
    41  
    42  func (s *environSuite) TestSetConfig(c *gc.C) {
    43  	err := s.Env.SetConfig(s.Config)
    44  	c.Assert(err, jc.ErrorIsNil)
    45  
    46  	c.Check(gce.ExposeEnvConfig(s.Env), jc.DeepEquals, s.EnvConfig)
    47  	c.Check(gce.ExposeEnvConnection(s.Env), gc.Equals, s.FakeConn)
    48  }
    49  
    50  func (s *environSuite) TestSetConfigFake(c *gc.C) {
    51  	err := s.Env.SetConfig(s.Config)
    52  	c.Assert(err, jc.ErrorIsNil)
    53  
    54  	c.Check(s.FakeConn.Calls, gc.HasLen, 0)
    55  }
    56  
    57  func (s *environSuite) TestSetConfigMissing(c *gc.C) {
    58  	gce.UnsetEnvConfig(s.Env)
    59  
    60  	err := s.Env.SetConfig(s.Config)
    61  
    62  	c.Check(err, gc.ErrorMatches, "cannot set config on uninitialized env")
    63  }
    64  
    65  func (s *environSuite) TestConfig(c *gc.C) {
    66  	cfg := s.Env.Config()
    67  
    68  	c.Check(cfg, jc.DeepEquals, s.Config)
    69  }
    70  
    71  func (s *environSuite) TestBootstrap(c *gc.C) {
    72  	s.FakeCommon.Arch = "amd64"
    73  	s.FakeCommon.Series = "trusty"
    74  	finalizer := func(environs.BootstrapContext, *instancecfg.InstanceConfig) error {
    75  		return nil
    76  	}
    77  	s.FakeCommon.BSFinalizer = finalizer
    78  
    79  	ctx := envtesting.BootstrapContext(c)
    80  	params := environs.BootstrapParams{}
    81  	result, err := s.Env.Bootstrap(ctx, params)
    82  	c.Assert(err, jc.ErrorIsNil)
    83  
    84  	c.Check(result.Arch, gc.Equals, "amd64")
    85  	c.Check(result.Series, gc.Equals, "trusty")
    86  	// We don't check bsFinalizer because functions cannot be compared.
    87  	c.Check(result.Finalize, gc.NotNil)
    88  }
    89  
    90  func (s *environSuite) TestBootstrapCommon(c *gc.C) {
    91  	ctx := envtesting.BootstrapContext(c)
    92  	params := environs.BootstrapParams{}
    93  	_, err := s.Env.Bootstrap(ctx, params)
    94  	c.Assert(err, jc.ErrorIsNil)
    95  
    96  	s.FakeCommon.CheckCalls(c, []gce.FakeCall{{
    97  		FuncName: "Bootstrap",
    98  		Args: gce.FakeCallArgs{
    99  			"ctx":    ctx,
   100  			"switch": s.Env,
   101  			"params": params,
   102  		},
   103  	}})
   104  }
   105  
   106  func (s *environSuite) TestDestroy(c *gc.C) {
   107  	err := s.Env.Destroy()
   108  
   109  	c.Check(err, jc.ErrorIsNil)
   110  }
   111  
   112  func (s *environSuite) TestDestroyAPI(c *gc.C) {
   113  	err := s.Env.Destroy()
   114  	c.Assert(err, jc.ErrorIsNil)
   115  
   116  	c.Check(s.FakeConn.Calls, gc.HasLen, 1)
   117  	c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "Ports")
   118  	fwname := s.Prefix[:len(s.Prefix)-1]
   119  	c.Check(s.FakeConn.Calls[0].FirewallName, gc.Equals, fwname)
   120  	s.FakeCommon.CheckCalls(c, []gce.FakeCall{{
   121  		FuncName: "Destroy",
   122  		Args: gce.FakeCallArgs{
   123  			"switch": s.Env,
   124  		},
   125  	}})
   126  }