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 }