github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/provider/gce/userdata_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Copyright 2015 Cloudbase Solutions SRL
     3  // Licensed under the AGPLv3, see LICENCE file for details.
     4  
     5  package gce_test
     6  
     7  import (
     8  	"encoding/base64"
     9  
    10  	jc "github.com/juju/testing/checkers"
    11  	"github.com/juju/utils"
    12  	"github.com/juju/utils/os"
    13  	gc "gopkg.in/check.v1"
    14  
    15  	"github.com/juju/juju/cloudconfig/cloudinit/cloudinittest"
    16  	"github.com/juju/juju/cloudconfig/providerinit/renderers"
    17  	"github.com/juju/juju/provider/gce"
    18  	"github.com/juju/juju/testing"
    19  )
    20  
    21  type UserdataSuite struct {
    22  	testing.BaseSuite
    23  }
    24  
    25  var _ = gc.Suite(&UserdataSuite{})
    26  
    27  func (s *UserdataSuite) TestGCEUnix(c *gc.C) {
    28  	renderer := gce.GCERenderer{}
    29  	cloudcfg := &cloudinittest.CloudConfig{YAML: []byte("yaml")}
    30  
    31  	result, err := renderer.Render(cloudcfg, os.Ubuntu)
    32  	c.Assert(err, jc.ErrorIsNil)
    33  	expected := base64.StdEncoding.EncodeToString(utils.Gzip(cloudcfg.YAML))
    34  	c.Assert(string(result), jc.DeepEquals, expected)
    35  
    36  	result, err = renderer.Render(cloudcfg, os.CentOS)
    37  	c.Assert(err, jc.ErrorIsNil)
    38  	expected = base64.StdEncoding.EncodeToString(utils.Gzip(cloudcfg.YAML))
    39  	c.Assert(string(result), jc.DeepEquals, expected)
    40  }
    41  
    42  func (s *UserdataSuite) TestAzureWindows(c *gc.C) {
    43  	renderer := gce.GCERenderer{}
    44  	cloudcfg := &cloudinittest.CloudConfig{YAML: []byte("yaml")}
    45  
    46  	result, err := renderer.Render(cloudcfg, os.Windows)
    47  	c.Assert(err, jc.ErrorIsNil)
    48  	c.Assert(result, jc.DeepEquals, renderers.WinEmbedInScript(cloudcfg.YAML))
    49  }
    50  
    51  func (s *UserdataSuite) TestGCEUnknownOS(c *gc.C) {
    52  	renderer := gce.GCERenderer{}
    53  	cloudcfg := &cloudinittest.CloudConfig{}
    54  
    55  	result, err := renderer.Render(cloudcfg, os.GenericLinux)
    56  	c.Assert(result, gc.IsNil)
    57  	c.Assert(err, gc.ErrorMatches, "Cannot encode userdata for OS: GenericLinux")
    58  }